kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

Kubernetes Dashboardをサクッと立てる

f:id:kun432:20210120011530p:plain

テスト用にKubernetes Dashboardを立てたい場合のメモ。kubectl patchを使ってみたかっただけ。推奨しないw

Kubernetes Dashboardのインストール

kubernetesのレポジトリにあるmanifestをそのまま入れる。alternativeを使っているのはHTTPでアクセスしたいから。

$ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/alternative.yaml

serviceを見るとClusterIPになっている。

$ kubectl -n kubernetes-dashboard get service kubernetes-dashboard
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes-dashboard   ClusterIP   10.101.100.92   <none>        80/TCP    6m

NodePort:30080に変えたり、認証スキップ可能にしたり。patchコマンドを使う。

$ kubectl -n kubernetes-dashboard patch service kubernetes-dashboard -p '{"spec":{"type": "NodePort"}}'
$ kubectl -n kubernetes-dashboard patch service kubernetes-dashboard --type='json' -p='[{"op": "replace", "path": "/spec/ports/0/nodePort", "value": 30080}]'
$ kubectl -n kubernetes-dashboard patch deploy kubernetes-dashboard --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"},{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--disable-settings-authorizer"},]'

ちゃんと変更されている

$ kubectl -n kubernetes-dashboard get service kubernetes-dashboard
NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   NodePort   10.101.100.92   <none>        80:30080/TCP   10m

$ kubectl -n kubernetes-dashboard get deploy kubernetes-dashboard -o json| jq '.spec.template.spec.containers[0].args'
[
  "--namespace=kubernetes-dashboard",
  "--enable-insecure-login",
  "--enable-skip-login",
  "--disable-settings-authorizer"
]

ローリングアップデートしてあとはブラウザで確認

$kubectl -n kubernetes-dashboard rollout restart deployment kubernetes-dashboard

おまけ

権限も無視するならばこれで。

$ kubectl delete clusterRoleBinding kubernetes-dashboard

$ cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
EOF