Rancher를 사용해 Cilium 설치하기

Rancher를 사용해 Cilium 설치하기

Rancher 관리형 RKE2 다운스트림 클러스터 위에 공식 Cilium Helm 차트 기반의 out-of-band Cilium 설치를 하는 방법을 다뤄요. Rancher의 기본 CNI 대신 Cilium을 직접 설치하고 싶을 때 유용해요.

출처: Installation using Rancher

본문

소개

Rancher Management Console/UI로 클러스터를 설치하지 않는다면 standalone RKE 클러스터 가이드로 이동하세요.

Rancher는 Cilium을 공식 지원해요. 대부분의 Rancher 사용자에게 Rancher가 관리하는 클러스터에서 Cilium을 쓰는 권장 방법은 이 공식 지원이에요.

하지만 Rancher는 독립적인 릴리스 주기를 가진 커스텀 rke2-cilium Helm 차트를 사용하기 때문에, Cilium 파워 유저라면 Rancher가 관리하는 RKE2 다운스트림 클러스터 위에서 공식 Cilium Helm chart 기반의 out-of-band Cilium 설치를 선호할 수 있어요. 이 가이드는 그 방법을 설명해요.

참고

이 가이드는 Rancher 관리형(non-standalone) RKE2 클러스터에 대한 단계별 안내만 보여줘요.

참고

이 가이드는 Rancher 관리형 Custom Cluster에 Cilium을 설치하는 방법을 보여줘요. 다만 이 방법은 VMware vSphere 같은 제공자로 만든 클러스터에도 적용돼요.

전제조건

  • 완전히 동작하는 Rancher Version 2.x 인스턴스
  • 초기 다운스트림 "Custom Cluster"(Control Plane) 노드로 사용할 최소 하나의 빈 Linux VM
  • 다운스트림 "Custom Cluster" Control Plane 노드(들) 또는 L4 로드밸런서의 Kubernetes API를 가리키는 DNS 레코드

새 클러스터 생성하기

Rancher UI에서 Cluster Management 페이지로 이동해요. 오른쪽 상단의 Create 버튼을 클릭해 새 클러스터를 만들어요.

../../_images/rancher_add_cluster.png

클러스터 생성 페이지에서 새 Custom 클러스터 생성을 선택해요.

../../_images/rancher_existing_nodes.png

Create Custom 페이지가 열리면 클러스터 이름을 제공해요. 같은 Basics 섹션에서 Container Network 드롭다운 목록을 펼치고 none을 선택해요.

../../_images/rancher_select_cni.png

다른 구성 옵션들을 살펴보고 자신의 설정과 관련된 것들을 구성해요.

RKE2 내장 Helm Operator를 사용해 Cilium을 설치하려면 HelmChart 매니페스트를 추가해요. Additional Manifests 섹션으로 이동해 다음 YAML을 붙여 넣어요. 자신의 Cilium 설치에 관련된 values를 추가해요.

apiVersion: catalog.cattle.io/v1
kind: ClusterRepo
metadata:
  name: cilium
spec:
  url: https://helm.cilium.io
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: cilium
  namespace: kube-system
spec:
  targetNamespace: kube-system
  createNamespace: false
  version: v1.18.0
  chart: cilium
  repo: https://helm.cilium.io
  bootstrap: true
  valuesContent: |-
    # paste your Cilium values here:
    k8sServiceHost: 127.0.0.1
    k8sServicePort: 6443
    kubeProxyReplacement: true

../../_images/rancher_additional_manifests.png

참고

k8sServiceHost는 127.0.0.1로, k8sServicePort는 6443으로 설정해야 해요. 컨트롤 플레인 노드에서 실행되는 Cilium Agent는 Kubernetes API 프로세스와 통신에 로컬 주소를 사용해요. 컨트롤 플레인 노드에서 다음으로 확인할 수 있어요.

$ sudo ss -tulpn | grep 6443
tcp   LISTEN 0      4096                 *:6443             *:*    users:(("kube-apiserver",pid=124481,fd=3))

