Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Containerized lifecycle/consolidated updates #19798

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
b3d6542
Add cover page
mvelosop Apr 15, 2020
d91417b
Update images to VS 2019
mvelosop Apr 20, 2020
22cc69a
General update of the VS Code-related docker workflow
mvelosop Apr 21, 2020
acd9d32
Update and fix extension case
mvelosop Apr 21, 2020
89edb1d
Update process and images
mvelosop Apr 22, 2020
c68ef53
Update aks creation parameters for sample/dev app
mvelosop Apr 23, 2020
6470fea
General update of the article
mvelosop Apr 23, 2020
7eecf51
Delete moved image
mvelosop Apr 23, 2020
7b61b17
Fix markdownlint error - Image alt text
mvelosop Apr 23, 2020
8069249
Update to restart pipeline b/c of error 500
mvelosop Apr 23, 2020
0e6284a
Including changes from PR #17865 and #17879
mvelosop May 13, 2020
d375bb2
containerized-lifecycle-3.1/3.1-index
mvelosop May 13, 2020
bffc794
MIssing hypen fixes on the cover page.
sughosneo Jul 30, 2020
6ee3c9d
Merge branch 'pr17863' into containerized-lifecycle/consolidated-updates
sughosneo Jul 30, 2020
9148e28
Merge branch 'pr17957' into containerized-lifecycle/consolidated-updates
sughosneo Jul 30, 2020
48145a5
Merge branch 'pr17991' into containerized-lifecycle/consolidated-updates
sughosneo Jul 30, 2020
dd66114
Merge branch 'pr18004' into containerized-lifecycle/consolidated-updates
sughosneo Jul 30, 2020
8048cf8
Merging all existing prs
sughosneo Jul 30, 2020
636b992
Merge branch 'pr18411' into containerized-lifecycle/consolidated-updates
sughosneo Jul 30, 2020
eee8aa3
Consolidated updates on containerized-lifecycle e-book files.
sughosneo Jul 30, 2020
2284b98
Fixed broken link of container entry point.
sughosneo Jul 30, 2020
5efd224
Removed net core 2.2 reference
sughosneo Jul 30, 2020
12ae08c
Removed inconsistent spaces in between lines.
sughosneo Aug 3, 2020
1c5caa8
Fixed broken previous & next link.
sughosneo Aug 4, 2020
507566e
Changed cover page image.
sughosneo Aug 4, 2020
ed8becb
Fixed wrong image number under section - 4
sughosneo Aug 5, 2020
97dacb8
Update docs/architecture/containerized-lifecycle/Microsoft-platform-t…
sughosneo Aug 5, 2020
55d71a1
Update docs/architecture/containerized-lifecycle/Microsoft-platform-t…
sughosneo Aug 5, 2020
bf4eac8
Update docs/architecture/containerized-lifecycle/design-develop-conta…
sughosneo Aug 5, 2020
189209c
Update docs/architecture/containerized-lifecycle/design-develop-conta…
sughosneo Aug 5, 2020
bd998a5
Included reviewer and participant name.
sughosneo Aug 5, 2020
a685ddb
Updated ms.date in all pages.
sughosneo Aug 5, 2020
a4812ba
Updated Azure CLI installation section for AKS
sughosneo Aug 5, 2020
fa06415
Changed conversation context to second person.
sughosneo Aug 6, 2020
f392a56
Removed Preview information
sughosneo Aug 6, 2020
fb1ad91
Missing hypen related fixes.
sughosneo Aug 6, 2020
0010b53
Removed Trailing Spaces
sughosneo Aug 6, 2020
31b45d8
Removed en-us from the link.
sughosneo Aug 6, 2020
fa551ca
Fixed broken link and rephrased sentence.
sughosneo Aug 6, 2020
1cc8c04
Fixed Docker Desktop broken link.
sughosneo Aug 6, 2020
2d3ed32
Fixed broken link.
sughosneo Aug 6, 2020
05c4ce4
Rephrased AKS interaction segment.
sughosneo Aug 6, 2020
f08b8d1
Rephrased sentence
sughosneo Aug 6, 2020
bfa1ce0
Update docs/architecture/containerized-lifecycle/design-develop-conta…
nishanil Aug 6, 2020
4b5dbb3
Update docs/architecture/containerized-lifecycle/design-develop-conta…
nishanil Aug 6, 2020
a782a8a
Included review comments.
sughosneo Aug 6, 2020
2521c7e
Updated table.
sughosneo Aug 6, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Containers as the foundation for DevOps collaboration
description: Understand the key role of containers to streamline DevOps.
ms.date: 04/16/2020
ms.date: 08/06/2020
---
# Containers as the foundation for DevOps collaboration

