argo-rollouts-kayenta

Prepare

The manifests in this repository assume the use of the argo-rollouts namespace.

k create ns argo-rollouts
k config set-context --current --namespace argo-rollouts

Installing Kayenta

cd kayenta
kustomize build | kubectl apply -f -
cd -

You should be able to visit the Swagger API documentation.

http://:8090/swagger-ui.html

Installing Istio

istioctl install --set profile=demo -f istio-overlay.yml -y
k apply -f https://raw.githubusercontent.com/istio/istio/release-1.9/samples/addons/kiali.yaml
k label namespace argo-rollouts istio-injection=enabled
k apply -f istio-monitors.yml

Installing Prometheus

k apply -f https://raw.githubusercontent.com/istio/istio/master/samples/addons/prometheus.yaml
k apply -f https://raw.githubusercontent.com/istio/istio/master/samples/addons/grafana.yaml

Demo flow

Cleanup

k delete ro --all -A
k delete -f basic-rollout.yml -f basic-service.yml -f experiment.yml -f istio-gateway.yml -f istio-rollout.yml -f istio-services.yml -f istio-virtualservice.yml

Manual cutover + incremental rollout

k apply -f basic-rollout.yml
k apply -f basic-service.yml
k argo rollouts get rollout rollouts-demo --watch
k argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
k argo rollouts promote rollouts-demo

Abort rollout

k argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:red
k argo rollouts abort rollouts-demo
k argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow

Istio

k delete ro --all -A
k apply -f istio-rollout.yml -f istio-services.yml -f istio-virtualservice.yml -f istio-gateway.yml
k argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
k describe VirtualService rollouts-demo-vsvc
k argo rollouts promote rollouts-demo

Background analysis

k delete ro --all -A
k apply -f background-analysistemplate.yml -f background-rollout.yml
open -a "Google Chrome" http://$(kubectl -n istio-system get svc istio-ingressgateway -o json | jq -r .status.loadBalancer.ingress[0].ip)
kpf svc/grafana 3000 -n istio-system
open -a "Google Chrome" http://localhost:3000
k argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
k describe VirtualService rollouts-demo-vsvc
k argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:red

Cleanup

k delete ro --all -A