Total estimated time: 1 hr 30 mins
-
Clond Repo with workshop files
-
Install following tools in Cloud Shell
Helm
for application managementkubectx/kubens
for easy context switching
-
Deploy three Kubernetes Engine clusters (5 mins)
- Use gcloud
- Two clusters (
cluster-1
andcluster-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-1
andcluster-2
for thedefault
namespace - 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-server
app to Container Registry with version tagv1.0.0
- Push
busyboxplus
to 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.0
tocluster-1
andcluster-2
(10 mins)
-
Load balance traffic using an NGINX load balancer to both
cluster-1
andcluster-2
(10 mins)- Install NGINX LB in
cluster-3
(outside ofcluster-1
andcluster-2
) - Configure a ConfigMap for
load-balancer.conf
withcluster-1
andcluster-2
Ingress IP addresses pointing to the webapp - Expose NGINX as
Type:LoadBalancer
for Client access - Manipulate
weight
fields in the ConfigMap to manage traffic betweencluster-1
andcluster-2
- Install NGINX LB in
- Trigger the Deploy pipeline by updating the version tag to
v1.0.1
in Container Registry (15 mins)
- Use RouteRules to route traffic between prod and canary releases within each cluster (10 mins)