From c4b066c845b50d17bf32b4426df4e9e15faf3260 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 4 Jul 2019 13:45:56 +0300 Subject: [PATCH] Add Kustomize installer to docs --- .../install/flagger-install-on-kubernetes.md | 127 +++++++++++++----- 1 file changed, 93 insertions(+), 34 deletions(-) diff --git a/docs/gitbook/install/flagger-install-on-kubernetes.md b/docs/gitbook/install/flagger-install-on-kubernetes.md index 80013f75..023d003d 100644 --- a/docs/gitbook/install/flagger-install-on-kubernetes.md +++ b/docs/gitbook/install/flagger-install-on-kubernetes.md @@ -1,6 +1,6 @@ # Flagger install on Kubernetes -This guide walks you through setting up Flagger on a Kubernetes cluster. +This guide walks you through setting up Flagger on a Kubernetes cluster with Helm or Kustomize. ### Prerequisites @@ -9,18 +9,7 @@ Flagger requires a Kubernetes cluster **v1.11** or newer with the following admi * MutatingAdmissionWebhook * ValidatingAdmissionWebhook -Flagger depends on [Istio](https://istio.io/docs/setup/kubernetes/quick-start/) **v1.0.3** or newer -with traffic management, telemetry and Prometheus enabled. - -A minimal Istio installation should contain the following services: - -* istio-pilot -* istio-ingressgateway -* istio-sidecar-injector -* istio-telemetry -* prometheus - -### Install Flagger +### Install Flagger with Helm Add Flagger Helm repository: @@ -28,15 +17,25 @@ Add Flagger Helm repository: helm repo add flagger https://flagger.app ``` -Deploy Flagger in the _**istio-system**_ namespace: +Deploy Flagger for Istio: ```bash helm upgrade -i flagger flagger/flagger \ --namespace=istio-system \ ---set metricsServer=http://prometheus.istio-system:9090 +--set meshProvider=istio \ +--set metricsServer=http://prometheus:9090 ``` -You can install Flagger in any namespace as long as it can talk to the Istio Prometheus service on port 9090. +Deploy Flagger for Linkerd: + +```bash +helm upgrade -i flagger flagger/flagger \ +--namespace=linkerd \ +--set meshProvider=linkerd \ +--set metricsServer=http://linkerd-prometheus:9090 +``` + +You can install Flagger in any namespace as long as it can talk to the Prometheus service on port 9090. Enable **Slack** notifications: @@ -81,7 +80,7 @@ If you want to remove all the objects created by Flagger you have delete the Can kubectl delete crd canaries.flagger.app ``` -### Install Grafana +### Install Grafana with Helm Flagger comes with a Grafana dashboard made for monitoring the canary analysis. @@ -115,31 +114,91 @@ You can access Grafana using port forwarding: kubectl -n istio-system port-forward svc/flagger-grafana 3000:80 ``` -### Install Load Tester +### Install Flagger with Kustomize -Flagger comes with an optional load testing service that generates traffic -during canary analysis when configured as a webhook. +As an alternative to Helm, Flagger can be installed with Kustomize. -Deploy the load test runner with Helm: +**Service mesh specific installers** + +Install Flagger for Istio: ```bash -helm upgrade -i flagger-loadtester flagger/loadtester \ ---namespace=test \ ---set cmd.timeout=1h +kubectl apply -k github.com/weaveworks/flagger/kustomize/istio ``` -Deploy with kubectl: +This deploys Flagger in the `istio-system` namespace and sets the metrics server URL to `http://prometheus.istio-system:9090`. + +Install Flagger for Linkerd: ```bash -helm fetch --untar --untardir . flagger/loadtester && -helm template loadtester \ ---name flagger-loadtester \ ---namespace=test -> $HOME/flagger-loadtester.yaml - -# apply -kubectl apply -f $HOME/flagger-loadtester.yaml +kubectl apply -k github.com/weaveworks/flagger/kustomize/linkerd ``` -> **Note** that the load tester should be deployed in a namespace with Istio sidecar injection enabled. +This deploys Flagger in the `linkerd` namespace and sets the metrics server URL to `http://linkerd-prometheus.linkerd:9090`. +**Generic installer** + +Install Flagger and Prometheus: + +```bash +kubectl apply -k github.com/weaveworks/flagger/kustomize/kubernetes +``` + +This deploys Flagger and Prometheus in the `flagger-system` namespace, +sets the metrics server URL to `http://flagger-prometheus.flagger-system:9090` and the mesh provider to `kubernetes`. + +To target a specific provider you need to specify it in the canary custom resource: + +```yaml +apiVersion: flagger.app/v1alpha3 +kind: Canary +metadata: + name: app + namespace: test +spec: + # can be: kubernetes, istio, appmesh, linkerd, smi, nginx, gloo, supergloo + # use the kubernetes provider for Blue/Green style deployments + provider: nginx +``` + +**Customized installer** + +Create a kustomization file using flagger as base: + +```bash +cat > kustomization.yaml < patch.yaml <