1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

kubernetes dashboardにIngressを通してアクセスする

Last updated at Posted at 2021-08-06

kubernetesのリソースをGUIで操作できるdashboardを導入する。


環境
クライアント...dashboardを利用する端末(ubuntu)
サーバ...master1台(centos8)、worker2台(centos8)
kubernetes v1.21.3


以下のyamlを利用する。そのままだと見られないリソースが多いので適宜カスタマイズ。
https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

kube proxyコマンドで外部からの通信を受け付けるようにしても、dashboardを利用できず。。

kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

Screenshot from 2021-08-02 23-43-55.png

以下のページによるとホストからのアクセス以外はHTTPSでのアクセスが必要なので、IngressでTLS設定をしてアクセスしてみる。
https://github.com/kubernetes/dashboard/blob/master/docs/user/accessing-dashboard/README.md#login-not-available

IngressをLoadBalancerで公開したいので、OpenELBをインストールし、セットアップ詳細は省略する。
設定をしなければNodePortで実施する。
https://porterlb.io/docs/getting-started/installation/install-porter-on-kubernetes/


IngressでTLSを終端する設定
①kubectl create secret tlsを実行

kubectl create secret tls dashboard-tls --key=dashboard.key --cert=dashboard.crt -n kubernetes-dashboard

②以下のようにingressオブジェクトを作成

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: k8s-dashboard-ing
  namespace: kubernetes-dashboard
spec:
  tls:
  - hosts:
      - k8s-dashboard.local
    secretName: dashboard-tls
  rules:
  - host: k8s-dashboard.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

③serviceリソース「kubernetes-dashboard」をNodePortへ変更


...
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
...

通信の設定が終わったのでデプロイし、実際にアクセス。しかしうまく行っていない。。
https://k8s-dashboard.local
Screenshot from 2021-08-06 22-37-59.png

以下のページを参考にIngressを修正したらアクセスできた。
https://serverfault.com/questions/1031810/400-error-with-nginx-ingress-to-kubernetes-dashboard

annotations:
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/configuration-snippet: |-
      proxy_ssl_server_name on;
      proxy_ssl_name $host;

結果
Screenshot from 2021-08-06 22-44-24.png
あとは、トークンを入力してログインするだけ。


所感
セキュリティを確保するのであればローカルからkubectl proxy公開したほうがよさそう。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?