MENU
カテゴリー
アーカイブ

Kubernetes で Minecraft Server を設置する(その3)

目次

Master Node に Helm をインストールする

Kubernetes におけるパッケージマネージャー。
Kubenetes-Dashboard はデフォルトで cert-manager と nginx-ingress-controller を使用して適切に動作するようになっていて、helm でデプロイすると自動的に依存関係も整えてくれる。

公式サイトには deb パッケージのインストール方法もあるからそのままコピペして Master Node に Helm をインストールする。

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Web UI (Dashboard)のデプロイ

以下のサイトを参考に Helm でデプロイしてみる。

Kubernetes-Dashboard のバージョンは安定版の最新 v2.7.0 がインストールされる。

$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
"kubernetes-dashboard" has been added to your repositories


$ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
Release "kubernetes-dashboard" does not exist. Installing it now.
NAME: kubernetes-dashboard
LAST DEPLOYED: Sun Oct 29 09:54:53 2023
NAMESPACE: kubernetes-dashboard
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
*********************************************************************************
*** PLEASE BE PATIENT: kubernetes-dashboard may take a few minutes to install ***
*********************************************************************************

Get the Kubernetes Dashboard URL by running:
  export POD_NAME=$(kubectl get pods -n kubernetes-dashboard -l "app.kubernetes.io/name=kubernetes-dashboard,app.kubernetes.io/instance=kubernetes-dashboard" -o jsonpath="{.items[0].metadata.name}")
  echo https://127.0.0.1:8443/
  kubectl -n kubernetes-dashboard port-forward $POD_NAME 8443:8443

クライアント(ノート PC)に kubectl をインストールする

バイナリーファイルをダウンロードする方法と、apt-get や snap を使う方法がある。
バージョンアップはクラスタと同時に実行することになるから、最新版のバイナリーファイルをダウンロードしてインストールする。とはいってもダウンロードして実行権を付与して移動して config を /home/user/.kube/ に配置するだけ。
これで、Master Node に ssh 接続しなくてもノート PC でコマンドを実行できるようになる。

最新版をダウンロードする。

https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

ダウンロードしたファイルを実行可能にする。

chmod +x ./kubectl

ファイルを移動する。

sudo mv ./kubectl /usr/local/bin/kubectl

バージョンを確認する。

kubectl version --client

ノート PC で、Master Node(k8s-node1)の /home/user/.kube/config から scp でコピーする。

scp user@10.1.1.3:/home/user/.kube/config ./home/user/.kube/

バージョンを確認する。

kubectl cluster-info

管理者権限を持つユーザーを作成する

node1 に接続して、こちら(github.com)を参考にサービスアカウント(admin-user)を作る。
kubernetes-dashboard のバージョンアップ等で delete した場合は改めて作成する。

$ vi ./admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard


$ kubectl apply -f ./admin-user.yaml 
serviceaccount/admin-user created

権限を付与する。

$ vi ~/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard


$ kubectl apply -f ./rbac.yaml 
clusterrolebinding.rbac.authorization.k8s.io/admin-user created

ベアラートークンを取得してコピーしておく。

$ kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXY1N253Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwMzAzMjQzYy00MDQwLTRhNTgtOGE0Ny04NDllZTliYTc5YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z2JrQlitASVwWbc-s6deLRFVk5DWD3P_vjUFXsqVSY10pbjFLG4njoZwh8p3tLxnX_VBsr7_6bwxhWSYChp9hwxznemD5x5HLtjb16kI9Z7yFWLtohzkTwuFbqmQaMoget_nYcQBUC5fDmBHRfFvNKePh_vSSb2h_aYXa8GV5AcfPQpY7r461itme1EXHQJqv-SN-zUnguDguCTjD80pFZ_CmnSE1z9QdMHPB8hoB4V68gtswR1VLa6mSYdgPwCHauuOobojALSaMc3RH7MmFUumAgguhqAkX3Omqd3rJbYOMRuMjhANqd08piDC3aIabINX6gP5-Tuuw2svnV6NYQ
※Githubページより

ダッシュボードに接続する

Helm をデプロイしたときのメッセージをもとに、ノート PC のターミナルで次を実行する。

export POD_NAME=$(kubectl get pods -n kubernetes-dashboard -l "app.kubernetes.io/name=kubernetes-dashboard,app.kubernetes.io/instance=kubernetes-dashboard" -o jsonpath="{.items[0].metadata.name}")
kubectl -n kubernetes-dashboard port-forward $POD_NAME 8443:8443

ダッシュボードに接続するたびに実行するのは面倒なので、スクリプトを作って PC 起動時に自動実行するように登録しておく(最後に起動するように sleep 10 としている)。

sudo vi /usr/local/bin/k8s-dashboard.sh

※中身はこちら
#/bin/sh
sleep 10
export POD_NAME=$(kubectl get pods -n kubernetes-dashboard -l "app.kubernetes.io/name=kubernetes-dashboard,app.kubernetes.io/instance=kubernetes-dashboard" -o jsonpath="{.items[0].metadata.name}")
kubectl -n kubernetes-dashboard port-forward $POD_NAME 8443:8443


chmod +x /usr/local/bin/k8s-dashboard.sh

ブラウザから https://127.0.0.1:8443/ にアクセスして、「トークン」にチェックを入れ、画像下のところにコピーしたトークンを貼り付ける。

セキュリティ確保のためなのか、毎回トークンを入力することになっている?
Chrome も Edgeも記録されない。
一定時間を経過したらベアラートークンを再取得する必要がある。

接続できた。

・・・リソース(yaml)の編集とかもここからできるみたい。

次回に向けて

寄り道したけど次回は永続ボリュームを設定しよう。

コメント

コメントする

目次