Files
flagger/kustomize
Sanskar Jaiswal 45618b90db feat: add option to generate headless services
Add a new field `.spec.service.headless` which if set to true results in
Flagger generating headless Services, i.e. with the Service's
`.spec.clusterIP` set to None.

Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
2025-01-14 14:09:12 +05:30
..
2023-09-15 12:08:23 -07:00
2023-08-21 12:12:03 -04:00
2024-12-16 19:27:19 +02:00
2021-08-20 14:25:47 -07:00

Flagger Kustomize installer

As an alternative to Helm, Flagger can be installed with Kustomize.

Prerequisites

  • Kubernetes cluster >=1.13.0
  • Kustomize >=3.6.0

Service mesh specific installers

Install Flagger for Istio:

kustomize build https://github.com/fluxcd/flagger/kustomize/istio?ref=main | kubectl apply -f -

This deploys Flagger in the istio-system namespace and sets the metrics server URL to Istio's Prometheus instance.

Install Flagger for AWS App Mesh:

kustomize build https://github.com/fluxcd/flagger/kustomize/appmesh?ref=main | kubectl apply -f -

This deploys Flagger in the appmesh-system namespace and sets the metrics server URL to App Mesh Prometheus instance.

Install Flagger for Linkerd:

kustomize build https://github.com/fluxcd/flagger/kustomize/linkerd?ref=main | kubectl apply -f -

This deploys Flagger in the linkerd namespace and sets the metrics server URL to linkerd-viz extension's Prometheus instance which lives under linkerd-viz namespace by default.

Install Flagger for Open Service Mesh:

kustomize build https://github.com/fluxcd/flagger/kustomize/osm?ref=main | kubectl apply -f -

This deploys Flagger in the osm-system namespace and sets the metrics server URL to OSM's Prometheus instance.

If you want to install a specific Flagger release, add the version number to the URL:

kustomize build https://github.com/fluxcd/flagger/kustomize/linkerd?ref=v1.0.0 | kubectl apply -f -

Install Flagger for Contour:

kustomize build https://github.com/fluxcd/flagger/kustomize/contour?ref=main | kubectl apply -f -

This deploys Flagger and Prometheus in the projectcontour namespace and sets Prometheus to scrape Contour's Envoy instances.

Generic installer

Install Flagger and Prometheus:

kustomize build https://github.com/fluxcd/flagger/kustomize/kubernetes?ref=main | kubectl apply -f -

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 different provider you can specify it in the canary custom resource:

apiVersion: flagger.app/v1alpha3
kind: Canary
metadata:
  name: app
  namespace: test
spec:
  # can be: kubernetes, istio, linkerd, appmesh, nginx, skipper, gloo, osm
  # use the kubernetes provider for Blue/Green style deployments
  provider: nginx

You'll need Prometheus when using Flagger with AWS App Mesh, Gloo, NGINX or Skipper ingress controller. The Prometheus instance has a two hours data retention and is configured to scrape all pods in your cluster that have the prometheus.io/scrape: "true" annotation.

Customise the installation

Create a kustomization file using Flagger as base and patch the container args:

cat > kustomization.yaml <<EOF
namespace: istio-system
bases:
  - github.com/fluxcd/flagger/kustomize/base/flagger
patches:
- target:
    kind: Deployment
    name: flagger
  patch: |-
    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

Install Flagger for Istio with Slack notifications:

kustomize build . | kubectl apply -f -