Kubernetesのdashboardをingressから表示する
Kubernetesの状態が知りたいなと思い調べたところ、公式のWebUIであるdashboardをみつけました。
README通りにやれば簡単にインストールできますが、proxy経由でしか表示させる方法が書いてなく不便だったので、ingressを使用して表示させる方法を書きます。
証明書が入ったsecretの作成
dashboardは証明書がないとアクセスできない設定になっているので、まずは証明書を作成します。
dashboardのアクセスにドメインを使用する場合はLet's Encryptで簡単に証明書が取得できるので、取得しましょう。
Let's Encryptの使い方は他のサイトに譲ります。
ドメインがない場合は自己証明書を用意します。
このやり方はdashboardのwikiに書いてあるので、それ通りにやればOKです。
Certificate management · kubernetes/dashboard Wiki · GitHub
証明書が準備できたらsecretの作成に入ります。
$ kubectl create secret tls kubernetes-dashboard-certs --key dashboard.key--cert dashboard.crt -n kube-system
dashboardはkube-systemというnamespaceに作成されるので、このnamespaceにsecretを作成する必要があります。
dashboardのインストール
dashboardのインストールは公式にある通りにapplyするだけです。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
ingressの設定
基本的には通常と同じようにingressを設定すれば問題ありませんが、1つだけ注意しなければいけないことがあります。
ingress-nginxの場合は、namespaceごとにingressを作成する必要があります。
そのため、今回はkube-systemというnamespaceにingressを作成します。
apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/secure-backends: "true" name: dashboard-ingress namespace: kube-system spec: rules: - host: "sample.dash.jp" http: paths: - path: / backend: serviceName: kubernetes-dashboard servicePort: 443 tls: - hosts: - "sample.dash.jp" secretName: kubernetes-dashboard-certs