Expand All @@ -21,27 +21,27 @@ In the pillar on the right, operations teams manage deployed applications and in

The two teams are collaborating through a foundational platform (Docker containers) that provides a separation of concerns as a contract, while greatly improving the two teams' collaboration in the application life cycle. The developers own the container contents, its operating environment, and the container interdependencies, whereas the operations teams take the built images along with the manifest and runs them in their orchestration system.

## Challenges in application life cycle when using Docker.
## Challenges in the application life cycle when using Docker.

There are many reasons that will increase the number of containerized applications in the upcoming years, and one of these reasons is the creation of applications based on microservices.

During the last 15 years, the use of web services has been the base of thousands of applications, and probably, after a few years, we'll find the same situation with microservice-based applications running on Docker containers.
During the last 15 years, the use of web services has been the base of thousands of applications, and probably, after a few years, you'll find the same situation with microservice-based applications running on Docker containers.

It is also worth to mention that you can also use Docker containers for monolithic applications and you still get most of the benefits of Docker. Containers are not targeting only microservices.

The use of Docker containerization and microservices causes new challenges in the development process of your organizations and therefore, you need a solid strategy to maintain many containers and microservices running on production systems. Eventually, enterprise applications will have hundreds or thousands of containers/instances running in production.

These challenges create new demands when using DevOps tools, so you'll have to define new processes in your DevOps activities, and find answers for this type of questions:
These challenges create new demands when using DevOps tools, so you'll have to define new processes in your DevOps activities, and find answers for the following type of questions:

- Which tools can I use for development, for CI/CD, management and operations?
- Which tools can I use for development, CI/CD, management and operations??

- How can my company manage errors in containers when running in production?

- How can we change pieces of our software in production with minimum downtime?

- How can we scale and how can we monitor our production system?
- How can we scale and monitor our production system?

- How can we include testing and deployment of containers in our release pipeline?
- How can we include the testing and deployment of containers in our release pipeline?

- How can we use Open Source tools/platforms for containers in Microsoft Azure?

Expand All @@ -57,9 +57,9 @@ Figure 2-2 presents a more detailed workflow for a Docker application life cycle

Everything begins with the developer, who starts writing code in the inner-loop workflow. The inner-loop stage is where developers define everything that happens before pushing code into the code repository (for example, a source control system such as Git). After it's committed, the repository triggers Continuous Integration (CI) and the rest of the workflow.

The inner loop basically consists of typical steps like "code," "run," "test," and "debug," plus the additional steps needed right before running the app locally. This is the developer's process to run and test the app as a Docker container. The inner-loop workflow will be explained in the sections that follow.
The inner loop consists of typical steps like "code," "run," "test," and "debug," plus the additional steps needed right before running the app locally. This is the developer's process to run and test the app as a Docker container. The inner-loop workflow will be explained in the sections that follow.

Taking a step back to look at the end-to end workflow, the DevOps workflow is more than a technology or a tool set: it's a mindset that requires cultural evolution. It's people, processes, and the appropriate tools to make your application life cycle faster and more predictable. Enterprises that adopt a containerized workflow typically restructure their organizations to represent people and processes that match the containerized workflow.
Taking a step back to look at the end-to-end workflow, the DevOps workflow is more than a technology or a tool set, it's a mindset that requires cultural evolution. It's people, processes, and the appropriate tools to make your application life cycle faster and more predictable. Enterprises that adopt a containerized workflow typically restructure their organizations to represent people and processes that match the containerized workflow.

Practicing DevOps can help teams respond faster together to competitive pressures by replacing error-prone manual processes with automation, which results in improved traceability and repeatable workflows. Organizations also can manage environments more efficiently and realize cost savings with a combination of on-premises and cloud resources as well as tightly integrated tooling.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Introduction to the Docker application life cycle
description: Begin here the journey of containerized application development.
ms.date: 11/23/2018
ms.date: 08/06/2020
---
# Introduction to the Docker application life cycle

Expand Down
Original file line number Diff line number Diff line change
@@ -1,45 +1,43 @@
---
title: Introduction to the Microsoft platform and tools for containerized apps
description: Get to know Microsoft's offerings to support Docker applications lifecycle.
ms.date: 02/15/2019
ms.date: 08/06/2020
---
# Introduction to the Microsoft platform and tools for containerized apps

