/arkade

Portable DevOps Marketplace

Primary LanguageGoMIT LicenseMIT

arkade - Portable DevOps 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".

arkade logo

Build Status GoDoc License: MIT Go Report Card GitHub All Releases

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 IngressNginx, Postgres and Cert-Manager.

Built for developers by developers

Sponsor this project

Get arkade

# Note: you can also run without `sudo` and move the binary yourself
curl -sLS https://dl.get-arkade.dev | sudo sh

arkade --help
ark --help  # a handy alias

# Windows users with Git Bash
curl -sLS https://dl.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

Usage

Here's a few examples of apps you can install, for a complete list run: arkade install --help.

  • arkade install - install an app
  • arkade info - the post-install screen for an app
  • arkade get - install a CLI tool such as kubectl or faas-cli
  • arkade update - print instructions to update arkade itself

Install a CLI tool

arkade downloads the correct version of a CLI for your OS and CPU.

With automatic detection of: Windows / MacOS / Linux / Intel / ARM.

arkade get APP
Use "arkade get TOOL" to download a tool or application:
  buildx
  civo
  docker-compose
  doctl
  faas-cli
  gh
  helm
  helmfile
  hugo
  inletsctl
  k3d
  k3sup
  k9s
  kail
  kind
  kops
  krew
  kube-bench
  kubebuilder
  kubectl
  kubectx
  kubens
  kubeseal
  kustomize
  linkerd2
  minikube
  osm
  pack
  packer
  popeye
  stern
  terraform
  vagrant
  yq

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.

Create a Kubernetes cluster

If you have Docker installed, then you can install Kubernetes using KinD in a matter of moments:

arkade get kubectl
arkade get kind

kind create cluster

You can also download k3d k3s in the same way with arkade get k3d.

Install an app

No need to worry about whether you're installing to Intel or ARM architecture, the correct values will be set for you automatically.

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?

arkade install kubernetes-dashboard

Forgot your token? arkade info kubernetes-dashboard

Prefer Portainer? Just run: arkade install portainer

Uninstall an app

Run arkade uninstall or arkade delete for more information on how to remove applications from a Kubernetes cluster.

Reduce the repetition

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:

arkade install cert-manager

Other common tools:

arkade install ingress-nginx

arkade install metrics-server

Bye-bye values.yaml, hello flags

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.

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)

Override with --set

You can also set helm overrides, for apps which use helm via --set

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:

arkade info <NAME>

Get a self-hosted TLS registry with authentication

Here's how you can get a self-hosted Docker registry with TLS and authentication in just 5 commands on an empty cluster:

arkade install ingress-nginx
arkade install cert-manager
arkade install docker-registry
arkade install docker-registry-ingress \
  --email web@example.com \
  --domain reg.example.com

Get OpenFaaS with TLS

The same for OpenFaaS would look like this:

arkade install ingress-nginx
arkade install cert-manager
arkade install openfaas
arkade install openfaas-ingress \
  --email web@example.com \
  --domain reg.example.com

Get a public IP for a private cluster and your IngressController

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.

arkade install inlets-operator \
  --access-token $HOME/digitalocean-token \
  --region lon1 \
  --license $(cat $HOME/license.txt)

Tutorials & community blog posts

Video review from Rancher Labs

Watch a video walk-through by Alex Ellis

Featured tutorials

Community posts

Explore the apps

You can view the various apps available with arkade install / --help, more are available when you run the command yourself.

arkade install --help
ark --help

Examples:
  arkade install
  arkade install openfaas --helm3 --gateways=2
  arkade install inlets-operator --token-file $HOME/do-token

Available Commands:
  argocd                  Install argocd
  cert-manager            Install cert-manager
  chart                   Install the specified helm chart
  consul-connect          Install Consul Service Mesh
  cron-connector          Install cron-connector for OpenFaaS
  crossplane              Install Crossplane
  docker-registry         Install a Docker registry
  docker-registry-ingress Install registry ingress with TLS
  gitea                   Install gitea
  grafana                 Install grafana
  info                    Find info about a Kubernetes app
  ingress-nginx           Install ingress-nginx
  inlets-operator         Install inlets-operator
  istio                   Install istio
  jenkins                 Install jenkins
  kafka-connector         Install kafka-connector for OpenFaaS
  kube-image-prefetch     Install kube-image-prefetch
  kube-state-metrics      Install kube-state-metrics
  kubernetes-dashboard    Install kubernetes-dashboard
  linkerd                 Install linkerd
  loki                    Install Loki for monitoring and tracing
  metrics-server          Install metrics-server
  minio                   Install minio
  mongodb                 Install mongodb
  nats-connector          Install OpenFaaS connector for NATS
  nfs-client-provisioner  Install nfs client provisioner
  openfaas                Install openfaas
  openfaas-ingress        Install openfaas ingress with TLS
  openfaas-loki           Install Loki-OpenFaaS and Configure Loki logs provider for OpenFaaS
  osm                     Install osm
  portainer               Install portainer to visualise and manage containers
  postgresql              Install postgresql
  redis                   Install redis
  registry-creds          Install registry-creds
  tekton                  Install Tekton pipelines and dashboard
  traefik2                Install traefik2

Community & contributing

SWAG

You can buy an arkade t-shirt in the OpenFaaS Ltd store

Suggesting a new app

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.

Sponsored apps

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:

arkade VENDOR install PRODUCT
arkade acmeco install dashboard

Current sponsored apps include Venafi for Machine Identity:

arkade venafi install --help
arkade venafi info --help

Contact us to find out how you can have your Sponsored App added to arkade.

How does 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.

Is arkade suitable for production use?

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.

What is in scope for 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.

Automatic download of tools

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.

Improving the code or fixing an issue

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)

Join us on Slack

Join #contributors at slack.openfaas.io

License

MIT