M1 MacにRancher Desktopをインストールして、Helmでnginxをデプロイしてみた
Rancher Desktopとは
Rancher Desktopは、デスクトップ上でKubernetesとコンテナ管理を行うツールです。
今回は以下の環境にRancher Desktopをインストールし、Kubernetes環境にnginxをdeploy、ホストPCのブラウザからKubernetesクラスター内のnginxにアクセスしてみます。
Rancher Desktopのインストール
公式ホームページのトップページDownload Rancher Desktop
からDownload Mac (Apple Silicon)
を選択します。
インストールできたらRancher Desktopを起動します。
初回起動時の初期設定では以下を設定できます。
- インストールするKubernetesのバージョン
- インストールするContainer Runtime
- PATH設定
今回は以下のデフォルト設定でインストールします。
- インストールするKubernetesのバージョン:
v1.24.4 (stable)
- インストールするContainer Runtime:
containerd
- PATH設定:
Automatic
アクセス権の設定
インストールが完了するとアクセス権の設定画面が表示されます。
Rancher Desktopにsudo権限を付与するため、チェックをつけずにOK
を選択します。
その後パスワードを入力すると、VM(lima)が起動します。
仕組み
仕組みとしては、VM上にk3s
クラスターを構築しアクセスしているようです。
インストールが完了した時点で、ターミナルでkubectl
コマンドやhelm
コマンドが使えるようになっているはずです。
nginxのDeploy
Helmを使用してnginxをDeployします。
今回はbitnamiリポジトリのnginxを使用します。
ターミナルを開き、以下のコマンドでbitnamiのリポジトリを追加します。
helm repo add bitnami https://charts.bitnami.com/bitnami
リポジトリを追加できたらnginxを起動します。
helm install nginx bitnami/nginx
コマンドを実行するとNOTEが表示されます。
実行例:
$ helm install nginx bitnami/nginx
NAME: nginx
LAST DEPLOYED: Mon Sep 19 21:11:06 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 13.2.5
APP VERSION: 1.23.1
** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:
nginx.default.svc.cluster.local (port 80)
To access NGINX from outside the cluster, follow the steps below:
1. Get the NGINX URL by running these commands:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w nginx'
export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services nginx)
export SERVICE_IP=$(kubectl get svc --namespace default nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${SERVICE_IP}:${SERVICE_PORT}"
bitnamiのHelm ChartではデフォルトでIngressが無効化されているので、クラスター外であるホストPCのブラウザからはアクセスすることはできません。
せっかくなので今回はRancher DesktopからGUIでIngressを作成し、クラスター外からnginxにアクセスしてみます。
Ingressの作成
メニューバーのRancher DesktopアイコンからDashboard
を起動します。
以下のようなDashboardが表示されます。
サイドバーのService Discovery
からIngresses
を選択します。
右上のCreate
を選択し、Ingressの作成画面を開きます。
Ingress作成画面で以下の設定を行い、Create
を選択します。
- Namespace:
default
- 今回nginxはNamespaceを指定せずにdeployしたため、default
のNamespaceに存在しています。 - Name:
nginx-ingress
- Ingressに名前をつけます。
- Description (optional):
ingress for nginx
- Ingressの説明を入力します。
- Rules
- Request Host:
localhost
- 公開するホスト名を指定します。今回はローカルのみに公開し、ブラウザからアクセスするだけなので
localhost
としています。
- 公開するホスト名を指定します。今回はローカルのみに公開し、ブラウザからアクセスするだけなので
- Path:
ImplementationSpecfic
- Ingressのデフォルト値である
ImplementationSpecfic
を選択し、path自体は空欄のままで問題ないです。
- Ingressのデフォルト値である
- Target Service:
nginx
- nginxのServiceを選択します。
- Port:
80
- nginxの公開Portである
80
を選択します。
- nginxの公開Portである
- Request Host:
作成が完了するとIngresses画面に作成したIngressが表示されます。
Target
に表示されているアドレス(http://localhost
)を選択すると、nginxの画面が表示されます。
Ingress画面からアクセスするとRancher Desktopのブラウザからアクセスしてしまうため、念の為Chromeなどのブラウザからもhttp://localhost
にアクセスしてみましょう。先ほどと同じようにnginxの画面が表示されれば完了です。
後片付け
IngressをDeleteします。
Ingress画面でnginx-ingress
をチェックし、Delete
を選択します。
ターミナルから以下のコマンドを実行し、nginxをアンインストールします。
helm uninstall nginx
まとめ
こんな感じでRancher Desktopを使えば、あっという間にKubernetes環境を構築しアプリケーションをdeployすることができます。
Rancher Serverを触ったことがある人は気づいたかもしれませんが、DashboardはRancher ServerのUIの簡略版となっています。
Rancher Serverを使えば、Helmリポジトリの追加やHelm Chartを使ったアプリケーションのdeployも、GUIから実行することができます。
近いうちに今回Rancher Desktopで構築したKubernetes環境に、Rancher Serverをdeloyしてみたいと思います。
Discussion