Rancher Desktop上のk3sをRancherで管理（ローカル編・クラウド編）

# Rancherとは

公式サイトによると

> Your organization is deploying Kubernetes clusters everywhere – on-premises, in the cloud and at the edge. Rancher unifies these clusters to ensure consistent operations, workload management and enterprise-grade security.


Google翻訳

> 組織は、オンプレミス、クラウド、エッジなど、あらゆる場所にKubernetesクラスターをデプロイしています。ランチャーはこれらのクラスターを統合して、一貫した運用、ワークロード管理、およびエンタープライズグレードのセキュリティを確保します。

Kubernetesクラスターの管理ツールのようです。

# Rancher Desktop上のk3sにRancherをインストール

イメージはこんな感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/a05e12d0-90cd-ca6b-5ba8-ea2abf1d6452.png)


試した環境はこちら

* Windows 11 Pro
* Rancher Desktop 1.1.1


インストール手順はここに従うだけです。

https://rancher.com/docs/rancher/v2.6/en/installation/install-rancher-on-k8s/

* Add the Helm Chart Repository

```console:Windows
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
```

* Create a Namespace for Rancher


```console:Windows
kubectl create namespace cattle-system
```

* Choose your SSL Configuration

Rancher生成の証明書を使います。

* Install cert-manager

```console:Windows
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.5.1
```

* Install Rancher with Helm and Your Chosen Certificate Option

bootstrapPasswordは後で使います。（ここでは`admin`）

```console:Windows
helm install rancher rancher-latest/rancher --namespace cattle-system --set hostname=rancher.my.org --set bootstrapPassword=admin
```

デプロイの完了はこちらのコマンドで確認できます。

```console:Windows
kubectl -n cattle-system rollout status deploy/rancher
```

これでインストール完了です。

# Rancherにアクセス

Rancher Desktopの内部のk3s上にRancherがいますので、ホストOS（Windows）からアクセスするにはポートフォワーディングの設定が必要です。
Rancher Desktopで`cattle-system` -> `rancher` -> `https-internal` の`Forward`をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/b5460a4a-ee87-20a8-af8f-d9706db4b607.png)


* ブラウザでアクセス

`https://localhost:[ポートフォワーディングしたポート]`にアクセス。
（Rancher生成証明書を使用しているため保護されていない通信の警告が出ます）


![localhost_63380_dashboard_(Surface Pro 7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/be1ecace-4317-0a3c-d120-a652ac7942d8.png)

初期設定の画面が出ますので、インストール時に指定したBootstrap Passwordを入力、adminのパスワード設定、利用規約に同意して、`Continue`ボタンをクリック。

ダッシュボードが表示されます。

![localhost_63380_dashboard_(Surface Pro 7) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/1f7d1751-fed9-da19-3bd8-5242c13c59bc.png)

画面下部のClustersの部分や左メニューのEXPLORE CLUSTERからlocalを選択するとこのような形でクラスターの状態が表示されます。

![localhost_63380_dashboard_(Surface Pro 7) (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/96294da7-2fad-6689-734c-5b0e6b71b05b.png)

ダークモードだと分かりづらいですが、右上部のツールバーからターミナルを表示させることができます。

![localhost_63380_dashboard_(Surface Pro 7) (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f063c63a-d61d-a03c-cd8e-2122e5fcd22c.png)

`kubectl`コマンドもタブ補完付きで実行できます。

![localhost_63380_dashboard_(Surface Pro 7) (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/dfa011ae-881f-81d5-6f24-0fcade2d60bc.png)

# リモートからRancherで管理

Rancherは自分自身のクラスターを管理するだけでなく、複数のクラスターを管理することができます。
EC2上にRancherをインストールして、Rancher Desktop内のk3sを登録してみます。

こんな感じ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2cb111e3-d215-16ac-33fa-1157e899686b.png)


# DockerでRancherをインストール

先程はk3s上にRancherをインストールしましたが、RancherはDocker上にも簡単にインストールできるようになっています。

https://rancher.com/docs/rancher/v2.5/en/installation/other-installation-methods/single-node-docker/

## Dockerのインストール

```terminal:AmazonLinux2 (root user)
yum install -y docker
```

```terminal:AmazonLinux2 (root user)
systemctl start docker.socket
```

## Rancherのインストール

`CATTLE_BOOTSTRAP_PASSWORD`がbootstrapパスワードです。

```:AmazonLinux2 (root user)
docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -e CATTLE_BOOTSTRAP_PASSWORD=admin \
  --privileged \
  rancher/rancher:latest
```

`CATTLE_BOOTSTRAP_PASSWORD`未指定の場合のパスワードは、ログから入手できます。

```console
docker logs  container-id  2>&1 | grep "Bootstrap Password:"
```

簡単ですね。

# Rancherにクラスターを登録

Rancherのホーム画面下部または左メニューのCluster Managementの`Import Existing`ボタンをクリックします。

![13.113.132.172_dashboard_(Surface Pro 7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/d8ac434d-c4b2-d889-c424-4feab17aa070.png)

Genericを選択

![13.113.132.172_dashboard_(Surface Pro 7) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/70977031-69b6-44df-7e5a-ece0b227eff5.png)

Claster Nameを入力し、`Create`

![13.113.132.172_dashboard_(Surface Pro 7) (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/1f049412-be9d-e156-24fe-792b6177a115.png)

次の画面で登録用のコマンドが表示されます。

![13.113.132.172_dashboard_(Surface Pro 7) (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/974c3e48-b36b-7e3d-671f-2826566cb6c6.png)

今回はRancher生成の証明書を使っているので、２つ目のコマンドを管理対象とする環境（今回はRancher Desktopのk3s）で実行します。
（Windows環境のため、`curl`を`curl.exe`に変更しています）

```console:Windows
curl.exe --insecure -sfL https://13.113.132.172/v3/import/hk4j4gnfdrsfmclqgw62wjpffnhg5vczgv5zwxgh4br5rpnmht7bsv_c-m-sp7fcngh.yaml | kubectl apply -f -
```

うまく登録が完了すると、このようになります。

![13.113.132.172_dashboard_(Surface Pro 7) (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/4c6755e7-d823-2cd0-ab4a-a7149e8317dc.png)

これで外部から、Rancher Desktop内のk3sの管理ができます😀

![13.113.132.172_dashboard_c_local_manager_provisioning.cattle.io.cluster(Surface Pro 7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/1a07aad0-51cf-47b9-ab2e-e2f4180bc232.png)