PaaS/Kubernetes

Kubernetes Dashboard를 외부로 노출시키기 위한 Ingress 작업

armyost 2023. 11. 13. 15:25
728x90

Kubernetes Dashboard를 외부에 오픈하기 위해 NodePort나 Loadbalancer로 노출시키는 사례도 많은데, 가급적이면 서비스는 Ingress나 Gateway 리소스를 쓰는것이 좋다.

 

우선 Ingress Controller가 있는지 확인하고 없다면 설치하자.
ingress controller 설치   https://kubernetes.github.io/ingress-nginx/deploy/

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/baremetal/deploy.yaml



Kubernetes 어플리케이션을 배포하자

Kubernetes Dashboard 배포 https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

 

Ingress 를 작성하고 배포 하자

# dashboard-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard-ingress
  namespace: kubernetes-dashboard
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  ingressClassName: "nginx"
  rules:
  - host: dashboard.sicc.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

 

$ kubectl apply -f dashboard-ingress.yaml

 

 

이제 서비스를 접속하자.

브라우저에 : https://dashboard.sicc.com:32340/#/login

 

단 여기서 주의할 것은 

Ingress Controller가 외부로 노출된 포트에 접속을 해야한다는 것이다. 

 

여기서 좀 갈리는데, 

 

Ingress Controller를 위 가이드 데로 설치를 하면 특정 Service 포트를 확인할 수 있다.

이처럼 NodePort를 세팅한 Ingress Controller는 이 Endpoint로 브라우저가 접근하도록 해야 한다.

 

근데, 요즘에 세련되게 Ingress Controller 를 설치하는 곳은 DaemonSet을 사용한다. 이때는 대체로 그냥 모든 Worker Node의 80 또는 443이 Endpoint로 바로 올라와 있다. 

이때는 Ingress Controller Service를 찾으려 하지말고 그냥 443이나 80으로 붙으면 어플리케이션 접근이 가능하다.