본문으로 건너뛰기

Kubernetes Engine 클러스터와 Rancher 연동

카카오클라우드 Kubernetes Engine 서비스와 Rancher를 연동하여 멀티 클러스터 환경을 쉽게 관리할 수 있습니다.

안내
  • 예상 소요 시간: 30분
  • 사용자 환경
    • 권장 운영 체제: ubuntu
    • Region: kr-central-2
  • 사전 준비 사항

시나리오 소개

이 튜토리얼은 Kubernetes Engine 서비스와 Rancher를 연동하여 멀티 클러스터 환경을 효율적으로 관리하는 방법을 안내합니다. Rancher는 온프레미스와 클라우드를 포함한 다양한 환경에서 실행되는 쿠버네티스 클러스터를 통합 관리할 수 있는 강력한 오픈소스 플랫폼입니다. Rancher를 활용하면 멀티 클러스터 환경을 쉽고 직관적으로 제어할 수 있으며, 클러스터 간 워크로드 배포와 모니터링이 용이해집니다.

이 튜토리얼의 주요 내용은 다음과 같습니다.

  • Kubernetes Engine 클러스터에 Rancher를 설치 및 연동
  • Rancher 웹 콘솔을 활용한 클러스터 관리
  • 멀티 클러스터 환경의 효율적인 운영
주의
  • 이 튜토리얼은 사전 준비 사항과 시작하기 전에 항목의 조건을 충족한 상태에서 진행해 주세요.
  • Rancher 사용 및 설정은 카카오클라우드의 공식 지원 범위에 포함되지 않으니 유의하시기 바랍니다. 자세한 내용은 Rancher 공식 홈페이지를 참고해주세요.

시작하기 전에

이 튜토리얼의 실습을 원활히 진행하려면 아래 사항들을 사전에 준비해야 합니다.

1. 쿠버네티스 클러스터 준비

Rancher에 연동할 Kubernetes Engine 쿠버네티스 클러스터(Calico CNI 설정 포함)가 필요합니다. Kubernetes Engine으로 쿠버네티스 클러스터 구축 튜토리얼을 참조하여 클러스터를 설정하고, Kubernetes Engine을 제어하기 위한 kubectl 설정을 완료합니다.

2. Rancher 설치용 VM 환경 준비

Rancher를 설치할 퍼블릭 환경의 VM 인스턴스가 필요합니다. 이 VM 인스턴스는 클러스터의 각 워커 노드와 통신이 가능해야 합니다. VM 보안 그룹 설정Kubernetes Engine의 노드 풀 보안그룹 설정을 통하여 서로 통신이 가능하도록 설정해주세요.

3. 네트워크 및 포트 구성

보안 그룹 설정을 통해 Rancher와 Kubernetes Engine 간의 네트워크 접근을 제어하고, 적절한 포트를 열어 통신을 원활하게 할 수 있습니다. Rancher 공식 포트 요구 사항을 확인하고, 보안 그룹 규칙을 적절히 설정하세요.

시작하기

Step 1. 카카오클라우드 VM 인스턴스에 Rancher 설치

카카오클라우드 VM 인스턴스에 Docker 컨테이너를 사용해 Rancher를 설치하고 웹 콘솔에 접근합니다.

  1. VM 인스턴스에 접속한 후 Docker를 사용하여 다음 명령어로 Rancher를 설치합니다.

     sudo apt update -y
    sudo apt install docker.io
    sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher
    정보

    Rancher 설치를 위한 다양한 방법은 Rancher 공식 설치 가이드를 참고하시기 바랍니다.

  2. Rancher 웹 콘솔 로그인 비밀번호 확인을 위해, Docker 명령어를 실행합니다.

     sudo docker ps # Rancher 컨테이너 ID 확인
    sudo docker logs ${CONTAINER_ID} | grep "Bootstrap Password"
  3. Rancher 웹 콘솔에 접속합니다.

    http://${VM_PUBLIC_IP}
    환경변수설명
    VM_PUBLIC_IP🖌Virtual Machine > 인스턴스 탭에서 퍼블릭 IP 확인

