Files
flagger/install/flagger-install-on-kubernetes.html
T
2020-12-07 10:14:31 +00:00

152 lines
30 KiB
HTML

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Flagger Install on Kubernetes | Flagger</title>
<meta name="description" content="Progressive Delivery operator for Kubernetes (Canary, A/B Testing and Blue/Green deployments)">
<link rel="icon" href="/favicon.png">
<link rel="stylesheet" href="/website.css">
<meta name="keywords" content="gitops kubernetes flagger istio linkerd appmesh contour gloo nginx">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Flagger">
<meta name="twitter:description" content="Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)">
<meta name="twitter:image:src" content="https://flagger.app/flagger-overview.png">
<link rel="preload" href="/assets/css/0.styles.a0ada997.css" as="style"><link rel="preload" href="/assets/js/app.cd972522.js" as="script"><link rel="preload" href="/assets/js/2.ba5bf77c.js" as="script"><link rel="preload" href="/assets/js/13.9104349a.js" as="script"><link rel="prefetch" href="/assets/js/10.bf6f38d4.js"><link rel="prefetch" href="/assets/js/11.3af38cfe.js"><link rel="prefetch" href="/assets/js/12.eca4b89c.js"><link rel="prefetch" href="/assets/js/14.a4f3d810.js"><link rel="prefetch" href="/assets/js/15.aada2caa.js"><link rel="prefetch" href="/assets/js/16.3012a10b.js"><link rel="prefetch" href="/assets/js/17.a98b6aa9.js"><link rel="prefetch" href="/assets/js/18.e5188926.js"><link rel="prefetch" href="/assets/js/19.bb9498f7.js"><link rel="prefetch" href="/assets/js/20.2b1bebf5.js"><link rel="prefetch" href="/assets/js/21.e1068843.js"><link rel="prefetch" href="/assets/js/22.1c5d14b9.js"><link rel="prefetch" href="/assets/js/23.b3dcc355.js"><link rel="prefetch" href="/assets/js/24.4f54d289.js"><link rel="prefetch" href="/assets/js/25.355f5783.js"><link rel="prefetch" href="/assets/js/26.b2d05e06.js"><link rel="prefetch" href="/assets/js/27.ea9f1f9c.js"><link rel="prefetch" href="/assets/js/28.deae273d.js"><link rel="prefetch" href="/assets/js/29.17c547e6.js"><link rel="prefetch" href="/assets/js/3.8b254d5d.js"><link rel="prefetch" href="/assets/js/30.38bd809e.js"><link rel="prefetch" href="/assets/js/31.fbfb336c.js"><link rel="prefetch" href="/assets/js/32.591c3f2b.js"><link rel="prefetch" href="/assets/js/33.c456709f.js"><link rel="prefetch" href="/assets/js/34.5a071e36.js"><link rel="prefetch" href="/assets/js/35.fc27c09e.js"><link rel="prefetch" href="/assets/js/36.144098aa.js"><link rel="prefetch" href="/assets/js/4.26a3069c.js"><link rel="prefetch" href="/assets/js/5.f0e8e1f0.js"><link rel="prefetch" href="/assets/js/6.ee5ffca3.js"><link rel="prefetch" href="/assets/js/7.6bf27a87.js"><link rel="prefetch" href="/assets/js/8.e3907a66.js"><link rel="prefetch" href="/assets/js/9.12e0bca8.js">
<link rel="stylesheet" href="/assets/css/0.styles.a0ada997.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">Flagger</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://docs.flagger.app" target="_blank" rel="noopener noreferrer" class="nav-link external">
Docs
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="nav-item"><a href="https://github.com/weaveworks/flagger/blob/master/CHANGELOG.md" target="_blank" rel="noopener noreferrer" class="nav-link external">
Changelog
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <a href="https://github.com/weaveworks/flagger" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://docs.flagger.app" target="_blank" rel="noopener noreferrer" class="nav-link external">
Docs
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="nav-item"><a href="https://github.com/weaveworks/flagger/blob/master/CHANGELOG.md" target="_blank" rel="noopener noreferrer" class="nav-link external">
Changelog
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <a href="https://github.com/weaveworks/flagger" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav> <ul class="sidebar-links"><li><a href="/" class="sidebar-link">Home</a></li><li><section class="sidebar-group depth-0"><a href="/intro/" class="sidebar-heading clickable"><span>Introduction</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/intro/" class="sidebar-link">Get Started</a></li><li><a href="/intro/faq.html" class="sidebar-link">FAQ</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/install/flagger-install-on-kubernetes" class="sidebar-heading clickable open active"><span>Install</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/install/flagger-install-on-kubernetes.html" class="active sidebar-link">On Kubernetes</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/install/flagger-install-on-kubernetes.html#prerequisites" class="sidebar-link">Prerequisites</a></li><li class="sidebar-sub-header"><a href="/install/flagger-install-on-kubernetes.html#install-flagger-with-helm" class="sidebar-link">Install Flagger with Helm</a></li><li class="sidebar-sub-header"><a href="/install/flagger-install-on-kubernetes.html#install-grafana-with-helm" class="sidebar-link">Install Grafana with Helm</a></li><li class="sidebar-sub-header"><a href="/install/flagger-install-on-kubernetes.html#install-flagger-with-kustomize" class="sidebar-link">Install Flagger with Kustomize</a></li></ul></li><li><a href="/install/flagger-install-on-google-cloud.html" class="sidebar-link">On GKE Istio</a></li><li><a href="/install/flagger-install-on-eks-appmesh.html" class="sidebar-link">On EKS App Mesh</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/usage/how-it-works" class="sidebar-heading clickable"><span>Usage</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/usage/how-it-works.html" class="sidebar-link">How it works</a></li><li><a href="/usage/deployment-strategies.html" class="sidebar-link">Deployment Strategies</a></li><li><a href="/usage/metrics.html" class="sidebar-link">Metrics Analysis</a></li><li><a href="/usage/webhooks.html" class="sidebar-link">Webhooks</a></li><li><a href="/usage/alerting.html" class="sidebar-link">Alerting</a></li><li><a href="/usage/monitoring.html" class="sidebar-link">Monitoring</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/tutorials/istio-progressive-delivery" class="sidebar-heading clickable"><span>Tutorials</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/tutorials/istio-progressive-delivery.html" class="sidebar-link">Istio Canaries</a></li><li><a href="/tutorials/istio-ab-testing.html" class="sidebar-link">Istio A/B Testing</a></li><li><a href="/tutorials/linkerd-progressive-delivery.html" class="sidebar-link">Linkerd Canaries</a></li><li><a href="/tutorials/appmesh-progressive-delivery.html" class="sidebar-link">App Mesh Canaries</a></li><li><a href="/tutorials/nginx-progressive-delivery.html" class="sidebar-link">NGINX Ingress Canaries</a></li><li><a href="/tutorials/gloo-progressive-delivery.html" class="sidebar-link">Gloo Canaries</a></li><li><a href="/tutorials/contour-progressive-delivery.html" class="sidebar-link">Contour Canaries</a></li><li><a href="/tutorials/kubernetes-blue-green.html" class="sidebar-link">Kubernetes Blue/Green</a></li><li><a href="/tutorials/canary-helm-gitops.html" class="sidebar-link">Canaries with Helm charts and GitOps</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/dev/dev-guide" class="sidebar-heading clickable"><span>Dev</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/dev/dev-guide.html" class="sidebar-link">Development Guide</a></li><li><a href="/dev/release-guide.html" class="sidebar-link">Release Guide</a></li><li><a href="/dev/upgrade-guide.html" class="sidebar-link">Upgrade Guide</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="flagger-install-on-kubernetes"><a href="#flagger-install-on-kubernetes" aria-hidden="true" class="header-anchor">#</a> Flagger Install on Kubernetes</h1> <p>This guide walks you through setting up Flagger on a Kubernetes cluster with Helm v3 or Kustomize.</p> <h2 id="prerequisites"><a href="#prerequisites" aria-hidden="true" class="header-anchor">#</a> Prerequisites</h2> <p>Flagger requires a Kubernetes cluster <strong>v1.11</strong> or newer.</p> <h2 id="install-flagger-with-helm"><a href="#install-flagger-with-helm" aria-hidden="true" class="header-anchor">#</a> Install Flagger with Helm</h2> <p>Add Flagger Helm repository:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm repo <span class="token function">add</span> flagger https://flagger.app
</code></pre></div><p>Install Flagger's Canary CRD:</p> <div class="language-yaml extra-class"><pre class="language-yaml"><code>kubectl apply <span class="token punctuation">-</span>f https<span class="token punctuation">:</span>//raw.githubusercontent.com/weaveworks/flagger/master/artifacts/flagger/crd.yaml
</code></pre></div><p>Deploy Flagger for Istio:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm upgrade -i flagger flagger/flagger <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>istio-system <span class="token punctuation">\</span>
--set crd.create<span class="token operator">=</span>false <span class="token punctuation">\</span>
--set <span class="token assign-left variable">meshProvider</span><span class="token operator">=</span>istio <span class="token punctuation">\</span>
--set <span class="token assign-left variable">metricsServer</span><span class="token operator">=</span>http://prometheus:9090
</code></pre></div><p>Note that Flagger depends on Istio telemetry and Prometheus, if you're installing Istio with istioctl
then you should be using the <a href="https://istio.io/docs/setup/additional-setup/config-profiles/" target="_blank" rel="noopener noreferrer">default profile<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.</p> <p>For Istio multi-cluster shared control plane you can install Flagger
on each remote cluster and set the Istio control plane host cluster kubeconfig:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm upgrade -i flagger flagger/flagger <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>istio-system <span class="token punctuation">\</span>
--set crd.create<span class="token operator">=</span>false <span class="token punctuation">\</span>
--set <span class="token assign-left variable">meshProvider</span><span class="token operator">=</span>istio <span class="token punctuation">\</span>
--set <span class="token assign-left variable">metricsServer</span><span class="token operator">=</span>http://istio-cluster-prometheus:9090 <span class="token punctuation">\</span>
--set istio.kubeconfig.secretName<span class="token operator">=</span>istio-kubeconfig <span class="token punctuation">\</span>
--set istio.kubeconfig.key<span class="token operator">=</span>kubeconfig
</code></pre></div><p>Note that the Istio kubeconfig must be stored in a Kubernetes secret with a data key named <code>kubeconfig</code>.
For more details on how to configure Istio multi-cluster credentials
read the <a href="https://istio.io/docs/setup/install/multicluster/shared-vpn/#credentials" target="_blank" rel="noopener noreferrer">Istio docs<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.</p> <p>Deploy Flagger for Linkerd:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm upgrade -i flagger flagger/flagger <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>linkerd <span class="token punctuation">\</span>
--set crd.create<span class="token operator">=</span>false <span class="token punctuation">\</span>
--set <span class="token assign-left variable">meshProvider</span><span class="token operator">=</span>linkerd <span class="token punctuation">\</span>
--set <span class="token assign-left variable">metricsServer</span><span class="token operator">=</span>http://linkerd-prometheus:9090
</code></pre></div><p>Deploy Flagger for App Mesh:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm upgrade -i flagger flagger/flagger <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>appmesh-system <span class="token punctuation">\</span>
--set crd.create<span class="token operator">=</span>false <span class="token punctuation">\</span>
--set <span class="token assign-left variable">meshProvider</span><span class="token operator">=</span>appmesh <span class="token punctuation">\</span>
--set <span class="token assign-left variable">metricsServer</span><span class="token operator">=</span>http://appmesh-prometheus:9090
</code></pre></div><p>You can install Flagger in any namespace as long as it can talk to the Prometheus service on port 9090.</p> <p>For ingress controllers, the install instructions are:</p> <ul><li><a href="https://docs.flagger.app/tutorials/contour-progressive-delivery" target="_blank" rel="noopener noreferrer">Contour<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://docs.flagger.app/tutorials/gloo-progressive-delivery" target="_blank" rel="noopener noreferrer">Gloo<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://docs.flagger.app/tutorials/nginx-progressive-delivery" target="_blank" rel="noopener noreferrer">NGINX<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <p>Enable <strong>Slack</strong> notifications:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm upgrade -i flagger flagger/flagger <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>istio-system <span class="token punctuation">\</span>
--set crd.create<span class="token operator">=</span>false <span class="token punctuation">\</span>
--set slack.url<span class="token operator">=</span>https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK <span class="token punctuation">\</span>
--set slack.channel<span class="token operator">=</span>general <span class="token punctuation">\</span>
--set slack.user<span class="token operator">=</span>flagger
</code></pre></div><p>Enable <strong>Microsoft Teams</strong> notifications:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm upgrade -i flagger flagger/flagger <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>istio-system <span class="token punctuation">\</span>
--set crd.create<span class="token operator">=</span>false <span class="token punctuation">\</span>
--set msteams.url<span class="token operator">=</span>https://outlook.office.com/webhook/YOUR/TEAMS/WEBHOOK
</code></pre></div><p>You can use the helm template command and apply the generated yaml with kubectl:</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token comment"># generate</span>
helm fetch --untar --untardir <span class="token builtin class-name">.</span> flagger/flagger <span class="token operator">&amp;&amp;</span>
helm template flagger ./flagger <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>istio-system <span class="token punctuation">\</span>
--set <span class="token assign-left variable">metricsServer</span><span class="token operator">=</span>http://prometheus.istio-system:9090 <span class="token punctuation">\</span>
<span class="token operator">&gt;</span> flagger.yaml
<span class="token comment"># apply</span>
kubectl apply -f flagger.yaml
</code></pre></div><p>To uninstall the Flagger release with Helm run:</p> <div class="language-text extra-class"><pre class="language-text"><code>helm delete flagger
</code></pre></div><p>The command removes all the Kubernetes components associated with the chart and deletes the release.</p> <blockquote><p><strong>Note</strong> that on uninstall the Canary CRD will not be removed. Deleting the CRD will make Kubernetes
remove all the objects owned by Flagger like Istio virtual services, Kubernetes deployments and ClusterIP services.</p></blockquote> <p>If you want to remove all the objects created by Flagger you have delete the Canary CRD with kubectl:</p> <div class="language-text extra-class"><pre class="language-text"><code>kubectl delete crd canaries.flagger.app
</code></pre></div><h2 id="install-grafana-with-helm"><a href="#install-grafana-with-helm" aria-hidden="true" class="header-anchor">#</a> Install Grafana with Helm</h2> <p>Flagger comes with a Grafana dashboard made for monitoring the canary analysis.</p> <p>Deploy Grafana in the <em><strong>istio-system</strong></em> namespace:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>helm upgrade -i flagger-grafana flagger/grafana <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>istio-system <span class="token punctuation">\</span>
--set <span class="token assign-left variable">url</span><span class="token operator">=</span>http://prometheus.istio-system:9090 <span class="token punctuation">\</span>
--set <span class="token assign-left variable">user</span><span class="token operator">=</span>admin <span class="token punctuation">\</span>
--set <span class="token assign-left variable">password</span><span class="token operator">=</span>change-me
</code></pre></div><p>Or use helm template command and apply the generated yaml with kubectl:</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token comment"># generate</span>
helm fetch --untar --untardir <span class="token builtin class-name">.</span> flagger/grafana <span class="token operator">&amp;&amp;</span>
helm template flagger-grafana ./grafana <span class="token punctuation">\</span>
--namespace<span class="token operator">=</span>istio-system <span class="token punctuation">\</span>
<span class="token operator">&gt;</span> flagger-grafana.yaml
<span class="token comment"># apply</span>
kubectl apply -f flagger-grafana.yaml
</code></pre></div><p>You can access Grafana using port forwarding:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kubectl -n istio-system port-forward svc/flagger-grafana <span class="token number">3000</span>:80
</code></pre></div><h2 id="install-flagger-with-kustomize"><a href="#install-flagger-with-kustomize" aria-hidden="true" class="header-anchor">#</a> Install Flagger with Kustomize</h2> <p>As an alternative to Helm, Flagger can be installed with Kustomize.</p> <p><strong>Service mesh specific installers</strong></p> <p>Install Flagger for Istio:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kubectl apply -k github.com/weaveworks/flagger//kustomize/istio
</code></pre></div><p>This deploys Flagger in the <code>istio-system</code> namespace and sets the metrics server URL to Istio's Prometheus instance.</p> <p>Note that you'll need kubectl 1.14 to run the above the command or you can download
the <a href="https://github.com/kubernetes-sigs/kustomize/releases" target="_blank" rel="noopener noreferrer">kustomize binary<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> and run:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kustomize build github.com/weaveworks/flagger//kustomize/istio <span class="token operator">|</span> kubectl apply -f -
</code></pre></div><p>Install Flagger for AWS App Mesh:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kubectl apply -k github.com/weaveworks/flagger//kustomize/appmesh
</code></pre></div><p>This deploys Flagger and sets the metrics server URL to App Mesh's Prometheus instance.</p> <p>Install Flagger for Linkerd:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kubectl apply -k github.com/weaveworks/flagger//kustomize/linkerd
</code></pre></div><p>This deploys Flagger in the <code>linkerd</code> namespace and sets the metrics server URL to Linkerd's Prometheus instance.</p> <p>If you want to install a specific Flagger release, add the version number to the URL:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kubectl apply -k github.com/weaveworks/flagger//kustomize/linkerd?ref<span class="token operator">=</span><span class="token number">0.18</span>.0
</code></pre></div><p><strong>Generic installer</strong></p> <p>Install Flagger and Prometheus:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kubectl apply -k github.com/weaveworks/flagger//kustomize/kubernetes
</code></pre></div><p>This deploys Flagger and Prometheus in the <code>flagger-system</code> namespace, sets the metrics server URL
to <code>http://flagger-prometheus.flagger-system:9090</code> and the mesh provider to <code>kubernetes</code>.</p> <p>The Prometheus instance has a two hours data retention and is configured to scrape all pods in your cluster
that have the <code>prometheus.io/scrape: &quot;true&quot;</code> annotation.</p> <p>To target a different provider you can specify it in the canary custom resource:</p> <div class="language-yaml extra-class"><pre class="language-yaml"><code><span class="token key atrule">apiVersion</span><span class="token punctuation">:</span> flagger.app/v1beta1
<span class="token key atrule">kind</span><span class="token punctuation">:</span> Canary
<span class="token key atrule">metadata</span><span class="token punctuation">:</span>
<span class="token key atrule">name</span><span class="token punctuation">:</span> app
<span class="token key atrule">namespace</span><span class="token punctuation">:</span> test
<span class="token key atrule">spec</span><span class="token punctuation">:</span>
<span class="token comment"># can be: kubernetes, istio, linkerd, appmesh, nginx, gloo</span>
<span class="token comment"># use the kubernetes provider for Blue/Green style deployments</span>
<span class="token key atrule">provider</span><span class="token punctuation">:</span> nginx
</code></pre></div><p><strong>Customized installer</strong></p> <p>Create a kustomization file using flagger as base:</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">cat</span> <span class="token operator">&gt;</span> kustomization.yaml <span class="token operator">&lt;&lt;</span><span class="token string">EOF
namespace: istio-system
bases:
- github.com/weaveworks/flagger/kustomize/base/flagger
patchesStrategicMerge:
- patch.yaml
EOF</span>
</code></pre></div><p>Create a patch and enable Slack notifications by setting the slack channel and hook URL:</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">cat</span> <span class="token operator">&gt;</span> patch.yaml <span class="token operator">&lt;&lt;</span><span class="token string">EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: flagger
spec:
template:
spec:
containers:
- name: flagger
args:
- -mesh-provider=istio
- -metrics-server=http://prometheus.istio-system:9090
- -slack-user=flagger
- -slack-channel=alerts
- -slack-url=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
EOF</span>
</code></pre></div><p>Install Flagger with Slack:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>kubectl apply -k <span class="token builtin class-name">.</span>
</code></pre></div><p>If you want to use MS Teams instead of Slack, replace <code>-slack-url</code> with <code>-msteams-url</code> and set the webhook address
to <code>https://outlook.office.com/webhook/YOUR/TEAMS/WEBHOOK</code>.</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/intro/faq.html" class="prev">
FAQ
</a></span> <span class="next"><a href="/install/flagger-install-on-google-cloud.html">
On GKE Istio
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/assets/js/app.cd972522.js" defer></script><script src="/assets/js/2.ba5bf77c.js" defer></script><script src="/assets/js/13.9104349a.js" defer></script>
</body>
</html>