%in Harare+277-882-255-28 abortion pills for sale in Harare
Enabling Cloud Native Buildpacks for Windows Containers
1. Daniella Corricelli, VMware Product Manager
Andrew Meyer, VMware Software Engineer
Malini Valliath, VMware Software Engineer
Micah Young, VMware Software Engineer
Enabling Cloud Native
Buildpacks for Windows
Containers
2. Agenda
❏ Containerizing Windows apps today
❏ Cloud Native Buildpacks overview
❏ The future of Cloud Native Buildpacks + Windows
❏ Live demo with a .NET Framework app
❏ Q+A
3. • Complex monolithic systems built
over many years as a web of
interdependent parts
• WCF, ASP.NET, some .NET Core
• Data centers and processes holding
your developers back from
productivity and focus on business
value feature development
What you see
4. You’re seeing your Linux friends pushing to Kubernetes….
Windows containers today
5. Creating Docker images
● Dockerfiles are the most common way of
creating Docker Images
● Their flexibility is their power
➢ Run any command, mutate any file
● Their flexibility is their weakness
➢ Keeping consistent, ensuring security
● Takes a lot of effort to write "good"
Dockerfiles
7. I want to use Windows containers, what other choice do I
have?
● I want to …
○ package my .NET Framework apps
with their dependencies.
○ leverage operating system-level -
virtualization to provide fast, fully
isolated environments on a single
system.
● I don’t want to …
○ invest in rewriting too many of my
.NET Framework apps to .NET
Core.
11. What is a Cloud Native Buildpack?
A pluggable, modular tool that translates source code into OCI images.
● Portability via the OCI standard
● Greater modularity
● Faster builds
● Reproducible image builds
● Unprivileged containers
● Widely adopted standard
12. Why you should use Cloud Native Buildpacks for your
.NET Framework apps
Reusable
use the same
buildpack on
many apps
Fast
only re-build and
upload layers
when necessary
Modular
combine
buildpacks to
create composite
images
Safe
meet security
requirements
without developer
intervention
14. Anatomy of a Buildpack
detect
● Runs against source to determine buildpack applicability
● Examples:
○ A Java CNB might look for .java files or a .jar
○ An NPM CNB might look for package.json
○ A .NET CNB might look for a .csproj file
build
● Downloads build-time and run-time dependencies
● Compiles source
● Sets launch command
16. Lifecycle: Detect
detect
build NPM CNBNode CNB
Yarn CNBNode CNBsrc/
package.json
yarn.lock
...
● Tests groups of buildpacks against source, in order
(via each buildpack’s detect binary)
● First group that passes is selected
NPM CNBNode CNB
Yarn CNBNode CNBsrc/
package.json
...
17. Lifecycle: Build
● For previously-selected group, executes each
buildpack’s build binary, in order
● Buildpack’s build gathers dependencies, compiles
app, and sets launch command
● Buildpack contributions take the form of image layers
</>
YarnCNBbuild
NodeCNBbuild
detect
build
18. Stacks and Builders
Stack: Two images that provide...
● Build-time OS/environment
● Run-time OS/environment
build image
run image
stack
Builder: Complete context for building
● Contains buildpack binaries
● Contains lifecycle binaries
● Based on build image from stack
build image
lifecycle
buildpack C
buildpack B
buildpack A
19. </>
app source
run image
...
dependencies
app
app image
platform
Platform’s job:
1. Start a container from builder image
2. Mount app source code
3. Execute lifecycle & buildpacks
builder image
build image
buildpack A
buildpack C
buildpack B
lifecycle
stack
build image run image
The Big Picture
20. ● Updates app image’s stack (i.e. run image)
without a rebuild
run image
...
dependencies
app
run image
...
dependencies
app
Rebasing
run image
old
run image
new
● Remote registry layer manipulation enables
update without downloading/uploading app
image (rebase happens in less than a second!)
● ABI guarantee: app behavior is preserved
22. stack
build image run image
</>
app source
run image
...
dependencies
app
app image
platform
builder image
build image
buildpack A
buildpack C
buildpack B
lifecycle
Windows Stack Support
23. Building Windows Images
Required widespread changes in CNB ecosystem
● pack CLI
○ Builder image creation
○ Performing app image builds
● Lifecycle
○ Originally written for Linux only
○ Buildpack execution
○ Launch command for app image
○ Layer-writing mechanisms
24. Challenges
Layers look different for Windows images
● In general, layers are TAR files
● Layers for Windows images require specially-formatted TARs
● Abstracted layer-writing mechanisms in CNB lifecycle
○ Linux-based image implementation
○ Windows-based image implementation
● Touches every area of CNB ecosystem
25. Challenges (cont’d)
Quirks with Docker + Windows
● Docker Desktop for Windows is less optimized than Linux
○ Slower build times, volume permissions
● Smaller developer ecosystem
● Less flexible base images
○ Closed source
○ Distributed as foreign layers from mcr.microsoft.com
○ Must match host’s OS version: nanoserver:1809 → Windows Server 1809
27. Tanzu Build Service + Windows
Enterprise support for an
automated CNB workflow
28. Tanzu Build Service
</>
app source
run image
...
dependencies
app
app image
TBS
builder image
build image
buildpack A
buildpack C
buildpack B
lifecycle
29. Tanzu Build Service
</>
app source
run image
...
dependencies
app
app image
TBS
builder image
build image
buildpack A
buildpack C
buildpack B
lifecycle
● Can monitor source code repo to
trigger new image builds
● Supports triggers from CI pipelines
(most common use case)
30. Tanzu Build Service
</>
app source
run image
...
dependencies
app
app image
TBS
builder image
build image
buildpack A
buildpack C
buildpack B
lifecycle
● Monitors builder for
buildpack updates
● Triggers rebuilds if
necessary
31. Tanzu Build Service
</>
app source
run image
...
dependencies
app
app image
TBS
builder image
build image
buildpack A
buildpack C
buildpack B
lifecycle
● Monitors any updates to
stack
● Automatically performs
a rebase and pushes
new image to registry
32.
33. Tanzu Build Service + Windows
● Beta version of Windows support in Tanzu Build Service slated to
release later this fall
● Evaluation version of our Windows stack and Tanzu .NET
Framework Buildpack on TanzuNet