Microsoft DevOps Workshop Code for the demos and labs for this workshop by Jerry Meisner and Christoph Champ for Redapt, Inc. (August 2018) Table of Contents Introduction Docker Overview Benefits of Containers Install Docker Docker commands Docker Directives Container Volume Management Images Networking Monitoring Events Docker Image Repositories (Public/Private) Docker Compose Containerization Dependencies and Image Size Configurability and Security Tagging and Versioning .NET Core - ReactJS Java Spring Boot Windows Containers Kubernetes / AKS Overview / Moving Parts ETCD Kubernetes API Controller Manager / Scheduler / Kubelet / Proxy Networking (Flannel/Calico) Primitives (Deployments / Services / Pods / etc) RBAC / Service Accounts Cloud Provider Environment Strategies (NonProd/Prod vs Dev/Test/Cert/Prod) Namespaces Environments Service Discovery / KubeDNS Workloads Standing up your First Cluster Minikube (Local) Docker Desktop AKS kubectl Labels, Selectors, and Annotations Private Repo Image Pull Secrets Deploying Stateless Applications Deployments Jobs DaemonSets ConfigMaps and Secrets Deploying Stateful Applications Volume Management Stateful Sets System Services Standard Kube-System Pods Third Party Add-Ons (Datadog, Helm) Ingress / Traffic Routing Defining Services (ClusterIP / NodePort / LoadBalancer) Ingress Controllers / Rules Service Mesh Auto-Scaling / SRE Resources (Limits / Requests) NodeSelector/Affinity/Anti-Affinity Liveness / Readiness Probes Horizontal Pod Autoscaling Cluster Scaling Revisiting Section 2.3.4 .NET Core - ReactJS Setting Up Redis Setting Up Our Web App Pipelines Helm Install Helm Reading Charts Creating Charts State Metrics Ingress Controller ELK Stack (Logging) Jenkins Stack Jenkins on K8s Install Jenkins Test Pipeline Building an App Containers as a Build Artifact / Promoting Builds Integration Testing Microservices