워커 노드에서는 Cilium Agent가 포트 6443에서 수신 중인 rke2 프로세스와 통신하기 위해 로컬 주소를 사용해요. rke2 프로세스는 요청을 Control Plane 노드에서 실행 중인 Kubernetes API 서버로 프록시해요.

$ sudo ss -tulpn | grep 6443
tcp   LISTEN 0      4096         127.0.0.1:6443       0.0.0.0:*    users:(("rke2",pid=113574,fd=8))

페이지 하단의 Edit as YAML 상자를 클릭해요. 창 안의 편집기에서 클러스터 구성이 열릴 거예요.

Cluster Custom Resource(provisioning.cattle.io/v1) 안에서 rkeConfig 섹션을 확인해요. Additional Manifests 섹션에 추가한 매니페스트로 구성되어 있어야 해요.

기본 kube-proxy를 비활성화하고 Cilium 구성이 Kube-Proxy Replacement를 활성화한다면 spec.rkeConfig.machineGlobalConfig 섹션을 확인하고 spec.rkeConfig.machineGlobalConfig.disable-kube-proxy를 true로 설정하세요.

../../_images/rancher_config_yaml.png

준비되면 Create를 클릭하고 Rancher가 클러스터를 만들어요.

../../_images/rancher_cluster_state_provisioning.png

노드를 추가하기 전까지 클러스터는 Updating 상태로 남아요. 클러스터를 클릭해요. Registration 탭에서 다운스트림 클러스터 노드에서 실행해야 하는 생성된 Registration command를 볼 수 있어요.

올바른 노드 역할을 선택하는 것을 잊지 마세요. Rancher는 기본적으로 세 역할(etcd, Control Plane, Worker)을 모두 배포하는데, 멀티노드 클러스터에서는 종종 원하는 것과 다를 수 있어요.

../../_images/rancher_registration_command.png

노드를 최소 하나 이상 추가한 지 몇 초 후면 Machines 탭에서 새 노드(들)을 볼 수 있어요. Cilium CNI는 Helm Operator가 클러스터 부트스트랩 과정에서 설치하는데, 클러스터에 Cilium을 설치하는 Kubernetes Job이 생성돼요.

몇 분 후에는 노드가 Ready 상태로 바뀐 것을 볼 수 있어요.

kubectl get nodes -A
NAME            STATUS   ROLES                              AGE   VERSION
ip-10-1-1-167   Ready    control-plane,etcd,master,worker   41m   v1.32.6+rke2r1
ip-10-1-1-231   Ready    control-plane,etcd,master,worker   41m   v1.32.6+rke2r1
ip-10-1-1-50    Ready    control-plane,etcd,master,worker   45m   v1.32.6+rke2r1

Rancher UI로 돌아오면 클러스터가 정상 Active 상태로 바뀐 것을 볼 수 있어요.

../../_images/rancher_cluster_created.png

끝났어요! 이제 이 클러스터를 기본 Rancher 방식으로 CNI를 설치한 것처럼 사용할 수 있어요. 클러스터를 확장/축소하거나 노드를 추가/제거할 수 있어요.

Cilium 설치 확인

설치 후 Cilium 저장소와 Helm 릴리스는 Rancher가 추적해요. Rancher UI로 Cilium 수명 주기를 관리할 수 있어요. Cilium이 설치됐는지 확인하려면 Rancher UI에서 Cilium 앱을 확인하세요.

<your-cluster> -> Apps -> Installed Apps로 이동해요. 상단 드롭다운 메뉴에서 All Namespaces 또는 Project: System -> kube-system을 선택해 Cilium 앱을 봐요.

../../_images/rancher_cluster_cilium_app.png

Cilium Helm 저장소는 Additional Manifests 섹션에서 Rancher에 추가됐어요.

../../_images/rancher_cilium_repo.png

새 Cilium 버전이 나오면 이 앱 항목에 작은 힌트가 표시돼요. 그러면 Rancher UI에서 직접 업그레이드할 수 있어요.

../../_images/rancher_cluster_cilium_app_upgrade.png ../../_images/rancher_cluster_cilium_app_upgrade_versions.png

더 알아보기 (Learn more)