🚀

M1 MacにRancher Desktopをインストールして、Helmでnginxをデプロイしてみた

2022/09/19に公開

Rancher Desktop

Rancher Desktopとは

Rancher Desktopは、デスクトップ上でKubernetesとコンテナ管理を行うツールです。

https://rancherdesktop.io/

今回は以下の環境に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

Welcome to Rancher Desktop

アクセス権の設定

インストールが完了するとアクセス権の設定画面が表示されます。

Rancher Desktopにsudo権限を付与するため、チェックをつけずにOKを選択します。
その後パスワードを入力すると、VM(lima)が起動します。

Administrative Access Required

仕組み

仕組みとしては、VM上にk3sクラスターを構築しアクセスしているようです。
インストールが完了した時点で、ターミナルでkubectlコマンドやhelmコマンドが使えるようになっているはずです。

How it works

nginxのDeploy

Helmを使用してnginxをDeployします。

今回はbitnamiリポジトリのnginxを使用します。

https://bitnami.com/stack/nginx/helm

ターミナルを開き、以下のコマンドで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を起動します。

Menubar

以下のようなDashboardが表示されます。

Dashboard

サイドバーのService DiscoveryからIngressesを選択します。
右上のCreateを選択し、Ingressの作成画面を開きます。

Ingresses

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自体は空欄のままで問題ないです。
    • Target Service: nginx
      • nginxのServiceを選択します。
    • Port: 80
      • nginxの公開Portである80を選択します。

Create Ingress

作成が完了するとIngresses画面に作成したIngressが表示されます。

Ingress created

Targetに表示されているアドレス(http://localhost)を選択すると、nginxの画面が表示されます。

nginx

Ingress画面からアクセスするとRancher Desktopのブラウザからアクセスしてしまうため、念の為Chromeなどのブラウザからもhttp://localhostにアクセスしてみましょう。先ほどと同じようにnginxの画面が表示されれば完了です。

後片付け

IngressをDeleteします。

Ingress画面でnginx-ingressをチェックし、Deleteを選択します。

delete ingress

ターミナルから以下のコマンドを実行し、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