gitkube
gitkube copied to clipboard
Deploy Helm Apps
Requirement
- Given a the deployment model, specify a Helm Application to be deployed.
- "Any" application from https://hub.kubeapps.com/ should be deployed automatically.
Design
- Specify the name of the
Helm Chart
to deploy - Identify the type of ingress instance the cluster contains
- Use default
ingress nginx
- This provides a default ingress to the cloud provider
- Use default
- Identify if the cluster has
tls secret
- This provides HTTPS access to the service
- Identify if the cluster has
external-dns
- This provides Route53 endpoint to the service
Currently, gitkube simplifies this workflow
docker build -t ...
docker push ...
kubectl set-image ...
with
git push remote master
What is your current workflow with a kubeapps application and how do you like to see it automated?
@0x777 So, kubeapps offers a way to deploy a Helm Application from a given Helm Chart Registry. Given that and your workflow, what I was thinking is that we could do the following:
git push remote branch
Still should guarantee what gitkube does already, but for Helm Apps, as follows:
- Identify if there's a Helm Spec
- Compute the actual URL of the application based on the Cluster Config + External DNS name
- Through external dns, we get the endpoint for the cluster Cluster DNS
cluster.name.com
- With the helm settings
ingress.host
, we can compute the URLmyapp.cluster.name.com
- Push the committed application to the associated Helm Chart Registry under the
SHA
version associated with the commit
- Pushes to the registry with a known URL for installation
- Add extra metadata for the branch, tag, etc
- Final url for the app could be either
myapp.cluster.name.com
, formaster branch
, orSHA.myapp.cluster.name.com
for the SHA,develop.myapp.cluster.name.com
for thedevelop branch
, etc. - The mapping for a gitflow mechanism should be provided in a metadata file like
gitkube.yml
- Execute the helm install with the URL for installation above