로컬 서버에 k8s cluster 환경 구성하기 part 2 (rancher)

Published: by Creative Commons Licence

Table of Contents




    intro

    지난번에 이어 로컬서버에 k8s cluster 환경을 구성하고 있습니다. k8s cluster를 구성하는데에서 시작하여 airflow를 k8s 환경에서 동작하도록 구성하는것이 목표입니다. part2, 이번 포스트에는 k8s cluster의 관리도구인 rancher를 세팅한 과정, 그리고 airflow의 데이터 저장공간으로 사용할 ceph storage를 세팅한 과정을 담아보겠습니다.

    • ☑ k8s cluster 설치
    • ☑ nginx 구성
    • ☑ rancher 구성
    • ☐ gitea 구성
    • ☐ ceph storage 구성
    • ☐ airflow (iceberg, hive, spark, trino) 구성…

    rancher를 구성할때에는 https://ranchermanager.docs.rancher.com/getting-started/installation-and-upgrade/install-upgrade-on-a-kubernetes-cluster 를 참고하였습니다.

    prepare

    먼저 아래와같이 helm repo를 추가하고, name space를 선언해두었습니다.

    helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    
    kubectl create namespace cattle-system
    kubectl create namespace cert-manager

    secret 생성

    • rancher.000namc.xyz
    kubectl create secret tls rancher-secret \
      --key /etc/letsencrypt/live/rancher.000namc.xyz/privkey.pem \
      --cert /etc/letsencrypt/live/rancher.000namc.xyz/cert.pem \
      --namespace cattle-system

    cert-manager install

    rancher에서 자체적으로 사용하는 인증서라고 합니다. rancher 홈페이지의 가이드에 나와있는 세가지 방법 중 비교적 간단해보이는 옵션으로 진행하였습니다.

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.crds.yaml
    helm install cert-manager jetstack/cert-manager --namespace cert-manager --set crds.enabled=false

    rancher install

    아래와 같이 helm을 이용해 rancher를 설치하였습니다.

    helm install rancher rancher-stable/rancher \
      --namespace cattle-system \
      -f /app/k8s/rancher/values.yaml \
      --set ingress.tls.secretName=rancher-secret \
      --set ingress.ingressClassName=nginx
    
    # helm upgrade rancher rancher-stable/rancher \
      --namespace cattle-system \
      -f /app/k8s/rancher/values.yaml

    values.yaml에 따로 parameter를 저장해두었습니다.

    hostname: 000namc.xyz
    bootstrapPassword: admin

    설치 과정중에 많은 시행착오가 있었습니다. 과정중에 원인을 파악하기 위해 사용했던 명령어들을 정리해두려 합니다.

    # ingress-nginx가 어떤 요청을 받고 있는지 확인
    kubectl -n ingress-nginx logs -l app.kubernetes.io/name=ingress-nginx -f
    
    # helm을 통해 설정된 ingress를 yaml로 저장 
    kubectl -n cattle-system get ingress rancher -o yaml > ingress.yaml
    
    # localhost 환경에서 rancher가 제대로 동작하는지 확인하기위해 포트포워딩 세팅
    kubectl port-forward -n cattle-system --address 0.0.0.0 svc/rancher 80:80
    
    # dashboard가 성공적으로 동작하는지 확인 
    curl -k https://localhost/dashboard/?setup=admin
    
    # 기본적인 값 조회...
    kubectl get ingress rancher -n cattle-system
    kubectl describe ingress rancher -n cattle-system

    최종적으로 rancher는 https://rancher.000namc.xyz/dashboard/home 로 접근할 수 있게 되었습니다.