mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
152 lines
30 KiB
HTML
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">&&</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">></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">&&</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">></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: "true"</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">></span> kustomization.yaml <span class="token operator"><<</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">></span> patch.yaml <span class="token operator"><<</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>
|