Step 2. Rancher 연동 yaml 파일 다운로드

Rancher 웹 콘솔에 로그인 후 설정을 완료하고, Kubernetes Engine과 연동하기 위한 yaml 파일를 다운로드합니다.

  1. Step 1. 2단계에서 확인한 비밀번호를 통해 로그인을 진행합니다. Rancher 로그인

  2. Admin 계정의 비밀번호를 변경하고 로그인을 진행합니다.
    Admin 계정 비밀번호 변경

    Server URL은 VM 인스턴스의 프라이빗 IP를 지정하여 입력합니다.

    # Server URL
    https://${VM_PRIVATE_IP}
    환경변수설명
    VM_PRIVATE_IP🖌Virtual Machine > 인스턴스 탭에서 프라이빗 IP 확인
  3. 카카오클라우드 Kubernetes Engine과 연동하기 위해 yaml 파일을 다운로드 합니다.
    Cluster Management > Import Existing 클릭 > Generic 클릭 > 필요한 값 입력 후 Create 클릭 순서로 진행이 가능합니다. yaml 다운로드

    웹 콘솔에서 제공하는 URL을 Rancher를 설치한 VM에서 실행하여 yaml 파일 다운로드를 진행합니다.

      # yaml 파일 다운로드 명령어 예시
    curl --insecure -sfL https://${VM_PRIVATE_IP}/v3/import/9ppxrgd6rfgz6xf6wz2q6znk5whjz2vnbwm5scn8slwwbz7wm6fc_c-m-67n5s5qq.yaml > kakaocloud_ke.yaml

    다운로드 받은 yaml 파일은 Rancher와의 연동을 위한 쿠버네티스 내 리소스를 생성합니다. 예시는 아래 내용과 같습니다.

    # yaml 파일 예시
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    ...
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    ...
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: cattle
    namespace: cattle-system

    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    ...
    ---
    apiVersion: v1
    kind: Secret
    ...
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
    name: cattle-admin
    ...
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: cattle-cluster-agent
    namespace: cattle-system
    ...
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: cattle-cluster-agent
    namespace: cattle-system
    ...

Step 3. Kubernetes Engine에 yaml 파일 적용

Kubernetes Engine에서 yaml 파일를 적용해 Rancher와의 연동을 완료합니다.

  1. Rancher 연동을 위해 다운로드 받은 스크립트를 kubectl 명령어를 통해 적용합니다. 이 명령어는 Rancher와 Kubernetes Engine을 연동하기 위한 쿠버네티스 리소스를 생성하는 역할을 합니다.

     kubectl apply -f kakaocloud_ke.yaml
  2. Master 노드들이 컨테이너 네트워크에 포함되어 있지 않아 WebHook 설정이 필요합니다. 따라서 hostNetwork=true 설정을 추가한 WebHook을 yaml 파일로 배포합니다.

    rancher_webhook.yaml
     apiVersion: v1
    kind: ConfigMap
    metadata:
    name: rancher-config
    namespace: cattle-system
    labels:
    app.kubernetes.io/part-of: "rancher"
    data:
    rancher-webhook: '{"global": {"hostNetwork": true}}'
  3. rancher_webhook.yaml 파일을 kubectl 명령어로 카카오클라우드 Kubernetes Engine에 적용합니다.

     kubectl apply -f rancher_webhook.yaml
  4. 이제 Rancher 웹 콘솔에서 Kubernetes Engine이 Acitve 상태로 연결된 것을 확인할 수 있습니다. 이 시점에서 Master Node들도 포함되어 Rancher에서 조회 가능한지 확인합니다. Kuberneted Engine 연동 확인

  5. Rancher 웹 콘솔에서 Master Node가 포함된 Kubernetes Engine을 확인하고, 제어할 수 있습니다.