Gitkube is a tool for building and deploying Docker images on Kubernetes using
After a simple initial setup, users can simply keep
git push-ing their repos to build and deploy to Kubernetes automatically.
Gitkube will run on any Kubernetes vendor/distribution AS IS. In case you find any difficulties in the setup, please comment on #33
kubectl create -f https://raw.githubusercontent.com/hasura/gitkube/master/manifests/gitkube-setup.yaml #expose gitkubed service kubectl --namespace kube-system expose deployment gitkubed --type=LoadBalancer --name=gitkubed
Install Gitkube CLI:
curl https://raw.githubusercontent.com/hasura/gitkube/master/gimme.sh | bash
scoop install gitkube
Or download the latest release and add it to your
Use Gitkube CLI to install Gitkube on the cluster:
git push <remote> master
User should have a git repo with source code and a Dockerfile. User should also create a base K8s deployment for the application.
A Remote resource consists of 3 parts:
Here is a typical spec for a Remote:
apiVersion: gitkube.sh/v1alpha1 kind: Remote metadata: name: sampleremote namespace: default spec: # Insert ssh-keys for allowing users to git push authorizedKeys: - "ssh-rsa your-ssh-public-key" # Provide registry details: https://github.com/hasura/gitkube/blob/master/docs/registry.md registry: url: "docker.io/user" credentials: secretRef: regsecret # Name of docker-registry secret # Define deployment rules deployments: - name: www # Name of K8s deployment which is updated on git push containers: - name: www # Name of container in the deployment which is built during git push path: example/www # Docker build context path in the git repo dockerfile: example/www/Dockerfile # Location of Dockerfile for the source code
Once a Remote is created, it gets a git remote URL which you can find in its
$ kubectl get remote sampleremote -o yaml ... status: remoteUrl: ssh://[email protected]/~/git/default-sampleremote remoteUrlDesc: ""
Add the generated
remoteUrl in git
$ git remote add sampleremote ssh://[email protected]/~/git/default-sampleremote
$ git push sampleremote master
Follow this example repo for more workflows with gitkube.
Gitkube has three components:
Gitkube is an open source project licensed under Apache License 2.0
Contributions are welcome.
Join the Gitkube channel in the Kubernetes Slack group
Follow @gitkube to stay updated.
Gitkube logo concept and design by Samudra Gupta.