gitkube icon indicating copy to clipboard operation
gitkube copied to clipboard

Deploy Helm Apps

Open marcellodesales opened this issue 6 years ago • 2 comments

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
  • 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

marcellodesales avatar Mar 16 '18 02:03 marcellodesales

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 avatar Mar 16 '18 07:03 0x777

@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:

  1. Identify if there's a Helm Spec
  2. 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 URL myapp.cluster.name.com
  1. 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, for master branch, or SHA.myapp.cluster.name.com for the SHA, develop.myapp.cluster.name.com for the develop branch, etc.
  • The mapping for a gitflow mechanism should be provided in a metadata file like gitkube.yml
  1. Execute the helm install with the URL for installation above

marcellodesales avatar Mar 29 '18 06:03 marcellodesales