arkade - Your one-stop CLI for Kubernetes
Open Source Kubernetes Marketplace
Under MIT License
By alexellis
Open Source Kubernetes Marketplace
Under MIT License
By alexellis
arkade - The Open Source Kubernetes Marketplace
arkade provides a portable marketplace for downloading your favourite devops CLIs and installing helm charts, with a single command.
You can also download CLIs like kubectl
, kind
, kubectx
and helm
faster than you can type "apt-get/brew update".
With over 40 helm charts and apps available for Kubernetes, gone are the days of contending with dozens of README files just to set up a development stack with the usual suspects like ingress-nginx, Postgres and cert-manager.
--set
arkade
compare to helm
?arkade get
?Here's what Ivan Velichko, SRE @ Booking.com has to say about arkade:
I was setting up a new dev environment yesterday. Kind, helm, kustomize, kubectl, all this stuff. My take is - arkade is highly underappreciated.
I'd spend an hour in the past to install such tools. With arkade it was under ten minutes.
Greg runs Fullstack JS and is a JavaScript developer, he says:
This is real magic get #kubernetes up and going in a second; then launch #openfaas a free better than lambda solution that uses docker images.
@arghzero says:
for getting the basics installed, nothing beats arkade
it can install commonly used cli tools like kubectl locally for you, as well as common k8s pkgs like ingress-nginx or portainer
@Yankexe says:
It's hard to use K8s without Arkade these days.
My team at @lftechnology absolutely loves it.
From Michael Cade @ Kasten
I finally got around to installing Arkade, super simple!
quicker to install this than the argocli standalone commands, but there are lots of handy little tools in there.
also, the neat little part about arkade, not only does it make it easy to install a ton of different apps and CLIs you can also get the info on them as well pretty quickly.
```bash
sudo
and move the binary yourselfcurl -sLS https://get.arkade.dev | sudo sh
arkade --help
ark --help # a handy alias
curl -sLS https://get.arkade.dev | sh
```
Windows users: arkade requires bash to be available, therefore Windows users can install Git Bash.
An alias of ark
is created at installation time, so you can also run ark install APP
Here's a few examples of apps you can install, for a complete list run: arkade install --help
.
arkade install
- install an apparkade info
- the post-install screen for an apparkade get
- install a CLI tool such as kubectl
or faas-cli
arkade update
- print instructions to update arkade itselfarkade downloads the correct version of a CLI for your OS and CPU.
With automatic detection of: Windows / MacOS / Linux / Intel / ARM.
bash
arkade get APP
arkade get APP --version VERSION
arkade get [email protected]
| TOOL | DESCRIPTION |
|------------------|--------------------------------------------------------------------------------------------------------------------|
| argocd | Declarative, GitOps continuous delivery tool for Kubernetes. |
| argocd-autopilot | An opinionated way of installing Argo-CD and managing GitOps repositories. |
| arkade | Portable marketplace for downloading your favourite devops CLIs and installing helm charts, with a single command. |
| buildx | Docker CLI plugin for extended build capabilities with BuildKit. |
| civo | CLI for interacting with your Civo resources. |
| cosign | Container Signing, Verification and Storage in an OCI registry. |
| dive | A tool for exploring each layer in a docker image. |
| docker-compose | Define and run multi-container applications with Docker. |
| doctl | Official command line interface for the DigitalOcean API. |
| faas-cli | Official CLI for OpenFaaS. |
| flux | Continuous Delivery solution for Kubernetes powered by GitOps Toolkit. |
| gh | GitHub’s official command line tool. |
| goreleaser | Deliver Go binaries as fast and easily as possible |
| helm | The Kubernetes Package Manager: Think of it like apt/yum/homebrew for Kubernetes. |
| helmfile | Deploy Kubernetes Helm Charts |
| hugo | Static HTML and CSS website generator. |
| influx | InfluxDB’s command line interface (influx) is an interactive shell for the HTTP API. |
| inlets-pro | Cloud Native Tunnel for HTTP and TCP traffic. |
| inletsctl | Automates the task of creating an exit-server (tunnel server) on public cloud infrastructure. |
| istioctl | Service Mesh to establish a programmable, application-aware network using the Envoy service proxy. |
| jq | jq is a lightweight and flexible command-line JSON processor |
| k0s | Zero Friction Kubernetes |
| k0sctl | A bootstrapping and management tool for k0s clusters |
| k3d | Helper to run Rancher Lab's k3s in Docker. |
| k3sup | Bootstrap Kubernetes with k3s over SSH < 1 min. |
| k9s | Provides a terminal UI to interact with your Kubernetes clusters. |
| kail | Kubernetes log viewer. |
| kgctl | A CLI to manage Kilo, a multi-cloud network overlay built on WireGuard and designed for Kubernetes. |
| kim | Build container images inside of Kubernetes. (Experimental) |
| kind | Run local Kubernetes clusters using Docker container nodes. |
| kops | Production Grade K8s Installation, Upgrades, and Management. |
| krew | Package manager for kubectl plugins. |
| kube-bench | Checks whether Kubernetes is deployed securely by running the checks documented in the CIS Kubernetes Benchmark. |
| kubebuilder | Framework for building Kubernetes APIs using custom resource definitions (CRDs). |
| kubectl | Run commands against Kubernetes clusters |
| kubectx | Faster way to switch between clusters. |
| kubens | Switch between Kubernetes namespaces smoothly. |
| kubescape | kubescape is the first tool for testing if Kubernetes is deployed securely as defined in Kubernetes Hardening Guidance by to NSA and CISA |
| kubeseal | A Kubernetes controller and tool for one-way encrypted Secrets |
| kubetail | Bash script to tail Kubernetes logs from multiple pods at the same time. |
| kustomize | Customization of kubernetes YAML configurations |
| linkerd2 | Ultralight, security-first service mesh for Kubernetes. |
| mc | MinIO Client is a replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage. |
| metal | Official Equinix Metal CLI |
| minikube | Runs the latest stable release of Kubernetes, with support for standard Kubernetes features. |
| nats | Utility to interact with and manage NATS. |
| nerdctl | Docker-compatible CLI for containerd, with support for Compose |
| nova | Find outdated or deprecated Helm charts running in your cluster. |
| opa | General-purpose policy engine that enables unified, context-aware policy enforcement across the entire stack. |
| osm | Open Service Mesh uniformly manages, secures, and gets out-of-the-box observability features. |
| pack | Build apps using Cloud Native Buildpacks. |
| packer | Build identical machine images for multiple platforms from a single source configuration. |
| polaris | Run checks to ensure Kubernetes pods and controllers are configured using best practices. |
| popeye | Scans live Kubernetes cluster and reports potential issues with deployed resources and configurations. |
| porter | With Porter you can package your application artifact, tools, etc. as a bundle that can distribute and install. |
| rekor-cli | Secure Supply Chain - Transparency Log |
| stern | Multi pod and container log tailing for Kubernetes. |
| terraform | Infrastructure as Code for major cloud providers. |
| tfsec | Security scanner for your Terraform code |
| tkn | A CLI for interacting with Tekton. |
| trivy | Vulnerability Scanner for Containers and other Artifacts, Suitable for CI. |
| vagrant | Tool for building and distributing development environments. |
| yq | Portable command-line YAML processor. |
Note to contributors, run arkade get --output markdown
to generate this list
This is a time saver compared to searching for download pages every time you need a tool.
Think of arkade get TOOL
as a doing for CLIs, what arkade install
does for helm.
Adding a new tool for download is as simple as editing tools.go.
If you have Docker installed, then you can install Kubernetes using KinD in a matter of moments:
```bash
arkade get kubectl
arkade get kind
kind create cluster
```
You can also download k3d k3s in the same way with arkade get k3d
.
No need to worry about whether you're installing to Intel or ARM architecture, the correct values will be set for you automatically.
bash
arkade install openfaas --gateways 2 --load-balancer false
Remember how awkward it was last time you installed the Kubernetes dashboard? And how you could never remember the command to get the token to log in?
bash
arkade install kubernetes-dashboard
Forgot your token? arkade info kubernetes-dashboard
Prefer Portainer? Just run: arkade install portainer
Run arkade uninstall
or arkade delete
for more information on how to remove applications from a Kubernetes cluster.
Normally up to a dozen commands (including finding and downloading helm), now just one. No searching for the correct CRD to apply, no trying to install helm, no trying to find the correct helm repo to add:
bash
arkade install cert-manager
Other common tools:
```bash
arkade install ingress-nginx
arkade install metrics-server
```
We use strongly typed Go CLI flags, so that you can run --help
instead of trawling through countless Helm chart README files to find the correct --set
combination for what you want.
```bash
arkade install ingress-nginx --help
Install ingress-nginx. This app can be installed with Host networking for
cases where an external LB is not available. please see the --host-mode
flag and the ingress-nginx docs for more info
Usage:
arkade install ingress-nginx [flags]
Aliases:
ingress-nginx, nginx-ingress
Examples:
arkade install ingress-nginx --namespace default
Flags:
-h, --help help for ingress-nginx
--host-mode If we should install ingress-nginx in host mode.
-n, --namespace string The namespace used for installation (default "default")
--update-repo Update the helm repo (default true)
```
--set
You can also set helm overrides, for apps which use helm via --set
bash
ark install openfaas --set faasIdler.dryRun=false
After installation, an info message will be printed with help for usage, you can get back to this at any time via:
bash
arkade info <NAME>
Here's how you can get a self-hosted Docker registry with TLS and authentication in just 5 commands on an empty cluster:
bash
arkade install ingress-nginx
arkade install cert-manager
arkade install docker-registry
arkade install docker-registry-ingress \
--email [email protected] \
--domain reg.example.com
The same for OpenFaaS would look like this:
bash
arkade install ingress-nginx
arkade install cert-manager
arkade install openfaas
arkade install openfaas-ingress \
--email [email protected] \
--domain reg.example.com
And if you're running on a private cloud, on-premises or on your laptop, you can simply add the inlets-operator using inlets PRO to get a secure TCP tunnel and a public IP address.
bash
arkade install inlets-operator \
--access-token $HOME/digitalocean-token \
--region lon1 \
--license $(cat $HOME/license.txt)
You can view the various apps available with arkade install / --help
, more are available when you run the command yourself.
```bash
arkade install --help
ark --help
Examples:
arkade install
arkade install openfaas --helm3 --gateways=2
arkade install inlets-operator --token-file $HOME/do-token
```
Apps:
| TOOL | DESCRIPTION |
|-------------------------|---------------------------------------------------------------------|
| cert-manager | Install cert-manager |
| portainer | Install portainer to visualise and manage containers |
| influxdb | Install influxdb |
| kyverno | Install Kyverno |
| redis | Install redis |
| jenkins | Install jenkins |
| argocd | Install argocd |
| kong-ingress | Install kong-ingress for OpenFaaS |
| gitlab | Install GitLab |
| mqtt-connector | Install mqtt-connector for OpenFaaS |
| docker-registry-ingress | Install registry ingress with TLS |
| openfaas-loki | Install Loki-OpenFaaS and Configure Loki logs provider for OpenFaaS |
| nats-connector | Install OpenFaaS connector for NATS |
| nfs-provisioner | Install nfs client provisioner |
| nginx-inc | Install nginx-inc for OpenFaaS |
| opa-gatekeeper | Install Open Policy Agent (OPA) Gatekeeper |
| cassandra | Install cassandra |
| crossplane | Install Crossplane |
| loki | Install Loki for monitoring and tracing |
| registry-creds | Install registry-creds |
| falco | Install Falco |
| linkerd | Install linkerd |
| kafka-connector | Install kafka-connector for OpenFaaS |
| tekton | Install Tekton pipelines and dashboard |
| OSM | Install osm |
| sealed-secret | Install sealed-secrets |
| consul-connect | Install Consul Service Mesh |
| kafka | Install Confluent Platform Kafka |
| grafana | Install grafana |
| mongodb | Install mongodb |
| metrics-server | Install metrics-server |
| kubernetes-dashboard | Install kubernetes-dashboard |
| istio | Install istio |
| postgresql | Install postgresql |
| minio | Install minio |
| openfaas | Install openfaas |
| gitea | Install gitea |
| cron-connector | Install cron-connector for OpenFaaS |
| openfaas-ingress | Install openfaas ingress with TLS |
| traefik2 | Install traefik2 |
| docker-registry | Install a Docker registry |
| kube-image-prefetch | Install kube-image-prefetch |
| kube-state-metrics | Install kube-state-metrics |
| ingress-nginx | Install ingress-nginx |
| inlets-operator | Install inlets-operator |
| rabbitmq | Install rabbitmq |
| chart | Install the specified helm chart |
| metallb-arp | Install MetalLB in L2 (ARP) mode |
There are 47 apps that you can install on your cluster.
Note to contributors, run arkade install --print-table
to generate this list
Alex created this project for developers just like yourself. If you use arkade, become a sponsor so that he can continue to grow and improve it for your future use.
To suggest a new app, please check past issues and raise an issue for it. Think also whether your app suggestion would be a good candidate for a Sponsored App.
You can now propose your project or product as a Sponsored App. Sponsored Apps work just like any other app that we've curated, however they will have a note next to them in the app description (sponsored)
and a link to your chosen site upon installation. An app sponsorship can be purchased for a minimum of 12 months and includes free development of the Sponsored App, with ongoing support via GitHub for the Sponsored App for the duration only. Ongoing support will be limited to a set amount of hours per month.
When your sponsorship expires the Sponsored App will be removed from arkade, and the ongoing support will cease. A Sponsored App can be renewed 60 days prior to expiration subject to a separate agreement and payment.
Example:
bash
arkade VENDOR install PRODUCT
arkade acmeco install dashboard
Current sponsored apps include Venafi for Machine Identity:
bash
arkade venafi install --help
arkade venafi info --help
Contact us to find out how you can have your Sponsored App added to arkade.
arkade
compare to helm
?In the same way that brew uses git and Makefiles to compile applications for your Mac, arkade
uses upstream helm charts and kubectl
to install applications to your Kubernetes cluster. arkade exposes strongly-typed flags for the various popular options for helm charts, and enables easier discovery through arkade install --help
and arkade install APP --help
.
If you consider helm suitable, and kubectl
then yes, arkade by definition uses those tools and the upstream artifacts of OSS projects.
Do you want to run arkade in a CI or CD pipeline? Go ahead.
arkade get
?Generally speaking, tools that are used with the various arkade apps or with Kubernetes are in scope. If you want to propose a tool, raise a GitHub issue.
What about package management? arkade get
provides a faster alternative to package managers like apt
and brew
, you're free to use either or both at the same time.
When required, tools, CLIs, and the helm binaries are downloaded and extracted to $HOME/.arkade
.
If installing a tool which uses helm3, arkade will check for a cached version and use that, otherwise it will download it on demand.
Did you accidentally run arkade as root? Running as root is not required, and will mean your KUBECONFIG environment variable will be ignored. You can revert this using the notes on release 0.1.18.
Before contributing code, please see the CONTRIBUTING guide. Note that arkade uses the same guide as inlets.dev.
Both Issues and PRs have their own templates. Please fill out the whole template.
All commits must be signed-off as part of the Developer Certificate of Origin (DCO)
Here's the basics for contributing:
```bash
mkdir $GOPATH/go/src/github.com/alexellis
git clone https://github.com/alexellis/arkade
cd arkade
go build
```
bash
git remote add fork https://github.com/NAME/arkade
bash
gofmt -w -s ./pkg
gofmt -w -s ./cmd
go test ./...
bash
git checkout -b fork/add-NAME-of-APP
```bash
git config user.name "Full name"
git config user.email "[email protected]"
git commit -s
git push fork add-NAME-of-APP
```
You can also check out other people's PRs and test them:
```bash
arkade get gh
gh auth
$ gh pr list
Showing 10 of 10 open pull requests in alexellis/arkade
gh checkout 477
go build
./arkade
```
Join #contributors
at slack.openfaas.io
MIT