Files
flagger/charts/flagger
mathetake a157824130 metrics/provider: add datadog metrics provider
implement metrics provider interface for datadog, tested against
the actual datadog account

resolves #284
2020-02-27 17:35:03 +09:00
..
2018-10-07 13:08:42 +03:00
2020-02-06 14:49:04 +02:00

Flagger

Flagger is a Kubernetes operator that automates the promotion of canary deployments using Istio, Linkerd, App Mesh, NGINX or Gloo routing for traffic shifting and Prometheus metrics for canary analysis.

Flagger implements a control loop that gradually shifts traffic to the canary while measuring key performance indicators like HTTP requests success rate, requests average duration and pods health. Based on the KPIs analysis a canary is promoted or aborted and the analysis result is published to Slack or MS Teams.

Prerequisites

  • Kubernetes >= 1.11
  • Prometheus >= 2.6

Installing the Chart

Add Flagger Helm repository:

$ helm repo add flagger https://flagger.app

Install Flagger's custom resource definitions:

$ kubectl apply -f https://raw.githubusercontent.com/weaveworks/flagger/master/artifacts/flagger/crd.yaml

To install the chart with the release name flagger for Istio:

$ helm upgrade -i flagger flagger/flagger \
    --namespace=istio-system \
    --set crd.create=false \
    --set meshProvider=istio \
    --set metricsServer=http://prometheus:9090

To install the chart with the release name flagger for Linkerd:

$ helm upgrade -i flagger flagger/flagger \
    --namespace=linkerd \
    --set crd.create=false \
    --set meshProvider=linkerd \
    --set metricsServer=http://linkerd-prometheus:9090

To install the chart with the release name flagger for AWS App Mesh:

$ helm upgrade -i flagger flagger/flagger \
    --namespace=appmesh-system \
    --set crd.create=false \
    --set meshProvider=appmesh \
    --set metricsServer=http://appmesh-prometheus:9090

The configuration section lists the parameters that can be configured during installation.

Uninstalling the Chart

To uninstall/delete the flagger deployment:

$ helm delete --purge flagger

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The following tables lists the configurable parameters of the Flagger chart and their default values.

Parameter Description Default
image.repository Image repository weaveworks/flagger
image.tag Image tag <VERSION>
image.pullPolicy Image pull policy IfNotPresent
prometheus.install If true, installs Prometheus configured to scrape all pods in the custer including the App Mesh sidecar false
metricsServer Prometheus URL, used when prometheus.install is false http://prometheus.istio-system:9090
selectorLabels List of labels that Flagger uses to create pod selectors app,name,app.kubernetes.io/name
configTracking.enabled If true, flagger will track changes in Secrets and ConfigMaps referenced in the target deployment true
eventWebhook If set, Flagger will publish events to the given webhook None
slack.url Slack incoming webhook None
slack.channel Slack channel None
slack.user Slack username flagger
msteams.url Microsoft Teams incoming webhook None
podMonitor.enabled If true, create a PodMonitor for monitoring the metrics false
podMonitor.namespace Namespace where the PodMonitor is created the same namespace
podMonitor.interval Interval at which metrics should be scraped 15s
podMonitor.podMonitor Additional labels to add to the PodMonitor {}
leaderElection.enabled If true, Flagger will run in HA mode false
leaderElection.replicaCount Number of replicas 1
ingressAnnotationsPrefix Annotations prefix for ingresses custom.ingress.kubernetes.io
rbac.create If true, create and use RBAC resources true
rbac.pspEnabled If true, create and use a restricted pod security policy false
crd.create If true, create Flagger's CRDs (should be enabled for Helm v2 only) false
resources.requests/cpu Pod CPU request 10m
resources.requests/memory Pod memory request 32Mi
resources.limits/cpu Pod CPU limit 1000m
resources.limits/memory Pod memory limit 512Mi
affinity Node/pod affinities None
nodeSelector Node labels for pod assignment {}
tolerations List of node taints to tolerate []
istio.kubeconfig.secretName The name of the Kubernetes secret containing the Istio shared control plane kubeconfig None
istio.kubeconfig.key The name of Kubernetes secret data key that contains the Istio control plane kubeconfig kubeconfig

Specify each parameter using the --set key=value[,key=value] argument to helm upgrade. For example,

$ helm upgrade -i flagger flagger/flagger \
  --namespace flagger-system \
  --set crd.create=false \
  --set slack.url=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK \
  --set slack.channel=general

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm upgrade -i flagger flagger/flagger \
  --namespace istio-system \
  -f values.yaml

Tip

: You can use the default values.yaml