Physical Development Staging Production Team Morpheus Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Production Team Trinity Development, Staging Production Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Team Morpheus Team Trinity Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Staging Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Team Morpheus Team Trinity One Cluster is reused over environments and teams Logical
Pod Pod Pod Pod Master branch Feature X branch Pod Pod Pod Pod Pod Pod Feature Y branch Pod Pod Pod Pod Pod Pod Staging Production Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod One Cluster is reused over environments and teams Multiple teams and environments Team Morpheus Team Trinity Team Morpheus Team Trinity
Firewall Public IP-Address North Europe VNET AKS cluster Application Gateway & Firewall Public IP-Address # Traffic Manager az network traffic-manager profile create -g $RESOURCEGROUP_NETWORK -n $TRAFFICMANAGER_NAME --routing-method Performance --unique-dns-name $TRAFFICMANAGER_NAME --ttl 30 --protocol HTTP --port 80 --path "/" # Get resourceID of public ip address PUBLICIP_RESOURCEID=$(az network public-ip show -g $RESOURCEGROUP_NETWORK -n $IPADDRESS_NAME --query id -o tsv) # Add public ip address of WAG/WAF to Trafficmanager az network traffic-manager endpoint create -g $RESOURCEGROUP_NETWORK --name wagwaf --profile-name $TRAFFICMANAGER_NAME --type azureEndpoints --target-resource-id $PUBLICIP_RESOURCEID http:// ignitetour.trafficmanager.net
Gateway & Firewall Public IP-Address North Europe VNET AKS cluster Application Gateway & Firewall Public IP-Address # DNS zone az network dns zone create -g $RESOURCEGROUP_NETWORK -n $DOMAIN_NAME # Get resourceId of TrafficManager TRAFFICMANAGER_RESOURCEID=$(az resource show -g $RESOURCEGROUP_NETWORK -n $TRAFFICMANAGER_NAME --query id --output tsv) # Add TrafficManager to DNS Zone az network dns record-set cname create -g $RESOURCEGROUP_NETWORK -z $DOMAIN_NAME -n '*' --target-resource $TRAFFICMANAGER_RESOURCEID http:// ignitetour.trafficmanager.net http://www.ignitetour.cf
Zone Log Analytics VNET AKS cluster Application Gateway & Firewall Log Analytics West Europe Public IP-Address North Europe Public IP-Address # Log analytics (using ARM template) az group deployment create –g $RESOURCEGROUP_K8S --template-file $WORKSPACE_ARMTEMPLATE_PATH --parameters workspaceName=$WORKSPACE_NAME serviceTier=PerNode location=$LOCATION
Principal (AKS) DNS Zone Log Analytics VNET AKS cluster Application Gateway & Firewall Service Principal (AKS) Log Analytics Service Principal (Deploy) Key Vault Service Principal (Deploy) Key Vault West Europe Public IP-Address North Europe Public IP-Address # Key Vault az keyvault create --resource-group $RESOURCEGROUP_KEYVAULT --name $KEYVAULT_NAME --enabled-for-template-deployment --enabled-for-deployment # Network Contributor to Deploy SPN SPN_AKS_ID=$(az ad sp show --id http://$SPN_AKS_NAME --query appId --output tsv) az role assignment create --assignee $SPN_DEPLOY_ID --role "Network Contributor" # Assign Reader Role to Key Vault for Deploy SPN KEYVAULT_ID=$(az keyvault show -n $KEYVAULT_NAME -g $RESOURCEGROUP_KEYVAULT --query id -o tsv) az role assignment create --role Reader --assignee $SPN_DEPLOY_ID --scope $KEYVAULT_ID
Gateway & Firewall Public IP-Address Service Principal (AKS) Service Principal (Deploy) Key Vault DNS Zone Log Analytics VNET AKS cluster Application Gateway & Firewall Public IP-Address Service Principal (AKS) Service Principal (Deploy) Key Vault Log Analytics Service Principal (Registry) Container Registry Common AKS cluster Production Development
Firewall Public IP-Address Service Principal (AKS) Service Principal (Deploy) Key Vault DNS Zone Log Analytics On-premises Express route VPN Gateway VNET peering VNET
your team is in control Time to market is more important then resource costs Use Application Gateway for a Layer 7 firewall Application Gateway is complex to configure Use Traffic Manager for High Availability Use Key Vault for ALL your secrets Provisioning AKS takes some preparation New interesting Azure services are coming soon Automate everything! Automating everything takes a LOT of time and effort Using Azure DevOps for CI/CD is a good solution to automate everything
Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Partly Managed IaaS Cluster Managed Cluster Kubernetes cluster Worker Node Worker Node Master Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Kubectl get nodes NAME STATUS ROLES AGE VERSION aks-agentpool-17613766-0 Ready agent 4h v1.11.5 aks-agentpool-17613766-1 Ready agent 4h v1.11.5 aks-agentpool-17613766-2 Ready agent 4h v1.11.5 virtual-node-aci-linux Ready agent 4h v1.11.2
reboot Nodes Apply Kured for automatic reboots AKS Worker Nodes are IaaS Use Helm to install & configure preconfigured applications to K8S Automate configuration also! Lessons learned regarding Configuration Easy to make the Dashboard work Kubernetes as PaaS is the next step Kubernetes ecosystem is amazing
Pod Pod Pod Pod Master branch Feature X branch Pod Pod Pod Pod Pod Pod Feature Y branch Pod Pod Pod Pod Pod Pod Staging Production Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod One Cluster is reused over environments and teams Automated deployments Team Morpheus Team Trinity Team Morpheus Team Trinity
AzureDisk - ReadWriteOnce only - 1 Pod only - Slow in provisioning - Limited nr of Disks - No direct access to data + default (for dev & test) + Premium (SSD) for production AzureFile + All AccessModes + Shared by Pods + Fast in provisioning + Unlimited Volumes + Direct access to data - default only (dev & test) - SMB = slow Persistent Volumes AccessModes • ReadWriteOnce • ReadOnlyMany • ReadWriteMany
templates takes another thing to learn Key Vault access is not integrated in AKS Microsoft Azure specific Monitoring Solution for AKS: Log Analytics + Container Solution Prevent stateful applications Helm is convenient to deploy applications Automate application deployment also!