net core a new .net platform 101 container management docker engine compute web api web api...

46

Upload: doannguyet

Post on 31-Mar-2018

228 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 2: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Containers

• Docker-

compose

• Environments

Composition

• Orchestrators

• Containerized

application lifecycle

Clusters

• Summary

• Questions and

answers

Wrap up

• Container technology

• Docker

• Visual Studio 2017 tooling

Page 3: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Outer loop

Inner loop

Run

Code

Validate

Page 4: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #1Diving straight into Docker containers

Page 5: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Container technologyDocker 101

Page 6: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 7: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 8: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Container management

Docker Engine

Compute

Page 9: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 10: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Web APIWeb API

containercontainer

LeaderboardMicroservice

Identity Microservice

ASP.NET Core Web App

Client applications (browser)

Web Page

HTML 5 JavaScript game

Page 11: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #2Highscore application

Page 12: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Docker containers and Visual Studio 2017

Page 13: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 14: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 15: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

microsoft/nanoserver:10.0.14393.1066

-or- debian/jessie

microsoft/dotnet:1.0.0-sdk

microsoft/dotnet:1.1.1-runtime

microsoft/dotnet:1.1.1-runtime-deps

microsoft/aspnetcore:1.1.1

Your application layer:

e.g. dotnext/gamingwebapp:latest

debian/jessie

Page 16: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 17: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Sources

In C# this would besource ?? “obj/Docker/Publish”

Determined by VS2017 in DOCKER_BUILD_SOURCE

Page 18: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #3Running containers in VS2017

Page 19: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Sources

Debugger

~%USER_PROFILE%

Page 20: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 21: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #4Debugging containers in VS2017

Page 22: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Composing applications from containers

Page 23: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Orchestration tool for container automation

Page 24: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Web API

container

LeaderboardMicroservice

Web App

Page 25: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

services

service-name

docker-image

how to build image

other services

key/value pairs

port mappings

networks

network-name

volumes

volume-name

VS2017 currently uses 2.1Support for 3.x coming soon

Page 26: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

version: '2.1'

services:ci-build:image: microsoft/aspnetcore-build:1.0-1.1volumes:

- .:/srcworking_dir: /srccommand: /bin/bash -c "dotnet restore ./DotNextGaming.sln

&& dotnet publish ./DotNextGaming.sln -c Release -o ./obj/Docker/publish"

Page 27: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #5Building compositions

Page 28: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 29: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

docker-compose

-f "docker-compose.yml" -f "docker-compose.override.yml“-p composition up -d

Page 30: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #6Working with compositions

Page 31: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

{"ConnectionString": "Server=tcp:…","Logging": {

"IncludeScopes": false,"LogLevel": {

"Default": "Warning"}

}}

Page 32: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

public Startup(IHostingEnvironment env){

var builder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath).AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true).AddEnvironmentVariables();

Configuration = builder.Build();}

Page 33: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

environment:- ASPNETCORE_ENVIRONMENT=Development- ASPNETCORE_URLS=http://0.0.0.0:1337- ConnectionString=Server=sql.data;…

environment:- ASPNETCORE_ENVIRONMENT=Production- ASPNETCORE_URLS=http://0.0.0.0:80- ConnectionString=DOCKERSECRETS_KEY

{"ConnectionString": "Server=tcp:…","Logging": {"IncludeScopes": false,"LogLevel": {

"Default": "Warning"}

}}

Page 34: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

// Key/value collection with indexer

Configuration["LeaderboardBaseUrl"];

Configuration["ConnectionStrings:LeaderboardContext"];

// Or special extension methods

Configuration.GetConnectionString("LeaderboardContext");

// appsettings.json{ "LeaderboardBaseUrl": "http://localhost:1337/api","ConnectionStrings": {

"LeaderboardContext": "Server=tcp:127.0.0.1,3433; …"}, …

}

Page 35: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

public class HomeController : Controller{private readonly IOptionsSnapshot<WebAppSettings> settings;

// Inject snapshot of settingspublic HomeController(IOptionsSnapshot<WebAppSettings> settings) {

this.settings = settings;}

public void ConfigureServices(IServiceCollection services){// Add framework services.services.Configure<WebAppSettings>(Configuration);services.AddMvc();

} public class WebAppSettings {public string Setting1 …public int Setting2 …

}

Page 36: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Moving to container clusters

Page 37: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 38: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Cluster FabricHigh Availability

Hyper-Scale

Hybrid Operations

High DensityRolling Upgrades

Stateful services

Low LatencyFast startup &

shutdown

Container Orchestration &

lifecycle management

Replication &

Failover

Simple

programming

modelsLoad balancing

Self-healingData Partitioning

Automated Rollback

Health

Monitoring

Placement

Constraints

Microservices

Mesos DC/OS Docker Swarm Google Kubernetes Azure Service Fabric

Page 39: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Azure

DC/OSSwarmKubernetes

Page 40: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Outer loop

Inner loop

Run

Code

Validate

Page 41: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 42: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App
Page 43: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #7Deploying and hosting in a Docker Swarm cluster

Page 44: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Demo #8Visual Studio Team ServicesBuild and release pipelines

Page 45: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Outer loop

Inner loop

Run

Code

Validate

Page 46: NET Core a New .NET Platform 101 Container management Docker Engine Compute Web API Web API container container Leaderboard Microservice Identity Microservice ASP.NET Core Web App

Resources

http://dot.net

http://docs.docker.comhttp://hub.docker.com/microsoft/

http://visualstudio.com

https://docs.microsoft.com/en-us/