Gitkube is a tool for building and deploying docker images on Kubernetes using git push.
After a simple initial setup, users can simply keep git push-ing their repos to build and deploy to Kubernetes automatically.
Gitkube alternatives and similar tools
Based on the "Automation" category.
Alternatively, view Gitkube alternatives based on common mentions on social networks and blogs.
Bazel9.3 10.0 L3 Gitkube VS Bazela fast, scalable, multi-language and extensible build system
The effortless CI/CD framework that runs anywhereSuper simple CI/CD framework with repeatable builds that you write once and run anywhere – laptop, remote, or any CI
dagger8.0 9.5 Gitkube VS daggerA programmable CI/CD engine that runs your pipelines in containers
Flux7.9 7.6 Gitkube VS FluxSuccessor: https://github.com/fluxcd/flux2
Rake6.4 5.3 L4 Gitkube VS RakeA make-like build utility for Ruby.
Glazier5.1 5.5 L5 Gitkube VS GlazierA tool for automating the installation of the Microsoft Windows operating system on various device platforms.
Copper3.1 0.0 Gitkube VS CopperA configuration file validator for Kubernetes.
pipelines2.9 6.5 Gitkube VS pipelinesBuild pipelines for automation, deployment, testing...
BoltYou can use Bolt to run one-off tasks, scripts to automate the provisioning and management of some nodes, you can use Bolt to move a step beyond scripts, and make them shareable.
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Gitkube or a related project?
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.
When should I use gitkube?
- Ideal for development where you can push your WIP branch to the cluster to test.
- Reference implementation for writing git-based automation on your server. Fork this repo and create your own CRD + controller + git remote hook that can do things on the Kubernetes cluster.
- No dependencies except native tooling (git, kubectl)
- Plug and play installation
- Simple public key based authentication
- RBAC ready - Control access to git remotes using RBAC
- Support for namespace based multi-tenancy - Remotes can only deploy to their own namespace
- No assumptions about repository structure
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
Using gitkube CLI (DEPRECATED)
Install Gitkube CLI:
Use Gitkube CLI to install Gitkube on the cluster:
- Local dev: User creates a base git repo for the application with Dockerfile and K8s deployment
- Setting Remote: User defines a spec for Remote containing the rules for
- Deploying application: Once a Remote is setup, application can be deployed to K8s using
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:
- authorizedKeys: List of ssh-keys for authorizing
- registry: Details of docker registry where images are pushed post-build.
- deployments: Spec for building docker image and updating corresponding K8s deployment.
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.
How it works
Gitkube has three components:
- Remote: Custom resource defined by a K8s CRD
- gitkube-controller: Controller that manages Remote objects and propogates changes to gitkubed
- gitkubed: Git host that builds docker image from the repo and rolls out deployment
Gitkube is an open source project licensed under Apache License 2.0
Contributions are welcome.
Community and Support
Join the Gitkube channel in the Kubernetes Slack group
This project has come out of the work at hasura.io. Current maintainers @Tirumarai, @shahidh_k.
Follow @gitkube to stay updated.
Gitkube logo concept and design by Samudra Gupta.
*Note that all licence references and agreements mentioned in the Gitkube README section above are relevant to that project's source code only.