GitOps Infrastructure & Application Delivery Platform
Install | Twitter | LinkedIn | Slack | Blog
The Kubefirst CLI is a cloud provisioning tool. With simple setup and two CLI commands, we create a kubernetes cluster managed with automated Infrastructure as Code, GitOps asset management and application delivery, secrets management, a sample application delivered to development, staging, and production, and so much more. It's an open source platform ready to be customized to suit your company's needs.
In order to install Kubefirst it's required to have a public domain. For root domains, setting the --hosted-zone-name
is enough, in case you want to use subdomains, and the domain is hosted on AWS, please follow the
AWS documentation.
Provisioned services on root domain will be hosted as:
argocd.example.com
gitlab.example.com
...
Provisioned services on subdomains will be hosted as:
argocd.subdomain.example.com
gitlab.subdomain.example.com
...
brew install kubefirst/tools/kubefirst
Since Kubefirst 1.9 version, GitHub is also available as a Git platform provider alongside GitLab.
localhost enables Kubefirst to be installed in your local machine, not requiring an AWS account, using localhost you can:
kubefirst local
To prepare the installation using GitLab you can:
kubefirst init \
--cloud aws \
--profile default \
--region eu-central-1 \
--admin-email [email protected] \
--cluster-name your_cluster_name \
--hosted-zone-name domain.example \
--s3-suffix you-s3-bucket-name \
--gitops-branch main \
--metaphor-branch main \
--git-provider gitlab \
--aws-nodes-spot
To prepare the installation using GitHub you can:
export KUBEFIRST_GITHUB_AUTH_TOKEN=your_github_auth_token
kubefirst init \
--admin-email [email protected] \
--cloud aws \
--hosted-zone-name example.com \
--region eu-central-1 \
--cluster-name example_com \
--profile default \
--github-user yourgithubhandle \
--github-owner yourgithuborganization \
--gitops-branch main \
--metaphor-branch main
At this point, everything is ready to start provisioning the cloud services, and for that run:
kubefirst cluster create
It will destroy the kubefirst management cluster, and clean up every change made in the cloud.
kubefirst cluster destroy
aws eks update-kubeconfig --name your_cluster_name
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
kubectl -n argocd port-forward svc/argocd-server 8080:80
Kubefirst provides extra tooling for handling the provisioning work.
Command | Description |
---|---|
clean | removes all kubefirst resources locally for new execution |
cluster create | create a kubefirst management cluster |
cluster destroy | destroy the kubefirst management cluster |
info | provides general Kubefirst setup data |
init | initialize your local machine to execute create |
version | print the version number for kubefirst-cli" |
If you want to run the main branch (go run . init ...
, for example), you need to inform the version you are trying to use. To achieve this, you need to pass the ldflags
in your command: go run -ldflags="-X github.com/kubefirst/kubefirst/configs.K1Version=1.9.3" . version
.
We use external repositories during the provisioning process, and the version/tag in these repositories matches with the version of kubefirst cli; due to this approach, you need to perform the steps described above to run the code from the source.
Did you know our superhero mascot K-Ray gets its frictionless superpowers from a healthy diet of GitHub stars? K-Ray gets soooo hungry too - you wouldn't believe it. Feed K-Ray a GitHub star ⭐ above to bookmark our project and keep K-Ray happy!!