Flux

by  FluxCD

Flux is a GitOps operator for application deployment automation on Kubernetes. Flux automates synchronisation between a version control repository and a cluster. If you make any changes to your repository, those changes are automatically deployed to your cluster.

TL;DR:

  • Installing, updating or removing follows Kubestack's GitOps flow.
  • Instructions assume the default repository layout.
  • Bases can be consumed as-is or customized.
  • Step-by-step instructions are framework specific but bases can be used independently.

Install

  1. Vendor the base

    # Run these commands from the root of your Kubestack infra repository
    wget https://storage.googleapis.com/catalog.kubestack.com/flux-v1.21.0-kbst.0.zip
    unzip -d manifests/bases/ flux-v1.21.0-kbst.0.zip
    rm flux-v1.21.0-kbst.0.zip
  2. Include resource in apps overlay

    cd manifests/overlays/apps
    kustomize edit add resource ../../bases/flux/base
  3. Commit and push

    cd -
    git checkout -b add-flux
    git add manifests/bases/flux manifests/overlays/apps/kustomization.yaml
    git commit -m "Add flux v1.21.0-kbst.0 base"
    git push origin add-flux
  4. Review PR and merge

    Finally, review and merge the PR into master. Once it's been successfully applied against the Ops-Cluster set a prod-deploy tag to also apply the change against the Apps-Cluster.

Update

To update the operator delete the previously vendored base and then vendor the new version.

  1. Delete the previous vendored version

    # Run these commands from the root of your Kubestack infra repository
    rm -r manifests/bases/flux
  2. Vendor the new version

    # Run these commands from the root of your Kubestack infra repository
    wget https://storage.googleapis.com/catalog.kubestack.com/flux-v1.21.0-kbst.0.zip
    unzip -d manifests/bases/ flux-v1.21.0-kbst.0.zip
    rm flux-v1.21.0-kbst.0.zip
  3. Commit and push

    git checkout -b update-flux
    git add manifests/bases/flux
    git commit -m "Update flux base to v1.21.0-kbst.0"
    git push origin update-flux

Remove

Operators often create resources based on custom objects. When removing an operator, follow a two-step process to ensure operator provisioned resources are purged properly.

  1. Remove all the operator's custom objects.
  2. Once the operator had time to de-provision all resources it created, follow the instructions below to remove the operator itself.
  1. Remove resource from apps overlay

    cd manifests/overlays/apps
    kustomize edit remove resource ../../bases/flux/base
  2. Delete the vendored base from your repository

    cd -
    # Run these commands from the root of your Kubestack infra repository
    rm -r manifests/bases/flux
  3. Commit and push

    git checkout -b remove-flux
    git add manifests/bases/flux
    git commit -m "Remove flux base"
    git push origin remove-flux