Before you start with Syself Autopilot, you should install the necessary tools to interact with Kubernetes clusters. This section provides instruction on how to install `kubectl` and `kubelogin`. Make sure you have these tools installed before proceeding to the next sections.
## Install `kubectl`
Use `kubectl` to deploy and manage applications, view logs, and control your cluster from the command line. You'll need it for creating your workload cluster.
You can install `kubectl` using your distribution native package management, or directly downloading the release:
```console title="x86-64"
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
```
```console title="ARM64"
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
```
If you do not have root access on the target system, you can still install kubectl to the ~/.local/bin directory:
```console
$ chmod +x kubectl
$ mkdir -p ~/.local/bin
$ mv ./kubectl ~/.local/bin/kubectl
# and then append (or prepend) ~/.local/bin to $PATH
```
```console title="Intel"
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
$ sudo chown root: /usr/local/bin/kubectl
```
```console title="Apple Silicon"
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
$ sudo chown root: /usr/local/bin/kubectl
```
```console title="Windows"
$ curl.exe -LO "https://dl.k8s.io/release/v1.30.0/bin/windows/amd64/kubectl.exe"
```
If you want to know more, refer to the official [Kubernetes documentation](https://kubernetes.io/docs/tasks/tools/#kubectl).
## Install and configure kubelogin
We use [_kubelogin_](https://github.com/int128/kubelogin) to access the management cluster. It is a plugin designed for Kubernetes OpenID Connect (OIDC) authentication.
For installing `kubelogin`, we recommend using `Krew`, the plugin manager for `kubectl`. If you wish to install `Krew` on Linux, you can:
1. Make sure that git is installed.
2. Run this command to download and install:
```bash
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)
```
3. Add the `$HOME/.krew/bin` directory to your PATH environment variable. To do this, update your .bashrc or .zshrc file and append the following line:
```bash
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
```
and restart your shell.
4. Run `kubectl krew` to check the installation.
> [!WARNING]
> If you just ran `export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"` instead of adding it to your shell's configuration, you will have to do it every time you open a new terminal session.
For more information and steps for installing `Krew` on Windows, please refer to the official [Krew documentation](https://krew.sigs.k8s.io/docs/user-guide/setup/install/)
If you already have `Krew` installed, you can use it to install `kubelogin`:
```console title="macOS, Linux, Windows, and ARM"
$ kubectl krew install oidc-login
```
```console title="Windows"
$ choco install kubelogin
```
Alternatively, you can install it via a Github release. Then you need to make sure that it is on your path as `kubectl-oidc_login`.