The k8s-bootstrapper leverages the Argo CD's App of Apps pattern. We use Helm to achieve this.
# Bootstrap
.
├── Chart.yaml # boiler plate chart.yaml
├── README.md
├── bootstrap-resources # ingress/cluster issuer
├── bootstrap.yaml # parent app
├── templates # child app templates (one file per app)
└── values.yaml # bootstrapper chart overrides: enable/disable apps
In this case, the parent app "bootstrap" is installed along with its child apps which are rendered from templates/
and bootstrap-resources/
directories.
By default, we have disabled most of the apps, but you can easily enable them by setting the flags in the values.yaml
# values.yaml
# Global
domain:
storageClass: "do-block-storage"
# Application specific
bots:
enable: false
guestbook:
enable: false
kyverno:
enable: false
logging:
enable: false
observability:
enable: false
pdkey:
storageSize: 50Gi
retention: 5d
traefik:
enable: true
trivy:
enable: false
Note: Save changes to the file as deemed fit and push the changes to your git repository. The bootstrapper follows a strict GitOps workflow, so all the changes need to be pushed to git to reflect the changes in the Kubernetes cluster. If you made changes, update bootstrap.yaml to use your
repoURL
.
# Let the bootstrap begin!
kubectl apply -f bootstrap/bootstrap.yaml
# Get the argo password
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
# Expose the argocd-server and login with the credentials on localhost:8080
kubectl -n argocd port-forward svc/argocd-server 8080:80
# Open the browser and go to localhost:8080 to access Argo CD UI
# Login with username: `admin,` password: `paste the value from the previous step.`