Total estimated time: 1 hr 30 mins
-
Clond Repo with workshop files
-
Install following tools in Cloud Shell
Helmfor application managementkubectx/kubensfor easy context switching
-
Deploy three Kubernetes Engine clusters (5 mins)
- Use gcloud
- Two clusters (
cluster-1andcluster-2) used for multi-cluster and application deployment - One cluster (
cluster-3) used for Spinnaker, NGINX LB and Container Registry
-
Install Istio on all three clusters (5 mins)
- Use latest release artifacts (0.8 and onwards will have LTS)
- Use Helm
- Enable sidecar injector for
cluster-1andcluster-2for thedefaultnamespace - For using Ingress and RouteRules later in the lab
-
Install and configure Spinnaker on
cluster-3(20 mins)- Create service accounts and GCS buckets
- Create secret with kubeconfig
- Create spinnaker config
- Use helm charts by Vic (chart deployment takes about 10 mins)
-
Prepare Container Registry (5 mins)
- Push a simple
web-serverapp to Container Registry with version tagv1.0.0 - Push
busyboxplusto COntainer registry to simulate canary testing
- Push a simple
-
Configure a Deploy pipeline in Spinnaker to deploy a web app to both clusters (5 mins)
- Deploy Canary > Test Canary > Manual Judgement > Deploy to Prod
- Triggered via version tag (
v.*) from Container Registry
-
Manually deploy pipeline for
v1.0.0tocluster-1andcluster-2(10 mins)
-
Load balance traffic using an NGINX load balancer to both
cluster-1andcluster-2(10 mins)- Install NGINX LB in
cluster-3(outside ofcluster-1andcluster-2) - Configure a ConfigMap for
load-balancer.confwithcluster-1andcluster-2Ingress IP addresses pointing to the webapp - Expose NGINX as
Type:LoadBalancerfor Client access - Manipulate
weightfields in the ConfigMap to manage traffic betweencluster-1andcluster-2
- Install NGINX LB in
- Trigger the Deploy pipeline by updating the version tag to
v1.0.1in Container Registry (15 mins)
- Use RouteRules to route traffic between prod and canary releases within each cluster (10 mins)
