본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Calico VPP로 OpenShift 4 클러스터 설치하기

원문 보기 위키 갱신

OpenShift 4 클러스터에 VPP 데이터 플레인을 사용하는 Calico를 설치하는 방법을 다뤄요. OpenShift 설치 절차에 Calico VPP용 매니페스트 추가와 서비스 CIDR 확인 같은 단계를 얹는 방식으로 진행해요. 설치 후 OLM(Operator Lifecycle Manager)과의 통합 옵션도 함께 소개해요.

출처: 문서

본문

큰 그림

Calico VPP를 적용한 OpenShift 4 클러스터를 설치해요.

가치

OpenShift 문서의 해당 단계를 보완해 Calico VPP를 설치해요.

방법

시작하기 전에

  • cali*, tunl*, vxlan.calico 인터페이스 관리와 관련된 요구 사항을 제외하고, 환경이 Calico 시스템 요구 사항을 충족하는지 확인해요.

  • RedHat 계정이 있는지 확인해요. OpenShift 클러스터를 프로비저닝하는 데 필요한 pull secret을 받으려면 RedHat 계정이 필요해요.

  • 현재는 OpenShift v4.13 이상에서 AWS에 설치하는 것만 지원해요. 따라서 다음을 준비했는지 확인해요.

    • OpenShift 4에 적합하게 구성된 AWS 계정
    • AWS 자격 증명 설정
    • 로컬 SSH 개인 키 생성 후 ssh-agent에 추가

참고: OpenShift 설치 프로그램은 AWS 리전의 일부만 지원해요.

OpenShift 설치 프로그램용 구성 파일 만들기

설치를 위한 스테이징 디렉터리를 만들어요. 이 디렉터리에는 OpenShift 설치 프로그램이 만들 구성 파일과 클러스터 상태 파일이 담겨요.

mkdir openshift-tigera-install && cd openshift-tigera-install

OpenShift 설치 프로그램을 실행해 기본 구성 파일을 만들어요.

openshift-install create install-config

참고: 설치 프로그램과 플랫폼에 필요한 구성 변경에 대한 자세한 내용은 OpenShift 설치 프로그램 문서를 참고하세요.

설치 프로그램이 끝나면 스테이징 디렉터리에 install-config.yaml 구성 파일이 생겨요.

구성 파일을 Calico를 사용하도록 수정하기

OpenShift 네트워킹을 Calico로 오버라이드하고, AWS 인스턴스 타입을 시스템 요구 사항에 맞게 업데이트해요.

sed -i 's/networkType:.*/networkType: Calico/' install-config.yaml
sed -i 's/platform: {}/platform:\n    aws:\n      type: m5.4xlarge/' install-config.yaml

설치 매니페스트 생성하기

구성 파일을 사용해 Kubernetes 매니페스트를 생성해요.

openshift-install create manifests

OpenShift용 Calico 매니페스트를 내려받아 생성된 매니페스트 디렉터리에 추가해요.

