Deploy a GitOps application using FluxCD
This tutorial demonstrates how to setup a GitOps application using FluxCD. In this tutorial, the application will be deployed onto the same cluster that Dispatch is installed on.
Prerequisites
This tutorial assumes that you have followed the steps on the following pages:
Setup credentials
First, we need to create credentials that FluxCD can use. You can use either the Dispatch interface or the CLI for this.
Using the CLI
Run the CLI command to create a service account and then login:
dispatch serviceaccount create builder
dispatch login github --service-account=builder --token $GITHUB_TOKEN --user $GITHUB_USERNAME
Replace $GITHUB_TOKEN
and $GITHUB_USERNAME
with your Github token and username, respectively.
The Dispatch CLI will output the name of the Kubernetes secret that was created. Copy this for the next step.
Using the interface
To login via the web interface, navigate to the Dispatch interface wherever you have it deployed.
Click on the Continuous Integration (CI)
tab on the sidebar, and then click on the Secrets
tab. Click Create Secret
to create a new secret.
Fill in the form to login to your Github, GitLab, or Bitbucket account and copy the name of the secret you created.
Create the repository
Now that we have logged in, we can create the GitOps repository to deploy our application:
dispatch cd gitops-repository create --repository-url $REPOSITORY_URL --scm-secret $SCM_SECRET my-app
Replace $SCM_SECRET
with the secret name from the previous step. Replace $REPOSITORY_URL
with the URL to the repository you want to deploy. You can also set the --path
flag to deploy from a non-root directory or --revision
flags to deploy from a non-default directory.
Checking deployment status
In the previous step, the Dispatch CLI creates a GitopsRepository
object called my-app
. Once this object is created, the Dispatch repository-controller
creates an Addon
and GitRepository
object. The Addon
object deploys Flux for your application, and the GitRepository
object configures Flux.
We can check the deployment status of Flux by checking the created addon. It will be an addon called flux
in the same namespace as your application, we should see that the addon has been deployed:
$ kubectl get addon flux
NAME READY STAGE REVISION
flux true deployed
Next, we can check the created GitRepository
:
$ kubectl get gitrepository my-app
NAME URL READY STATUS AGE
my-app https://github.com/mesosphere/gitopsdemo.git True Fetched revision: master/93fb3583190384c77efbf90730375e1e38387569 19m
If your application has not deployed correctly, you can inspect it by using kubectl describe
, which will show any errors that Flux encountered deploying your application:
$ kubectl describe gitrepository my-app
Name: my-app
Namespace: default
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal error 12m (x16 over 14m) source-controller unable to clone 'https://github.com/mesosphere/gitopsdemo.git', error: remote repository is empty