microk8s - dashboard

Murphy·2023년 3월 3일
0

microk8s

목록 보기
1/2

잡담

회사에서 업무를 하면서 Kubernates(이하 k8s) 환경에 배포를 하고 있다. 하지만 환경은 모두 DevOps 팀에서 준비하였고 CI/CD 파이프라인을 통해 docker 이미지만 빌드하게 하면 그 뒤는 전부 자동화되어 있었다. 바꿔 말하면 k8s를 사용하지만 정말 사용자로 사용만 하고 있다.
최근 이런저런 테스트를 하면서 시스템을 구성해서 테스트하고 싶은 것들이 생겼고, k8s 환경을 꾸리기로 했다.

그런데 뭐가 많다.

k8s 자체를 처음부터 설치 할 수도 있지만 쉽게 사용할 수 있도록 제공되는 패키지들이 보인다.

  • k3s
  • minikube
  • microk8s

각자 본인들이 제공하는 서비스가 좋다고 말하겠지만, 결과부터 말하면 일단 microk8s를 선택했다. 아, 제목에 써있다. 이유는 Ubuntu server 설치 할 때 같이 설치할 수 있는 항목으로 나온다.
어차피 개인적인 테스트 목적의 구성이라 재구성의 부담은 없기에 일단 가본다.

microk8s에서 위 3개를 비교한 표가 있다. 참고용으로만 링크한다.

MicroK8s vs K3s vs minikube

microk8s

설치

설치는 위에서 언급한 대로 ubuntu service 설치하면서 같이 설치 했다. 따라서 기본 설치에서 따로 작업한 부분은 없다. 😀

그래도 여기 가벼운 문서 링크는 남긴다.

Quickstart

초기 설정

Quickstart에 나오는 그리고 추가적으로 내가 했던 설정들 이다.

사용자 그룹에 계정 추가하기

매번 sudo 사용하기 귀찮다.

sudo usermod -a -G microk8s <username>

Add-on 추가하기

microk8s 는 add-on을 지원하고 있다. 현재 상태는 microk8s status 명령어로 확인 할 수 있다.
add-on 설치는 다음 명령어로 가능하다.

microk8s enable <name>

내가 추가한 add-on은 다음과 같다.

microk8s enable dns
microk8s enable dashboard
microk8s enable ingress
microk8s enable registry

Dashboard

설치(활성화)는 위 명령어로 간단하게 된다. 쉽다.
Dashboard의 동작은 먼저 확인해 보자. 우선 RBAC Role-Based Access Control을 활성화 하지 않았기 때문에 토큰을 발행해서 Dashboard에 접근 할 수 있다.

토큰 확인

default account의 토큰을 생성한다. JWT 형식의 토큰이 생성된다.

Usage:
	kubectl create token SERVICE_ACCOUNT_NAME [options]

microk8s kubectl create token default

Decode

디코드 해보면 이런 내용이 들어 있다.

포트 포워드

Dashboard 접근을 위해서는 microk8s에서 동작 하고 있는 dashboard 서비스에 접근 할 수 있는 방법을 마련해야 한다.

addon-dashboard

local

microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443

remote

microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443 --address 0.0.0.0

Ingress

L7 load balanser로 외부 트래픽을 cluster 내부의 서비스에 라우팅하는 역할을 한다.

What is Ingress?

즉, cluster 내부에서 동작하는 dashboard 서비스를 ingress를 통해 외부에서 접속하게 설정 할 수 있다. 그럼 위에서 했던 포드 포워드를 하지 않아도 항상 접속 할 수 있으니 좀 더 편하게 사용 할 수 있다.

규칙 추가하기

라우팅 규칙을 추가하기 위해서는 먼저 관련 설정 파일은 준비해야 한다.
아래 설정 파일은 kubernetes-dashboard 서비스를 /dashboard 에 연결하는 설정이다.

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard
  namespace: kube-system
  annotations:
    # use the shared ingress-nginx
    kubernetes.io/ingress.class: public
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite ^(/dashboard)$ $1/ redirect;
spec:
  # https://kubernetes.io/docs/concepts/services-networking/ingress/
  # https://kubernetes.github.io/ingress-nginx/user-guide/tls/
  rules:
  - http:
      paths:
      - path: /dashboard(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

위 파일을 저장한 뒤 아래 명령어로 microk8s에 적용 할 수 있다.

microk8s kubectl apply -f <file-name>

설정 확인

Dashboard의 ingress 설정이 잘 되었다면, https://<host>/dashboard로 접속 할 수 있다. 그리고 아래와 같이 Ingress가 설정되어 있는 것을 dashboard를 통해서도 볼 수 있다.

profile
Anything that can go wrong will go wrong.

0개의 댓글