*Vision: Create an adaptable, enterprise-grade, containerized application life cycle that spans your development, IT operations, and production management.*

Figure 3-1 shows the main pillars in the life cycle of Docker apps classified by the type of work delivered by multiple teams (app-development, DevOps infrastructure processes, and IT management and operations). Usually, in the enterprise, the profiles of "the persona" responsible for each area are different. So are their skills.

:::image type="complex" source="./media/index/microsoft-tools-contanerized-docker-app.png" alt-text="Diagram showing the Microsoft tools needed to maintain Docker apps.":::
Microsoft tools. For the Develop/Design workload: Docker engine for Windows, Visual Studio and Visual Studio Code, .NET Core, Azure Kubernetes Service. For the Build/Test/Ship workload: Azure DevOps, Team Foundation Server, Docker CLI, Azure Kubernetes Service. For the Run/Monitor/Manage workload: Azure Monitor, Azure portal, Azure Kubernetes Services, Service Fabric, other orchestrators.
:::image-end:::
![Add new project window in Visual Studio, selecting ASP.NET Core Web Application.](media/index/microsoft-tools-contanerized-docker-app.png)

**Figure 3-1.** Main pillars in the life cycle for containerized Docker applications with Microsoft platform and tools

A containerized Docker life-cycle workflow can be initially prescriptive based on "by-default product choices," making it easier for developers to get started faster, but it's fundamental that under the hood there must be an open framework so that it will be a flexible workflow capable of adjusting to the different contexts from each organization or enterprise. The workflow infrastructure (components and products) must be flexible enough to cover the environment that each company will have in the future, even being capable of swapping development or DevOps products to others. This flexibility, openness, and broad choice of technologies in the platform and infrastructure are precisely the Microsoft priorities for containerized Docker applications, as explained in the chapters that follow.
A containerized Docker life-cycle workflow can be initially prescriptive based on "by-default product choices," making it easier for developers to get started faster, but it's fundamental that under the hood there must be an open framework so that it will be a flexible workflow capable of adjusting to the different contexts from each organization or enterprise. The workflow infrastructure (components and products) must be flexible enough to cover the environment that each company will have in the future, even being capable of swapping development or DevOps products to others. This flexibility, openness, and the broad choice of technologies in the platform and infrastructure are precisely the Microsoft priorities for containerized Docker applications, as explained in the chapters that follow.

Table 3-1 demonstrates that the intention of the Microsoft DevOps for containerized Docker applications is to provide an open DevOps workflow so that you can choose what products to use for each phase (Microsoft or third party) while providing a simplified workflow that provides "by-default-products" already connected; thus, you can quickly get started with your enterprise-level DevOps workflow for Docker apps.
Table 3-1 demonstrates that the intention of the Azure DevOps for containerized Docker applications is to provide an open DevOps workflow so that you can choose what products to use for each phase (Microsoft or third-party) while providing a simplified workflow that provides "by-default-products" already connected; thus, you can quickly get started with your enterprise-level DevOps workflow for Docker apps.
sughosneo marked this conversation as resolved.
Show resolved Hide resolved

**Table 3-1.** DevOps workflows, open to any technology
**Table 3-1.** Azure DevOps workflows, open to any technology

| Host | Microsoft technologies | Third-partyAzure pluggable |
| Host | Microsoft technologies | Third-party (Azure pluggable) |
| ---------------------------| ----------------------------------------------------| --------------------------------------------------------------------------------|
| Platform for Docker apps | • Microsoft Visual Studio and Visual Studio Code<br /> • .NET<br /> • Microsoft Azure Kubernetes Service (AKS)<br /> • Azure Service Fabric<br /> • Azure Container Registry<br /> | • Any code editor (for example, Sublime)<br /> • Any language (Node.js, Java, Go, etc.)<br /> • Any orchestrator and scheduler<br /> • Any Docker registry<br /> |
| DevOps for Docker apps | • Azure DevOps Services<br /> • Microsoft Team Foundation Server<br /> • Azure Kubernetes Service (AKS)<br /> • Azure Service Fabric<br /> | • GitHub, Git, Subversion, etc.<br /> • Jenkins, Chef, Puppet, Velocity, CircleCI, TravisCI, etc.<br /> • On-premises Docker Datacenter, Docker Swarm, Mesos DC/OS, Kubernetes, etc.<br /> |
| Platform for Docker apps | • Microsoft Visual Studio and Visual Studio Code<br /> • .NET<br /> • Microsoft Azure Kubernetes Service (AKS)<br /> • Azure Container Registry<br /> | • Any code editor (for example, Sublime)<br /> • Any language (Node.js, Java, Go, etc.)<br /> • Any orchestrator and scheduler<br /> • Any Docker registry<br /> |
| DevOps for Docker apps | • Azure DevOps Services<br /> • Microsoft Team Foundation Server<br /> • Azure Kubernetes Service (AKS)<br /> | • GitHub, Git, Subversion, etc.<br /> • Jenkins, Chef, Puppet, Velocity, CircleCI, TravisCI, etc.<br /> • On-premises Docker Datacenter, Kubernetes, Mesos DC/OS, etc.<br /> |
| Management and monitoring | • Azure Monitor | • Marathon, Chronos, etc.<br />|

