arkade is how developers install the latest versions of their favourite CLI tools and Kubernetes apps.
With arkade get
, you'll have kubectl
, kind
, terraform
, and jq
on your machine faster than you can type apt-get install
or brew update
.
With over 120 CLIs and 55 Kubernetes apps (charts, manifests, installers) 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.
- arkade - Open Source Marketplace For Developer Tools
- Support arkade ๐
- Should you try arkade?
- Getting arkade
- Usage overview
- Download CLI tools with arkade
- Install System Packages
- Install packages from OCI images
- Install CLIs during CI with GitHub Actions
- Bump Helm chart versions
- Verify and upgrade images in Helm charts
- Verify images within a helm chart
- Installing apps with arkade
- Community & contributing
- Sponsored apps
- FAQ
- Catalog of apps and CLIs
Arkade is built to save you time so you can focus and get productive quickly.
You can support Alex's work on arkade via GitHub Sponsors.
Or get a copy of his eBook on Go so you can learn how to build tools like k3sup, arkade, and OpenFaaS for yourself:
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.
Ivan Velichko, SRE @ Booking.com
Before arkade whenever I used to spin up an instance, I used to go to multiple sites and download the binary. Arkade is one of my favourite tools.
Kumar Anurag - Cloud Native Enthusiast
It's hard to use K8s without Arkade these days. My team at @lftechnology absolutely loves it.
arkade is really a great tool to install CLI tools, and system packages, check this blog on how to get started with arkade it's a time saver.
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.
Greg runs Fullstack JS and is a JavaScript developer
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
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.
You've to install the latest and greatest tools for your daily @kubernetesio tasks? No problem, check out #arkade the open source #kubernetes marketplace ๐
Thorsten Hans - Cloud Native consultant
If you want to install quickly a new tool in your dev env or in your k8s cluster you can use the Arkade (https://github.com/alexellis/arkade) easy and quick you should it try out! Ps. I contribute to this project ๐ฅฐ
Carlos Panato - Staff engineer @ Mattermost
arkade is the 'brew install' of Kubernetes. You can install and run an application in a single command. Finally! https://github.com/alexellis/arkade / by Alex Ellis
John Arundel - Cloud consultant, author
# Note: you can also run without `sudo` and move the binary yourself
curl -sLS https://get.arkade.dev | sudo sh
arkade --help
ark --help # a handy alias
# Windows users with Git Bash
curl -sLS https://get.arkade.dev | sh
Windows users: arkade requires bash to be available, therefore Windows users should install and use Git Bash
An alias of ark
is created at installation time, so you can also run ark install APP
Arkade can be used to install Kubernetes apps or to download CLI tools.
arkade install
- install a Kubernetes apparkade info
- see the post installation screen for a Kubernetes apparkade get
- download a CLI toolarkade update
- perform a self-update of arkade on MacOS and Linux
An arkade "app" could represent a helm chart such as openfaas/faas-netes
, a custom CLI installer such as istioctl
, or a set of static manifests (i.e. MetalLB).
An arkade "tool" is a CLI that can be downloaded for your operating system. Arkade downloads statically-linked binaries from their upstream locations on GitHub or the vendor's chosen URL such as with kubectl
and terraform
.
Did you know? Arkade users run arkade get
both on their local workstations, and on their CI runners such as GitHub Actions or Jenkins.
arkade downloads the correct version of a CLI for your OS and CPU.
With automatic detection of: Windows / MacOS / Linux / Intel / ARM.
# Download a binary release of a tool
arkade get kubectl
# Download a specific version of that tool
arkade get [email protected]
# Download multiple tools at once
arkade get kubectl \
helm \
istioctl
# Download multiple specific versions
arkade get [email protected] \
[email protected]
# Override machine os/arch
arkade get faas-cli \
--arch arm64 \
--os linux
# Override machine os/arch
arkade get faas-cli \
--arch arm64 \
--os darwin
This is a time saver compared to searching for download pages every time you need a tool.
Files are stored at $HOME/.arkade/bin/
Want to download tools to a custom path such as into the GitHub Actions cached tool folder?
arkade get faas-cli kubectl \
--path $HOME/runner/_work/_tools
# Usage:
/runner/_work/_tools/faas-cli version
PATH=$PATH:$HOME/runner/_work/_tools
faas-cli version
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.
Click here for the full catalog of CLIs
System packages are tools designed for installation on a Linux workstation, server or CI runner.
These are a more limited group of applications designed for quick setup, scripting and CI, and generally do not fit into the arkade get
pattern, due to additional installation steps or system configuration.
# Show packages
arkade system install
# Show package flags
arkade system install go --help
# Install latest version of Go to /usr/local/bin/go
arkade system install go
# Install Go 1.18 to /tmp/go
arkade system install go \
--version 1.18 \
--path /tmp/
# Install containerd for ARM64, 32-bit ARM or x86_64
# with systemd enabled
arkade system install containerd \
--systemd
Run the following to see what's available arkade system install
:
actions-runner Install GitHub Actions Runner
buildkitd Install Buildkitd
caddy Install Caddy Server
cni Install CNI plugins
containerd Install containerd
firecracker Install Firecracker
gitlab-runner Install GitLab Runner
go Install Go
node Install Node.js
prometheus Install Prometheus
pwsh Install Powershell
registry Install registry
tc-redirect-tap Install tc-redirect-tap
The initial set of system apps is now complete, learn more in the original proposal: Feature: system packages for Linux servers, CI and workstations #654
For packages distributed in Open Container Initiative (OCI) images, you can use arkade oci install
to extract them to a given folder on your system.
vmmeter is one example of a package that is only published as a container image, which is not released on a GitHub releases page.
arkade oci install ghcr.io/openfaasltd/vmmeter \
--path /usr/local/bin
--path
- the folder to extract the package to--version
- the version of the package to extract, if not specified the:latest
tag is used--arch
- the architecture to extract, if not specified the host's architecture is used
Example of downloading faas-cli (specific version) and kubectl (latest), putting them into the PATH automatically, and executing one of them in a subsequent step.
- uses: alexellis/arkade-get@master
with:
kubectl: latest
faas-cli: 0.14.10
- name: check for faas-cli
run: |
faas-cli version
If you just need system applications, you could also try "setup-arkade":
- uses: alexellis/setup-arkade@v2
- name: Install containerd and go
run: |
arkade system install containerd
arkade system install go
To bump the patch version of your Helm chart, run arkade chart bump -f ./chart/values.yaml
. This updates the patch component of the version specified in Chart.yaml.
arkade chart bump -f ./charts/flagger/values.yaml
charts/flagger/Chart.yaml 1.36.0 => 1.37.0
By default, the new version is written to stdout. To bump the version in the file, run the above command with the --write
flag.
To bump the version in the chart's Chart.yaml only if the chart has any changes, specify the --check-for-updates
flag:
arkade chart bump -f ./charts/flagger/values.yaml --check-for-updates
no changes detected in charts/flagger/values.yaml; skipping version bump
The directory that contains the Helm chart should be a Git repository. If the flag is specified, the command runs git diff --exit-code <file>
to figure out if the file has any changes.
There are two commands built into arkade designed for software vendors and open source maintainers.
arkade helm chart upgrade
- run this command to scan for container images and update them automatically by querying a remote registry.arkade helm chart verify
- after changing the contents of a values.yaml or docker-compose.yaml file, this command will check each image exists on a remote registry
Whilst end-users may use a GitOps-style tool to deploy charts and update their versions, maintainers need to make conscious decisions about when and which images to change within a Helm chart or compose file.
These two features are used by OpenFaaS Ltd on projects and products like OpenFaaS CE/Pro (Serverless platform) and faasd (docker-compose file).
With the command arkade chart upgrade
you can upgrade the image tags of a Helm chart from within a values.yaml file to the latest available semantically versioned image.
Original YAML file:
stan:
# Image used for nats deployment when using async with NATS-Streaming.
image: nats-streaming:0.24.6
Running the command with --verbose
prints the upgraded tags to stderr, allowing the output to stdout to be piped to a file.
arkade chart upgrade -f \
~/go/src/github.com/openfaas/faas-netes/chart/openfaas/values.yaml \
--verbose
2023/01/03 10:12:47 Verifying images in: /home/alex/go/src/github.com/openfaas/faas-netes/chart/openfaas/values.yaml
2023/01/03 10:12:47 Found 18 images
2023/01/03 10:12:48 [natsio/prometheus-nats-exporter] 0.8.0 => 0.10.1
2023/01/03 10:12:50 [nats-streaming] 0.24.6 => 0.25.2
2023/01/03 10:12:52 [prom/prometheus] v2.38.0 => 2.41.0
2023/01/03 10:12:54 [prom/alertmanager] v0.24.0 => 0.25.0
2023/01/03 10:12:54 [nats] 2.9.2 => 2.9.10
Updated YAML file printed to console:
stan:
# Image used for nats deployment when using async with NATS-Streaming.
image: nats-streaming:0.25.2
Write the updated image tags back to the file:
arkade chart upgrade -f \
~/go/src/github.com/openfaas/faasd/docker-compose.yaml \
--write
Supported:
image:
- at the top levelcomponent.image:
i.e. one level of nesting- Docker Hub and GitHub Container Registry
Not supported yet:
- Custom strings that don't match the word "image":
clientImage:
- Split fields for the image and tag name i.e.
image.name
andimage.tag
- Third-level nesting
openfaas.gateway.image
The arkade chart verify
command validates that all images specified are accessible on a remote registry and takes a values.yaml file as its input.
Successful checking of a chart with image: ghcr.io/openfaas/cron-connector:TAG
:
arkade chart verify -f ~/go/src/github.com/openfaas/faas-netes/chart/cron-connector/values.yaml
echo $?
0
There is an exit code of zero and no output when the check passes.
You can pass --verbose
to see a detailed view of what's happening.
Checking of nested components, where two of the images do not exist autoscaler.image
and dashboard.image
:
arkade chart verify -f ~/go/src/github.com/openfaas/faas-netes/chart/openfaas/values.yamlecho $?
2 images are missing in /Users/alex/go/src/github.com/openfaas/faas-netes/chart/openfaas/values.yaml
COMPONENT IMAGE
dashboard ghcr.io/openfaasltd/openfaas-dashboard:0.9.8
autoscaler ghcr.io/openfaasltd/autoscaler:0.2.5
Error: verifying failed
echo $?
1
Supported:
image:
- at the top levelcomponent.image:
i.e. one level of nesting
Not supported yet:
- Custom strings that don't match the word "image":
clientImage:
- Split fields for the image and tag name i.e.
image.name
andimage.tag
- Third-level nesting
openfaas.gateway.image
You'll need a Kubernetes cluster to arkade. Unlike cloud-based marketplaces, arkade doesn't have any special pre-requirements and can be used with any private or public cluster.
If you have Docker installed, then you can install Kubernetes using KinD in a matter of moments:
arkade get [email protected] \
[email protected]
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.
arkade install openfaas \
--gateways 2 \
--load-balancer false
The post-installation message shows you how to connect. And whenever you want to see those details again, just run arkade info openfaas
.
There are even more options you can choose with arkade install openfaas --help
- the various flags you see map to settings from the helm chart README, that you'd usually have to look up and set via a values.yaml
file.
If there's something missing from the list of flags that you need, arkade also supports --set
for any arkade app that uses helm. Note that not every app uses helm.
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
This is an example of an arkade app that uses static YAML manifests instead of helm.
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:
arkade install cert-manager
Other common tools:
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.
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)
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>
Apps are easier to discover and install than helm chart which involve many more manual steps, however when you compound apps together, they really save you time.
Here's how you can get a self-hosted Docker registry with TLS and authentication in just 5 commands on an empty cluster:
Here's how you would bootstrap OpenFaaS with TLS:
arkade install ingress-nginx
arkade install cert-manager
arkade install openfaas
arkade install openfaas-ingress \
--email [email protected] \
--domain openfaas.example.com
And here's what it looks like for a private Docker registry with authentication enabled:
arkade install ingress-nginx
arkade install cert-manager
arkade install docker-registry
arkade install docker-registry-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 to get a secure TCP tunnel and a public IP address.
arkade install inlets-operator \
--access-token $HOME/digitalocean-token \
--region lon1 \
--provider digitalocean
This makes your cluster behave like it was on a public cloud and LoadBalancer IPs go from Pending to a real, functioning IP.
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
See the full catalog of apps: See all apps
- arkade by example โ Kubernetes apps, the easy way ๐ - Alex Ellis
- Walk-through โ install Kubernetes to your Raspberry Pi in 15 minutes
- Get a TLS-enabled Docker registry in 5 minutes - Alex Ellis
- Get TLS for OpenFaaS the easy way with arkade - Alex Ellis
- Two year update: Building an Open Source Marketplace for Kubernetes
- Why did the OpenFaaS community build arkade and what's in it for you? - Alex Ellis
- A bit of Istio before tea-time - Alex Ellis
- Kubernetes: Automatic Let's Encrypt Certificates for Services with arkade
- Introducing Arkade - The Kubernetes app installer - Alistair Hey
- Portainer for kubernetes in less than 60 seconds!! - by Saiyam Pathak
- Video walk-through with DJ Adams - Pi & Kubernetes with k3s, k3sup, arkade and OpenFaaS
- Coffee chat: Easy way to install Kubernetes Apps - arkade (ark) by Sachin Jha
- Arkade & OpenFaaS: serverless on the spot by Blaise Pabon
- "Tool of the Day" with Adrian Goins from Rancher Labs
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:
arkade VENDOR install PRODUCT
arkade acmeco install dashboard
Contact OpenFaas Ltd to find out how you can have your Sponsored App added to arkade.
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.
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)
Join #contributors
at slack.openfaas.io
MIT
An app is software or an add-on for your Kubernetes cluster.
A CLI or "tool" is a command line tool that you run directly on your own workstation or a CI runner.
TOOL | DESCRIPTION |
---|---|
argocd | Install argocd |
cassandra | Install cassandra |
cert-manager | Install cert-manager |
chart | Install the specified helm chart |
cockroachdb | Install CockroachDB |
consul-connect | Install Consul Service Mesh |
cron-connector | Install cron-connector for OpenFaaS |
crossplane | Install Crossplane |
docker-registry | Install a community maintained Docker registry chart |
docker-registry-ingress | Install registry ingress with TLS |
falco | Install Falco |
gitea | Install gitea |
gitlab | Install GitLab |
grafana | Install grafana |
influxdb | Install influxdb |
ingress-nginx | Install ingress-nginx |
inlets-operator | Install inlets-operator |
istio | Install istio |
jenkins | Install jenkins |
kafka | Install Confluent Platform Kafka |
kafka-connector | Install kafka-connector for OpenFaaS |
kong-ingress | Install kong-ingress for OpenFaaS |
kube-image-prefetch | Install kube-image-prefetch |
kube-state-metrics | Install kube-state-metrics |
kubernetes-dashboard | Install kubernetes-dashboard |
kuma | Install Kuma |
kyverno | Install Kyverno |
linkerd | Install linkerd |
loki | Install Loki for monitoring and tracing |
metallb-arp | Install MetalLB in L2 (ARP) mode |
metrics-server | Install metrics-server |
minio | Install minio |
mongodb | Install mongodb |
mqtt-connector | Install mqtt-connector for OpenFaaS |
nats-connector | Install OpenFaaS connector for NATS |
nfs-provisioner | Install nfs subdir external provisioner |
opa-gatekeeper | Install Open Policy Agent (OPA) Gatekeeper |
openfaas | Install openfaas |
openfaas-ingress | Install openfaas ingress with TLS |
openfaas-loki | Install Loki-OpenFaaS and Configure Loki logs provider for OpenFaaS |
portainer | Install portainer to visualise and manage containers |
postgresql | Install postgresql |
prometheus | Install Prometheus for monitoring |
qemu-static | Install qemu-user-static |
rabbitmq | Install rabbitmq |
redis | Install redis |
registry-creds | Install registry-creds |
sealed-secret | Install sealed-secrets |
tekton | Install Tekton pipelines and dashboard |
traefik2 | Install traefik2 |
vault | Install vault |
waypoint | Install Waypoint |
There are 52 apps that you can install on your cluster.
Note to contributors, run go build && ./arkade install --print-table
to generate this list
TOOL | DESCRIPTION |
---|---|
actions-usage | Get usage insights from GitHub Actions. |
actuated-cli | Official CLI for actuated.dev |
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. |
atuin | Sync, search, and backup shell history with Atuin. |
autok3s | Run Rancher Lab's lightweight Kubernetes distribution k3s everywhere. |
buildx | Docker CLI plugin for extended build capabilities with BuildKit. |
bun | Bun is an incredibly fast JavaScript runtime, bundler, transpiler, and package manager โ all in one. |
butane | Translates human readable Butane Configs into machine readable Ignition Configs |
caddy | Caddy is an extensible server platform that uses TLS by default |
ch-remote | The ch-remote binary is used for controlling an running Virtual Machine. |
cilium | CLI to install, manage & troubleshoot Kubernetes clusters running Cilium. |
civo | CLI for interacting with your Civo resources. |
cloud-hypervisor | Cloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on top of the KVM hypervisor and the Microsoft Hypervisor (MSHV). |
clusterawsadm | Kubernetes Cluster API Provider AWS Management Utility |
clusterctl | The clusterctl CLI tool handles the lifecycle of a Cluster API management cluster |
cmctl | cmctl is a CLI tool that helps you manage cert-manager and its resources inside your cluster. |
conftest | Write tests against structured configuration data using the Open Policy Agent Rego query language |
consul | A solution to connect and configure applications across dynamic, distributed infrastructure |
copa | CLI for patching container images |
cosign | Container Signing, Verification and Storage in an OCI registry. |
cr | Hosting Helm Charts via GitHub Pages and Releases |
crane | crane is a tool for interacting with remote images and registries |
croc | Easily and securely send things from one computer to another |
crossplane | Simplify some development and administration aspects of Crossplane. |
dagger | A portable devkit for CI/CD pipelines. |
devspace | Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes. |
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. |
duplik8s | kubectl plugin to duplicate resources in a Kubernetes cluster. |
eks-node-viewer | eks-node-viewer is a tool for visualizing dynamic node usage within an EKS cluster. |
eksctl | Amazon EKS Kubernetes cluster management |
eksctl-anywhere | Run Amazon EKS on your own infrastructure |
etcd | Distributed reliable key-value store for the most critical data of a distributed system. |
faas-cli | Official CLI for OpenFaaS. |
faasd | faasd - a lightweight & portable faas engine |
firectl | Command-line tool that lets you run arbitrary Firecracker MicroVMs |
flux | Continuous Delivery solution for Kubernetes powered by GitOps Toolkit. |
flyctl | Command line tools for fly.io services |
fstail | Tail modified files in a directory. |
fzf | General-purpose command-line fuzzy finder |
gh | GitHubโs official command line tool. |
glab | A GitLab CLI tool bringing GitLab to your command line. |
golangci-lint | Go linters aggregator. |
gomplate | A flexible commandline tool for template rendering. Supports lots of local and remote datasources. |
goreleaser | Deliver Go binaries as fast and easily as possible |
gptscript | Natural Language Programming |
grafana-agent | Grafana Agent is a telemetry collector for sending metrics, logs, and trace data to the opinionated Grafana observability stack. |
grype | A vulnerability scanner for container images and filesystems |
hadolint | A smarter Dockerfile linter that helps you build best practice Docker images |
helm | The Kubernetes Package Manager: Think of it like apt/yum/homebrew for Kubernetes. |
helmfile | Deploy Kubernetes Helm Charts |
hey | Load testing tool |
hostctl | Dev tool to manage /etc/hosts like a pro! |
hubble | CLI for network, service & security observability for Kubernetes clusters running Cilium. |
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 |
just | Just a command runner |
k0s | Zero Friction Kubernetes |
k0sctl | A bootstrapping and management tool for k0s clusters |
k3d | Helper to run Rancher Lab's k3s in Docker. |
k3s | Lightweight Kubernetes |
k3sup | Bootstrap Kubernetes with k3s over SSH < 1 min. |
k9s | Provides a terminal UI to interact with your Kubernetes clusters. |
kail | Kubernetes log viewer. |
keploy | Test generation for Developers. Generate tests and stubs for your application that actually work! |
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. |
ktop | A top-like tool for your Kubernetes cluster. |
kube-bench | Checks whether Kubernetes is deployed securely by running the checks documented in the CIS Kubernetes Benchmark. |
kube-burner | A tool aimed at stressing Kubernetes clusters by creating or deleting a high quantity of objects. |
kube-linter | KubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices. |
kube-score | A tool that performs static code analysis of your Kubernetes object definitions. |
kubebuilder | Framework for building Kubernetes APIs using custom resource definitions (CRDs). |
kubecm | Easier management of kubeconfig. |
kubecolor | KubeColor is a kubectl replacement used to add colors to your kubectl output. |
kubeconform | A FAST Kubernetes manifests validator, with support for Custom Resources |
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 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. |
kubetrim | Tidy up old Kubernetes clusters from kubeconfig. |
kubeval | Validate your Kubernetes configuration files, supports multiple Kubernetes versions |
kubie | A more powerful alternative to kubectx and kubens |
kumactl | kumactl is a CLI to interact with Kuma and its data |
kustomize | Customization of kubernetes YAML configurations |
kwok | KWOK stands for Kubernetes WithOut Kubelet, responsible for simulating the lifecycle of fake nodes, pods, and other Kubernetes API resources |
kwokctl | CLI tool designed to streamline the creation and management of clusters, with nodes simulated by kwok |
kyverno | CLI to apply and test Kyverno policies outside a cluster. |
labctl | iximiuz Labs control - start remote microVM playgrounds from the command line. |
lazydocker | A simple terminal UI for both docker and docker-compose, written in Go with the gocui library. |
lazygit | A simple terminal UI for git commands. |
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. |
mixctl | A tiny TCP load-balancer. |
mkcert | A simple zero-config tool to make locally trusted development certificates with any names you'd like. |
nats | Utility to interact with and manage NATS. |
nats-server | Cloud native message bus and queue server |
nerdctl | Docker-compatible CLI for containerd, with support for Compose |
nova | Find outdated or deprecated Helm charts running in your cluster. |
oc | Client to use an OpenShift 4.x cluster. |
oh-my-posh | A prompt theme engine for any shell that can display kubernetes information. |
op | 1Password CLI enables you to automate administrative tasks and securely provision secrets across development environments. |
opa | General-purpose policy engine that enables unified, context-aware policy enforcement across the entire stack. |
openshift-install | CLI to install an OpenShift 4.x cluster. |
operator-sdk | Operator SDK is a tool for scaffolding and generating code for building Kubernetes operators |
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. |
promtool | Prometheus rule tester and debugging utility |
rclone | 'rsync for cloud storage' - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files |
regctl | Utility for accessing docker registries |
rekor-cli | Secure Supply Chain - Transparency Log |
replicated | CLI for interacting with the Replicated Vendor API |
rosa | Red Hat OpenShift on AWS (ROSA) command line tool |
rpk | Kafka compatible streaming platform for mission critical workloads. |
run-job | Run a Kubernetes Job and get the logs when it's done. |
scaleway-cli | Scaleway CLI is a tool to help you pilot your Scaleway infrastructure directly from your terminal. |
seaweedfs | SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! |
skupper | Skupper is an implementation of a Virtual Application Network, enabling rich hybrid cloud communication |
snowmachine | Festive cheer for your terminal. |
sops | Simple and flexible tool for managing secrets |
stern | Multi pod and container log tailing for Kubernetes. |
syft | CLI tool and library for generating a Software Bill of Materials from container images and filesystems |
talosctl | The command-line tool for managing Talos Linux OS. |
task | A simple task runner and build tool |
tctl | Temporal CLI. |
terraform | Infrastructure as Code for major cloud providers. |
terraform-docs | Generate documentation from Terraform modules in various output formats. |
terragrunt | Terragrunt is a thin wrapper for Terraform that provides extra tools for working with multiple Terraform modules |
terrascan | Detect compliance and security violations across Infrastructure as Code. |
tflint | A Pluggable Terraform Linter. |
tfsec | Security scanner for your Terraform code |
tilt | A multi-service dev environment for teams on Kubernetes. |
timoni | A package manager for Kubernetes powered by CUE. |
tkn | A CLI for interacting with Tekton. |
tofu | OpenTofu lets you declaratively manage your cloud infrastructure |
trivy | Vulnerability Scanner for Containers and other Artifacts, Suitable for CI. |
vagrant | Tool for building and distributing development environments. |
vault | A tool for secrets management, encryption as a service, and privileged access management. |
vcluster | Create fully functional virtual Kubernetes clusters - Each vcluster runs inside a namespace of the underlying k8s cluster. |
vhs | CLI for recording demos |
viddy | A modern watch command. Time machine and pager etc. |
waypoint | Easy application deployment for Kubernetes and Amazon ECS |
yq | Portable command-line YAML processor. |
yt-dlp | Fork of youtube-dl with additional features and fixes |
There are 162 tools, use arkade get NAME to download one. |
Note to contributors, run go build && ./arkade get --format markdown
to generate this list
arkade's People
Forkers
aidun waterdrips utsavanand2 iboonox sortigoza kadern0 sunshineflickerhop leewalter braybaut mkrupczak3 pgoreutn gasanc16 sheerun juandisay lucasroesler nickgerace amalkh5 kylos101 go-programmer rajalokan pableeee briandowns hasheddan venkatrmrddy isgasho pnocera saiyam1814 pierrerustorange lichnak desmax74 avaussant afcarl roman-blinkov wingkwong amasser forkkit aledbf edmooney jsianard tuananh viveksyngh davefellows laashub-soa rquintin trevormerritt zechen0 rajuborru iwilltry42 meyskens aminarria rberrelleza gyan1230 johannestegner bjrooney cnb0 grengojbo itsksaurabh averagemarcus coding-to-music bsmr ptzagk ashu-cybertron spachava753 ricable funkypenguin allamand alejandrojnm tkuennen zack-hable jsiebens nitishkumar71 devopstoday11 yankeexe wahmedswl kaynenotkanye qolzam freelizhun developer-guy fabn ambakshi robdyke moneytech adamworley akosveres edgarlanting sivanamurugesan melachosangfleg kandros mrysavy 0xack13 jkoby ravikishore-m enigmacurry phillipsj calshankar kagodarog dystudio clix-dev-llc marvel-works sphara-apparkade's Issues
Error installing metrics-server
Expected Behaviour
running arkade install metrics-server
to install metrics server.
Current Behaviour
arkade install metrics-server
Using kubeconfig: /home/nima/.kube/config
Node architecture: "amd64"
Using helm3
Client: "x86_64", "Linux"
2020/03/21 11:13:30 User dir established as: /home/nima/.arkade/
Error: no repositories found. You must add one before updating
Error: exit code 1
Possible Solution
I believe this is an issue with the help version, not sure though.
Steps to Reproduce (for bugs)
k3sup install
to install a k3sup server.arkade install metrics-server
Context
Trying to install metrics-server
.
- What Kubernetes distribution are you using?
kubectl version
# output:
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:14:22Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2+k3s1", GitCommit:"cdab19b09a84389ffbf57bebd33871c60b1d6b28", GitTreeState:"clean", BuildDate:"2020-01-27T18:09:26Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
- Operating System and version (e.g. Linux, Windows, MacOS):
uname -a
Linux savi-ds 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
- What arkade version is this?
arkade version
Version: 0.2.0
Git Commit: f2af156fadc052c641aaddaa1282f825f6474de0
[Feature] Move lib code from cmd/app/kubernets_exec.go to pkg
Currently app code and lib code is scattered in cmd/apps/kubernetes_exec.go
and pkg
. This is a bit misleading and should be changed.
Expected Behaviour
All shared code should be placed under pkg
.
Current Behaviour
The functions will not be private, they will be public.
Possible Solution
I suggest to move the helm related code to pkg/helm
and the Kubernetes related code to pkg/kubernetes
.
Based on this there are three possible ways:
- keep the old functions in
cmd/apps/kubernetes_exec.go
as stubs and call from there the new functions.
import "pkg/kubernetes"
func kubectl(....) error {
return kubernetes.Kubectl(...)
}
-
keep the old functions in
cmd/apps/kubernetes_exec.go
and create new ones underpkg/kubernetes
andpkg/helm
-
move complete to the new structure and modify all apps at once.
I would suggest the third solution.
Steps to Reproduce (for bugs)
Context
I try to split the command from the packages to provide a cleaner codebase for further improvments.
Istio installs unsupported version
Expected Behaviour
Applications should install supported versions
Current Behaviour
https://github.com/alexellis/arkade/blob/master/cmd/apps/istio_app.go#L77 and unsupported version of Istio is installed: https://istio.io/news/support/announcing-1.3-eol-final/
Possible Solution
Steps to Reproduce (for bugs)
Context
Your Environment
- What Kubernetes distribution are you using?
kubectl version
- Operating System and version (e.g. Linux, Windows, MacOS):
uname -a
cat /etc/os-release
- What arkade version is this?
arkade version
Remove duplication via Go chaining/structs/WithOptions()
Description
There are opportunities to remove duplication between each app through the use of method chaining / fluent APIs and the use of structs or WithOptions().
Chaining:
app := arkade.App{}
app.SetArch("x86_64")
.SetRepo("https://x.com/etc")
.SetNamespace("default")
.SetKubeconfig(kubeconfigPath)
err, helpMessage:= app.Install()
Structs could reduce custom variables and flags parsing:
type App struct {
ChartRepo string
ChartName string
}
WithOptions:
containerd has a non-fluent API that is not chained, but passed in via a series of extra args:
chart.Install(arkade.WithArch("x86_64"), arkade.WithOverride("basic-auth", "true"))
At some later point, a manifest file, or a series of manifests could populate this information from an external source, to remove hard-coded paths/variables/flags from the codebase.
Add Info message to Grafana-App
Add Info message to Grafana-App
Expected Behaviour
arkade info grafana
Possible Solution
Split Install and Info-Message of the app.
Print the helm release name, when available
Hey Alex, I believe the tool would be better if it told the user the release it created.
For example at the end of the install, print out something like
<installed_app.name> installed with release name: <installed_app.release>
Happy helming!
[Feature Request] verify command for each app
It might be useful to have a command that verifies that an app was installed correctly? like looking at the deployments/CRDs and making sure they have started?
Plus we could then setup a load of tests in CI for each app that uses the verify command?
PostgreSQL install fails on arm nodes
Trying to install PostgreSQL on a Raspberry Pi cluster doesn't work.
Expected Behaviour
Using a working image or throwing an error to prevent creation of esources in the cluster.
Current Behaviour
It uses the image x86-64:
docker.io/bitnami/postgresql:11.7.0-debian-10-r9
Possible Solution
PostgreSQL ARM images do exist, but they will require some configuration and testing. Until then, an error message should be fine.
Steps to Reproduce (for bugs)
./arkade install postgresql
kubectl get pods
NAME READY STATUS RESTARTS AGE
postgresql-postgresql-0 0/1 CrashLoopBackOff 4 3m46s
Error when charts folder already exists (regression)
If you install an app twice arakde will fail.
Expected Behaviour
Arkade should install the app with new parameteres or set the default values.
Current Behaviour
Using kubeconfig: /home/markus/.config/k3d/k3s-default/kubeconfig.yaml
Using helm3
Client: x86_64, Linux
2020/03/11 11:38:35 User dir established as: /home/markus/.arkade/
"jetstack" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "jetstack" chart repository
...Successfully got an update from the "bitnami-redis" chart repository
...Successfully got an update from the "bitnami" chart repository
Update Complete. โ Happy Helming!โ
[Warning] unable to create namespace cert-manager, may already exist: Error from server (AlreadyExists): namespaces "cert-manager" already exists
Error: failed to untar: a file or directory with the name /tmp/charts/cert-manager already exists
Error: exit code 1
Possible Solution
Cleanup the /tmp/charts
directory after installation.
Steps to Reproduce (for bugs)
- arkade install cert-manager
- arkade install cert-manager
Context
Your Environment
- What arkade version is this?
master branch
get.sh not creating Alias
The alias should be created by get.sh
There is a naming issue, it was called ALIAS but the script was looking for ALIAS_NAME
PR Incoming
PR: Update kubernetes dashboard & fix account creation
Kubernetes Dashboard is outdated (current version is 2.0.0-rc2). Also the script fails creating an admin user.
Expected Behaviour
$> k3sup app install kubernetes-dashboard
- Installs latest kubernetes-dashboard (2.0.0-rc2) and
- hints the user how to create admin user, not creating it directly. According to https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md#creating-sample-user the admin user "is for educational purposes only"
Current Behaviour
Kubernetes Dashboard 2.0.0-beta6 is installed (an outdated version)
Also current code the admin account & ClusterRoleBinding are failing with these errors:
...
service/dashboard-metrics-scraper unchanged
deployment.apps/dashboard-metrics-scraper configured
error: must specify one of -f and -k
error: must specify one of -f and -k
=======================================================================
= Kubernetes Dashboard has been installed. =
=======================================================================
...
If you try to use the token gotten from the outputs from the installation you cannot see anything in the dashboard, having unauthorized errors all the time.
Possible Solution
I'm gonna create a pull request in order to:
- Update the kubernetes-dashboard url
- Remove the automatic creation of the admin user
- Update the script output to instruct the user how to create an admin user
Steps to Reproduce (for bugs)
- Install k3sup
- Install kubernetes-dashboard using "k3sup app install kubernetes-dashboard"
Context
Cannot use the installed kubernetes-dashboard , that's all.
Your Environment
- What Kubernetes distribution are you using (for
k3sup app
)?
kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2", GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean", BuildDate:"2020-01-21T22:17:28Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2+k3s1", GitCommit:"cdab19b09a84389ffbf57bebd33Kubernetes Dashboard 2.0.0-beta6 is installed (an outdated version)
871c60b1d6b28", GitTreeState:"clean", BuildDate:"2020-01-27T18:09:26Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
- What OS or type or VM are you using for your cluster? Where is it hosted? (for
k3sup install/join
):
k3sup install & join on a pair of Ubuntu Server 19.10 fresh nodes
- Operating System and version (e.g. Linux, Windows, MacOS):
uname -a
Linux mypc 5.3.0-26-generic alexellis/k3sup#28-Ubuntu SMP Wed Dec 18 05:37:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/os-release
NAME="Ubuntu"
VERSION="19.10 (Eoan Ermine)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 19.10"
VERSION_ID="19.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=eoan
UBUNTU_CODENAME=eoan
[Feature Request] Adding Consul & Vault support
There is a great documentations for usage of Helm charts of these Hashicorp tools like Consul & Vault.
It would be great if we added Consul & Vault installation support to Arkade.
https://www.vaultproject.io/docs/platform/k8s/helm/configuration/
https://www.consul.io/docs/platform/k8s/helm.html
[App request] Prometheus Operator
App
Prometheus Operator -> prometheus-operator
https://github.com/helm/charts/tree/master/stable/prometheus-operator
I would set the push gateway to false an persistence to false (but give users a flag to enable it)
Allow a license file for inlets operator
Expected Behaviour
Provide a license key file location ad a command line flag, the contents of this file should be used as the license.
Current Behaviour
You have to provide a license as a string, which gets printed to the console by arkade
Possible Solution
add a new flag for --license-file
which reads the file.
Add app for Redis
App
Redis, via Bitnami's chart
This is only available for amd64
https://github.com/bitnami/charts/tree/master/upstreamed/redis
Notice about Permission error
This fixes an issue where some code that ran in get.sh created a .arkade folder owned by root.
See the release notes, and run the instructions if you are running into permissions issues.
Prevent installation of minio on armhf
Description
Prevent installation of minio on armhf since no images are available at this time upstream.
Solution
Check the way we do this for the Istio app.
Build E2E Test suite
It would be useful to have an E2E test solution for:
- Installing an app (and possibly dependency apps, like for openfaas-ingress) on k3d
- waiting for it to finish (both using the --wait flag and with a command to verify its up)
- Checking its configured as expected
We would want to be able to have a framework where we could add a "test manifest" like the app, any flags and overrides, and the expected conditions (possibly a kubectl command that shows that test passed?)
There are a lot of apps and configuration options now, so if we make changes to shared packages its hard to verify every app in every situation.
Expected Behaviour
Create a framework that could spin up kubernetes (k3d?), take some input like app name, flags, and then verify the installation worked and the app is configured as expected (by accepting a list of kubectl commands or something to verify?)
Current Behaviour
Manually testing apps when changes are made by the user raising the PR
Possible Solution
Create a struct to hold the info
type TestDefinition struct {
TestName string
AppCommand string
Flags []string
Overrides []string
VerifyCommands []string
}
Then write some test runner that takes a list of these and spins up a new cluster, builds the arkade
command and then verifies the install?
Context
Lots of apps, lots of moving parts. This would give us a lot more confidence in changes
[App request] Grafana
App
Grafana - for dashboards and monitoring
Name grafana
Helm: 3 only
Persistence off by default, but flag available
[Feature Request] Add MetalLB
If running on a set of Raspberry Pis or anywhere that does not provide a loadbalancer, we have to fall back to using host ports for Kubernetes. MetalLB solves this issue by providing a bare metal load balancer implementation, and it works quite nicely I would say. I currently use it on all my clusters without any issues, and it would be great to see it added to Arkade.
The issue I see though, is that they have stopped publishing helm charts and moved to only manifests/kustomize as their officially supported deployment methods.
Please let me know if I can help in any way.
[App request] Add ArgoCD
ArgoCD is useful for CD with a GitOps approach.
Likely unavailable for ARM, however for Intel it would be useful.
Seems like the team just use a couple of manifest / kubectl commands for installation:
https://argoproj.github.io/argo-cd/#quick-start
Add an info message with an instruction to their user-guide / getting started page.
Ideally to also deploy a sample repo such as:
add --helm3 to the minio app
Expected Behaviour
we should be able to use helm3 for minio and make it default
Current Behaviour
helm2
Possible Solution
add helm3 using the same pattern as other apps
"arkade install" fails on Win (Git Bash) due to helm download URL guess?
Hello, I am using arkade on Win10 in Git Bash installed via "choco install git"
WHAT FAILS
arkade install fails because trying to get helm from
https://get.helm.sh/helm-v3.1.1-mingw64_nt-10.0-18362-amd64.tar.gz
REPLICATION
$ uname -a
MINGW64_NT-10.0-18362 username-7480 3.0.7-338.x86_64 2019-11-21 23:07 UTC x86_64 Msys
$ arkade install mongodb
Using kubeconfig: C:\Users\username/.kube/config
Node architecture: "amd64"
Client: "x86_64", "MINGW64_NT-10.0-18362"
2020/04/13 10:16:15 User dir established as: C:\Users\username/.arkade/
https://get.helm.sh/helm-v3.1.1-mingw64_nt-10.0-18362-amd64.tar.gz
2020/04/13 10:16:16 error extracting tarball into C:\Users\username/.arkade/bin/helm3 after 0 files, 0 dirs, 0s: requires gzip-compressed body: gzip: invalid header
Error: unable to add repo exec: "C:\\Users\\username/.arkade/bin/helm3/helm": file does not exist
Am I using wrong distro of Git Bash or startegy to guess helm download URL is not complete? (uname -a abobe)
Thank you
[Feature request] Helm Install without streaming stdout to console
Some helm charts have a really nice output. You have to copy that output to your info message, to make the install and info command work. If you use the install command you get the output two times.
Expected Behaviour
It should be possible to control the output of the helm charts, to make the cli expirience nicer.
Current Behaviour
Possible Solution
Add a option for supressing the output.
Mongodb and PostgreSQL install fails on arm nodes
Trying to install mongodb or PostgreSQL on a Raspberry Pi cluster doesn't work.
Expected Behaviour
Using a working image or throwing an error to prevent creation of all resources in the cluster.
Current Behaviour
It uses the image x86-64:
docker.io/bitnami/mongodb:4.2.4-debian-10-r0
docker.io/bitnami/postgresql:11.7.0-debian-10-r9
Possible Solution
MongoDB and PostgreSQL ARM images do exist, but I assume they will require some configuration and testing. Until then, an error message should be fine.
Steps to Reproduce (for bugs)
arkade install mongodb
kubectl get pods
NAME READY STATUS RESTARTS AGE
mongodb-58bc75c45c-j9vlw 0/1 Error 7 12m
postgresql-postgresql-0 0/1 CrashLoopBackOff 4 3m46s
Add --helm3 flag to chart app
Description
Add --helm3 flag to chart app
The arkade install chart
command should have helm3 support and use it by default.
add to gofish
It would be awesome to have ks3 and arkade in gofish.
Its the only cross plarform brew like experience i know and we use it for bootstrapping.
https://gofi.sh/index.html
https://github.com/fishworks/fish-food/tree/master/Food
[Feature] Traefik v2 app
Task
Add app for traefik v2
https://docs.traefik.io/getting-started/install-traefik/#use-the-helm-chart
[Bug] wait flag on install commands is missing
Every app can implement a --wait flag. The flag is provided by cmd/install.go
. The definition of the flag is missing.
Expected Behaviour
Every sub command of install should have the ability to use the --wait flag
Current Behaviour
The commands fail with an error if you provide the flag.
Possible Solution
Provide something similar to this in the install command:
command.PersistentFlags().Bool("wait", false, "Wait for the commands to finish")
Steps to Reproduce (for bugs)
- git checkout master
- go build
- ./arkade install openness --wait
Context
Your Environment
not needed
Add app for Tekton
Tekton pipelines is a rapidly-growing pipelines service for Kubernetes. It would be a great addition!
Expected Behaviour
n/a
It should install Tekton pipelines and dashboard on the Kubernetes cluster.
Current Behaviour
n/a
Same as above.
Possible Solution
I have made a PR, but I am required to have an issue as well. Alex and I spoke on Twitter, so I made a PR.
Steps to Reproduce (for bugs)
Context
Jekins-X is the first of many enterprise applications to use Tekton. It's heavily supported and had big interest at KubeCon 2019. I think it would be a great addition.
Your Environment
- What Kubernetes distribution are you using?
kubectl version
v1.17
- Operating System and version (e.g. Linux, Windows, MacOS):
uname -a
cat /etc/os-release
Ubuntu 18.04 LTS.
- What arkade version is this?
arkade version
Version: 0.1.11
Git Commit: 1d497d6
[Feature Request] Add Jenkins App
@alexellis want to have Jenkins as app in Arkade
Expected Behaviour
Jenkins should be installed to the cluster and should be able to run jobs. In addition it would be nice, if Jenkins could spawn containers as worker nodes.
Possible Solution
- Jenkins should be install via the https://github.com/helm/charts/tree/master/stable/jenkins helm chart.
- Jenkins should run in its own namespace
- There should be proper resource limits for doing a maven build
- Jenkins should be reachable via LoadBalancer and with admin credentials
- The Kubernetes integration should be able to deploy applications and manifests to any namespace of the cluster
Fix --kubeconfig flag priority
The kubeconfig
flag on the app install
command does not affect the actual kubernetes command execution. The kubernetes command is executed against the default kubeconfig file, not the one passed in via flags.
Expected Behaviour
Passing the kubeconfig
flag on the app install
command should use that kubeconfig file when installing the app.
Current Behaviour
The kubeconfig
variable is only written out, but not utilized:
https://github.com/alexellis/k3sup/blob/master/pkg/cmd/openfaas_app.go#L42
Possible Solution
Since the kubernetes_exec.go
file is also in the cmd
package, it's possible for the kubectl
and kubectlTask
functions to look for changes on the flag to get that passed in value. Much the same as the above pasted code from one of the apps.
Steps to Reproduce (for bugs)
k3sup app install openfaas --kubeconfig any/path/to/file
- Output will say something like: "Using kubeconfig {the path from above}"
- Run
kubectl get pods --all-namespaces --kubeconfig /same/path/above
- Observe the app was not installed
- Run
kubectl get pods --all-namespaces
(without the kubeconfig) - See the application was installed on the incorrect cluster
Context
I have several k8s cluster set up in various environments for testing. Swapping the config files, or env var is annoying, and really time consuming if I forget before I run the install command.
Your Environment
- What OS or type or VM are you using? Where is it hosted?
Linux/ARM
Desktop (microk8s), GCP, DigitalOcean, Raspberry Pi 3+ - Operating System and version (e.g. Linux, Windows, MacOS):
Linux
basic auth does not get disabled after enabling it first for openfaas app
Expected Behaviour
We want to disable basic-auth on openfaas when installing it using k3sup. So any request to URL /system/functions can be sent without basic Authorization header.
Current Behaviour
k3sup install is not disabling basic-auth for openfaas app, even after passing the argument to do disable it. It throws error invalid credentials.
Possible Solution
Steps to Reproduce (for bugs)
- Download k3sup bash script
sudo curl -sLS https://get.k3sup.dev | sh
- Install k3sup
sudo install k3sup /usr/local/bin/
- Run k3sup
k3sup install --local --ip 127.0.01 --user ubuntu
- Install openfaas application
k3sup app install openfaas
will install openfaas with basic auth enabled - Again install openfaas application
k3sup app install openfaas --basic-auth=false
which should disable basic auth - send curl request shown below, which gives error invalid credentials
curl -X POST \
http://127.0.0.1:31112/system/functions \
-d '{
"service": "test-sleep",
"image": "functions/alpine:latest",
"network": "func_functions",
"envProcess": "sleep 5"
}'
Context
Your Environment
- What Kubernetes distribution are you using (for
k3sup app
)?
kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2", GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean", BuildDate:"2020-01-18T23:30:10Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2+k3s1", GitCommit:"cdab19b09a84389ffbf57bebd33871c60b1d6b28", GitTreeState:"clean", BuildDate:"2020-01-27T18:09:26Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
-
What OS or type or VM are you using for your cluster? Where is it hosted? (for
k3sup install/join
): -
Operating System and version (e.g. Linux, Windows, MacOS):
uname -a
cat /etc/os-release
Linux ubuntu-02-feb 4.15.0-76-generic alexellis/k3sup#86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Install postgresql using arkade
I am trying to install PostgreSQL on my mac using arkade.
Expected Behaviour
arkade install postgresql
PostgreSQL has been installed.
Current Behaviour
arkade install postgresql
Using kubeconfig: /Users/rengonca/.kube/config
Node architecture: ""
Error: only Intel, i.e. PC architecture is supported for this app
Possible Solution
No sure
Steps to Reproduce (for bugs)
1. $ sudo su -
2. # curl -sLS https://dl.get-arkade.dev | sudo sh
3. # arkade install postgresql
Context
I am trying to install PostSQL
Your Environment
- What Kubernetes distribution are you using?
~ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
- Operating System and version (e.g. Linux, Windows, MacOS):
~ uname -a
Darwin RENGONCA-M-PP9J 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64 x86_64
~ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.4
BuildVersion: 19E266
- What arkade version is this?
~ arkade version
_ _
__ _ _ __| | ____ _ __| | ___
/ _` | '__| |/ / _` |/ _` |/ _ \
| (_| | | | < (_| | (_| | __/
\__,_|_| |_|\_\__,_|\__,_|\___|
Get Kubernetes apps the easy way
Version: 0.2.2
Git Commit: 9063b6eb16deae5978805f71b0e749828c815490
PR: Version upgrades
Version upgrades available
- k3s
- helm3
- kubernetes-dashboard
- cert-manager
Add `arkade update` instructions like we have in k3sup
Expected Behaviour
arkade update
could print the upgrade instructions (like k3sup does)
Current Behaviour
no command
Possible Solution
check how k3sup does it, and use a similar approach
https://github.com/alexellis/k3sup/blob/master/cmd/update.go
[Feature] Add apps from Weaveworks
Description
I'd like to see the following, if it makes sense on a case-by-case basis:
- Flux CD (now CNCF) - https://fluxcd.io
- Helm Operator (in CNCF repo, but still a Weaveworks project) - https://github.com/fluxcd/helm-operator
- Weave scope - https://www.weave.works/oss/scope/ and https://github.com/helm/charts/tree/master/stable/weave-scope
- Flagger by @stefanprodan - we have an Istio app now with the settings from Flagger, not sure if Gloo will also be required?
Anything else from the Weave team?
[Feature] Add App type to arkade
Add an type App
to arkade, to unify the way commands such as install
and update
interact with apps.
Expected Behaviour
I would suggest an interface in pkg/app
:
type App interface {
Install()
Verify()
Info()
}
In addition to this a Helm3-Implementation in pkg/app
wich will cover the most apps:
type Helm3App struct {
.... all values needed to install a normal chart
}
In pkg/apps/
I would place a <app-name>.go
file which has a Make<app-name>App
function. This function should return the static app.
This way you can test the creation of each command with unit tests, this makes it much simpler to make global changes.
In cmd/apps
are the final commands and the dynamic parts of the apps should be set.
Current Behaviour
Every command follows ( or not ) a convention. There is no > one way to do it <.
Context
I try to make it easier to implement and test new commands.
Error installing istio app
Hi,
I was attempting to follow Alex's istio blog post, but i'm having issues installing istio.
Current Behaviour
$ arkade install istio --init=true
Using kubeconfig: /Users/user/.kube/config
Node architecture: "amd64"
Client: "x86_64", "Darwin"
2020/04/13 12:39:27 User dir established as: /Users/user/.arkade/
"istio" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "istio" chart repository
...Successfully got an update from the "istio.io" chart repository
...Successfully got an update from the "openfaas" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. โ Happy Helming!โ
VALUES
Command: /Users/user/.arkade/bin/helm3/helm [upgrade --install istio-init istio/istio-init --namespace istio-system --wait]
Release "istio-init" does not exist. Installing it now.
NAME: istio-init
LAST DEPLOYED: Mon Apr 13 12:39:31 2020
NAMESPACE: istio-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
VALUES /var/folders/9x/llt3nz1s4bxc5t577hs4_jk57pfg8f/T/istio-values.yaml
Command: /Users/user/.arkade/bin/helm3/helm [upgrade --install istio istio/istio --namespace istio-system --values /var/folders/9x/llt3nz1s4bxc5t577hs4_jk57pfg8f/T/istio-values.yaml]
Release "istio" does not exist. Installing it now.
Error: unable to build kubernetes objects from release manifest: [unable to recognize "": no matches for kind "DestinationRule" in version "networking.istio.io/v1alpha3", unable to recognize "": no matches for kind "attributemanifest" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "handler" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2"]
Error: unable to istio install chart with helm exit code 1, stderr: Error: unable to build kubernetes objects from release manifest: [unable to recognize "": no matches for kind "DestinationRule" in version "networking.istio.io/v1alpha3", unable to recognize "": no matches for kind "attributemanifest" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "handler" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2"]
Steps to Reproduce (for bugs)
- kind create cluster
- arkade install istio --init=true
Context
Your Environment
- What Kubernetes distribution are you using?
$ kind version
kind v0.7.0 go1.14 darwin/amd64
$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kind-control-plane Ready master 8m38s v1.17.0 172.17.0.2 <none> Ubuntu 19.10 4.19.76-linuxkit containerd://1.3.2
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.1", GitCommit:"7879fc12a63337efff607952a323df90cdc7a335", GitTreeState:"clean", BuildDate:"2020-04-10T21:53:51Z", GoVersion:"go1.14.2", Compiler:"gc", Platform:"darwin/amd64"}
Error from server (InternalError): an error on the server ("") has prevented the request from succeeding
- Operating System and version (e.g. Linux, Windows, MacOS):
$ uname -a
Darwin AR0FVFZX0GEL415 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64 x86_64
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.4
BuildVersion: 19E266
- What arkade version is this?
$ arkade version
Version: 0.2.6
Git Commit: 0f49b2b67bb6c7067b4eda6b99cf2fdef93cb54c
Install PostgreSQL on arm64 device
I was trying to run your todo app tutorial on a Pinebook Pro (aarch64, arm64 device) but unfortunately the official postgresql helm chart only supports pc architecture.
Expected Behaviour
PostgreSQL Arm64 is used
Current Behaviour
Arkade exits with an error
Possible Solution
On https://hub.docker.com/r/arm64v8/postgres there seems to exist an arm64 postgresql version - this would be great if it would be supported somehow (new helm chart using this repo)
Steps to Reproduce (for bugs)
- Use arm64 device
arkade install postgresql
Node architecture: "arm64"
Error: only Intel, i.e. PC architecture is supported for this app
Context
Doing the Todo App Golang tutorial with k3d on a Pinebook Pro
Your Environment
k3d
kubectl version 1.17
- Operating System and version (e.g. Linux, Windows, MacOS):
Linux pine 5.6.0-0.42-MANJARO-ARM #1 SMP Sat Mar 14 21:19:14 CET 2020 aarch64 GNU/Linux
NAME="Manjaro-ARM"
ID=manjaro-arm
PRETTY_NAME="Manjaro ARM"
ANSI_COLOR="1;32"
HOME_URL="https://www.manjaro.org/"
SUPPORT_URL="https://forum.manjaro.org/c/manjaro-arm/"
- What arkade version is this?
0.2.2
[Feature] armhf support for kubernetes-dashboard app
Feature
There is armhf support for the kubernetes-dashboard, so we should look at adding that for the dashboard because it's super popular with Raspberry Pi users.
https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard
For an example on how to find the architecture, see the openfaas app
Here's the dashboard app:
https://github.com/alexellis/arkade/blob/master/cmd/apps/kubernetes_dashboard_app.go
Support custom namespaces on app install
Currently 'k3sup app install' command installs everything in the 'default' namespace.
It would be really nice if there was an option '-n,--namespace' that would propagate its value to the actual install command (e.g. helm) so an admin can choose what namespace an app gets installed in.
Metrics server uses amd64 image on arm nodes
Expected Behaviour
Check node architecture and use appropriate image. Following images available:
- metrics-server
- metrics-server-amd64
- metrics-server-arm
- metrics-server-arm64
Current Behaviour
Normal Pulled 19s (x2 over 37s) kubelet, master Container image "gcr.io/google_containers/metrics-server-amd64:v0.3.6" already present on machine
Normal Created 19s (x3 over 38s) kubelet, master Created container metrics-server
Normal Started 19s (x3 over 38s) kubelet, master Started container metrics-server
Warning BackOff 2s (x6 over 36s) kubelet, master Back-off restarting failed container
Possible Solution
Check node architecture and use right image.
Steps to Reproduce (for bugs)
- ./arkade install metrics-server --namespace kube-system --helm3
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
metrics-server-85774544d5-nn876 0/1 CrashLoopBackOff 6 8m42s
[Feature] Download common tools
Download common tools
Expected Behaviour
Download tools like kubectl, kubectx, k9, faas-cli and so forth.
Current Behaviour
helm 2 / 3 and Linkerd are downloaded into ~/.arkade when certain apps are installed.
Possible Solution
Take the approach from the faas-cli -> https://github.com/openfaas/faas-cli/blob/30b7cec9634c708679cf5b4d2884cf597b431401/commands/cloud.go#L155
Steps to Reproduce (for bugs)
Probably something like get
should be used instead of install
so that there is a separation of concerns between apps and tools.
arkade get kubectx
# Seems a bit long to type
arkade download kubectl
Minio app - generated secret key might fail to be parsed
If the user doesn't provide --secret-key
, one will be generated. With current setup, some special characters might end up in the key and this will fail later on as it won't be parsed properly:
Expected Behaviour
Not failing on parsing the secret-key
Current Behaviour
./arkade install minio
Using kubeconfig: /home/kaderno/.kube/config
Client: x86_64, Linux
2020/03/09 20:37:39 User dir established as: /home/kaderno/.arkade/
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
Access Key not provided, one will be generated for you
Secret Key not provided, one will be generated for you
Error: failed parsing --set data: key "?wD-QGQpEq8V6O1FT" has no value
Error: exit code 1, stderr: Error: failed parsing --set data: key "?wD-QGQpEq8V6O1FT" has no value
21:04
Possible Solution
I think the easiest and fastest solution is to disable the special characters on the generate.Password
function call.
Steps to Reproduce (for bugs)
- run
./arkade install minio
a few times until the key contains a special character like ','
Changing the function to: password.Generate(40, 10, 0, false, true)
will solve the problem.
[Feature] Add app for kube-state-metrics
Expected Behaviour
k3sup app install kube-state-metrics
then profiting from some insightful metrics.
Current Behaviour
Could use k3sup app install chart
, but a specific app would be more discoverable
Possible Solution
Use chart from: https://github.com/kubernetes/kube-state-metrics
ark alias conflicts with Ark, the KDE archiving tool
Expected Behaviour
When arkade is installed, my os basic tools should keep working... ;)
Current Behaviour
When arkade is installed, it creates a symlink /usr/local/bin/ark
that override the ark
utility ( located in /usr/bin/ark
) which is used to handle all archive file on KDE desktops (tar, bz, etc.). All gui-based operations on these files are then broken (from the file manager, etc.).
Possible Solution
Avoid creating that alias by default, use a command line argument to create it only when explicitly requested.
Download for Windows lacks instructions or usable script
Since Arkade provides a prebuilt binary for Windows, it should be easy to find and download.
The script at https://get-arkade.dev/ (or https://github.com/alexellis/arkade/blob/master/get.sh) is a bash script and will not run on Windows.
Either the main README should include instructions to manually download the right windows binary, or it should include instructions similar to the one to get the linux distribution, but pointing to a windows cmd or PowerShell script instead of a bash script. Maybe something like
curl -sLS https://dl.get-arkade.dev/windows | cmd.exe
or
curl -sLS https://dl.get-arkade.dev/windows | powershell
See also openfaas/workshop#174
[Feature Request] Adding Rancher App
Rancher Application installation via arkade onto kubernetes cluster
[Feature request] Add cli completion
I would be a nice expierence to tab trough the cli options.
Expected Behaviour
Tab trough the cli options
Current Behaviour
No tabbing
Possible Solution
https://github.com/spf13/cobra/blob/master/bash_completions.md
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.