mkdir calico
wget -qO- https://github.com/projectcalico/calico/releases/download/v3.33.0/ocp.tgz | \
tar xvz --exclude=ocp/01-configmap-kubernetes-services-endpoint.yaml --exclude=ocp/cluster-network-operator.yaml --strip-components=1 -C calico
cp calico/* manifests/

OpenShift용 Calico VPP 매니페스트를 내려받아 생성된 매니페스트 디렉터리에 추가해요.

mkdir vpp
cd vpp
curl -O "https://raw.githubusercontent.com/projectcalico/vpp-dataplane/v3.32.0/yaml/platforms/openshift/00-namespace-calico-vpp-dataplane.yaml"
curl -o 03-cr-installation.yaml "https://raw.githubusercontent.com/projectcalico/vpp-dataplane/v3.32.0/yaml/platforms/openshift/01-cr-installation.yaml"
curl -o 02-configmap-calico-vpp-resources.yaml "https://raw.githubusercontent.com/projectcalico/vpp-dataplane/v3.32.0/yaml/platforms/openshift/03-configmap-calico-vpp-resources.yaml"
curl -o 02-role-calico-vpp-dataplane.yaml "https://raw.githubusercontent.com/projectcalico/vpp-dataplane/v3.32.0/yaml/platforms/openshift/03-role-calico-vpp-dataplane.yaml"
curl -o 02-rolebinding-calico-vpp-dataplane.yaml "https://raw.githubusercontent.com/projectcalico/vpp-dataplane/v3.32.0/yaml/platforms/openshift/03-rolebinding-calico-vpp-dataplane.yaml"
curl -o 02-serviceaccount-calico-vpp-dataplane.yaml "https://raw.githubusercontent.com/projectcalico/vpp-dataplane/v3.32.0/yaml/platforms/openshift/03-serviceaccount-calico-vpp-dataplane.yaml"
curl -O "https://raw.githubusercontent.com/projectcalico/vpp-dataplane/v3.32.0/yaml/platforms/openshift/04-calico-vpp-nohuge.yaml"
cd ..
cp vpp/* manifests/

manifests/02-configmap-calico-vpp-resources.yaml의 SERVICE_PREFIX가 클러스터의 서비스 CIDR과 일치하는지 확인해요.

SERVICE_CIDR=`grep -A1 serviceNetwork: ./manifests/cluster-config.yaml | tail -n1 | cut -d '-' -f2`
sed -i "s#SERVICE_PREFIX:.*#SERVICE_PREFIX:$SERVICE_CIDR#" ./manifests/02-configmap-calico-vpp-resources.yaml

(선택) 추가 구성 제공하기

설치 시점에 Calico나 VPP 데이터 플레인에 추가 구성을 제공하고 싶을 수 있어요. 예를 들어 BGP 구성이나 피어가 있을 수 있죠. 원하는 Calico 리소스를 담은 Kubernetes ConfigMap을 사용해 설치의 일부로 구성을 설정할 수 있어요. 추가 구성이 필요 없다면 이 섹션은 건너뛰어도 돼요.

설치 중 Calico 리소스를 포함하려면 manifests/02-configmap-calico-resources.yaml을 편집해 여러분의 구성을 추가해요.

VPP 데이터 플레인 구성을 커스터마이징하려면 manifests/02-configmap-calico-vpp-resources.yaml을 편집해요. 자세한 내용은 시작하기의 Configuration options 섹션을 참고하세요.

참고: Calico 리소스가 담긴 디렉터리가 있다면 다음 명령으로 파일을 만들 수 있어요.

oc create configmap -n tigera-operator calico-resources \
--from-file=<resource-directory> --dry-run -o yaml \
manifests/02-configmap-calico-resources.yaml

최근 버전의 oc에서는 실제로 사용하지 않더라도 kubeconfig가 구성되어 있거나 --server='127.0.0.1:443'을 추가해야 해요.

참고: calico-resources ConfigMap을 제공했는데 tigera-operator 파드가 Init:CrashLoopBackOff로 뜨지 않는다면, oc logs -n tigera-operator -l k8s-app=tigera-operator -c create-initial-resources로 init 컨테이너 출력을 확인해요.

클러스터 만들기

다음 명령으로 클러스터 생성을 시작하고 완료될 때까지 기다려요.

openshift-install create cluster

위 명령이 끝나면 다음 명령으로 컴포넌트가 사용 가능한지 확인해 Calico VPP가 설치되었는지 검증할 수 있어요.

oc get tigerastatus

(선택) Operator Lifecycle Manager와 통합하기

OpenShift Container Platform에서 Operator Lifecycle Manager (OLM)는 클러스터 관리자가 오퍼레이터 수명 주기를 관리하도록 도와줘요. Calico 오퍼레이터를 OLM으로 관리하면 관리자가 한 곳에서 오퍼레이터를 관리할 수 있어요.

  1. 실행 중인 Calico 오퍼레이터를 OLM에 등록하려면 먼저 오퍼레이터용 OperatorGroup을 만들어야 해요.
oc apply -f - <<EOF
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: tigera-operator
  namespace: tigera-operator
spec:
  targetNamespaces:
    - tigera-operator
EOF
  1. 오퍼레이터 구독(Subscription)을 만들어요. 오퍼레이터 패키지를 구독하면 Calico 오퍼레이터가 OLM의 관리를 받게 돼요.
oc apply -f - <<EOF
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: tigera-operator
  namespace: tigera-operator
spec:
  channel: release-v1.44
  installPlanApproval: Manual
  name: tigera-operator
  source: certified-operators
  sourceNamespace: openshift-marketplace
  startingCSV: tigera-operator.v1.44.0
EOF
  1. OpenShift 콘솔에 로그인해 Installed Operators 섹션으로 이동한 뒤 오퍼레이터의 설치 플랜(install plan)을 승인해요.

참고: 이로 인해 오퍼레이터 배포와 그 모든 리소스(파드, deployment 등)가 다시 생성될 수 있어요.

OpenShift 콘솔은 오퍼레이터 설치를 편집하고 오퍼레이터 상태를 확인하는 등의 작업을 위한 인터페이스를 제공해요.

다음 단계

Calico VPP를 설치한 후에는 빠른 IPsec이나 WireGuard 암호화 같은 VPP 데이터 플레인의 기능을 활용할 수 있어요.

도구

보안

더 알아보기 (Learn more)

VPP 데이터 플레인은 고성능 패킷 처리가 필요한 환경에서 빛을 발해요. 설치가 끝났다면 oc get tigerastatus로 컴포넌트 상태를 먼저 확인한 뒤 암호화 기능으로 넘어가는 것을 추천해요.