The Microsoft platform and tools for containerized Docker apps, as defined in Table 3-1, comprise the following components:

- **Platform for Docker Apps development** The development of a service, or collection of services that make up an "app." The development platform provides all the work developers requires prior to pushing their code to a shared code repository. Developing services, deployed as containers, are similar to the development of the same apps or services without Docker. You continue to use your preferred language (.NET, Node.js, Go, etc.) and preferred editor or IDE like Visual Studio or Visual Studio Code. However, rather than consider Docker a deployment destination, you develop your services in the Docker environment. You build, run, test, and debug your code in containers locally, providing the destination environment at development time. By providing the destination environment locally, Docker containers set up what will drastically help you improve your DevOps life cycle. Visual Studio and Visual Studio Code have extensions to integrate Docker containers within your development process.

- **DevOps for Docker Apps** Developers creating Docker applications can use [Azure DevOps Services](https://azure.microsoft.com/services/devops/) or any other third-party product, like Jenkins, to build out a comprehensive automated application life-cycle management (ALM).
- **DevOps for Docker Apps** Developers creating Docker applications can use [Azure DevOps](https://azure.microsoft.com/services/devops/) or any other third-party product, like Jenkins, to build out a comprehensive automated application life-cycle management (ALM).

With Azure DevOps Services, developers can create container-focused DevOps for a fast, iterative process that covers source-code control from anywhere (Azure DevOps Services-Git, GitHub, any remote Git repository, or Subversion), Continuous Integration (CI), internal unit tests, inter-container/service integration tests, Continuous Delivery (CD), and release management (RM). Developers can also automate their Docker application releases into Azure Kubernetes Service (AKS), from development to staging and production environments.
With Azure DevOps, developers can create container-focused DevOps for a fast, iterative process that covers source-code control from anywhere (Azure DevOps-Git, GitHub, any remote Git repository, or Subversion), Continuous Integration (CI), internal unit tests, inter-container/service integration tests, Continuous Delivery (CD), and release management (RM). Developers also can automate their Docker application releases into Azure Kubernetes Service (AKS), from development to staging and production environments.

- **Management and Monitoring** IT can manage and monitor production applications and services in several ways, integrating both perspectives in a consolidated experience.

- **Azure portal** If you're using open-source orchestrators, Azure Kubernetes Service (AKS), Service Fabric and other orchestrators help you to set up and maintain your Docker environments. If you're using Azure Service Fabric, the Service Fabric Explorer tool makes it possible for you to visualize and configure your cluster.
- **Azure portal** Azure Kubernetes Service (AKS) helps you to set up and maintain your Docker environments. You can also use other orchestrators to visualize and configure your cluster.

- **Docker tools** You can manage your container applications using familiar tools. There's no need to change your existing Docker management practices to move container workloads to the cloud. Use the application management tools you're already familiar with and connect via the standard API endpoints for the orchestrator of your choice. You can also use other third-party tools to manage your Docker applications, such as Docker Datacenter or even CLI Docker tools.
- **Docker tools** You can manage your container applications using familiar tools. There's no need to change your existing Docker management practices to move container workloads to the cloud. Use the application management tools you're already familiar with and connect via the standard API endpoints for the orchestrator of your choice. You also can use other third-party tools to manage your Docker applications or even CLI Docker tools.

Even if you're familiar with Linux commands, you can manage your container applications using Microsoft Windows and PowerShell with a Linux Subsystem command line and the products (Docker, Kubernetes…) clients running on this Linux Subsystem capability. You'll learn more about using these tools under Linux Subsystem using your favorite Microsoft Windows OS later in this book.

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading