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

패키지 매니저로 바이너리 설치하기

원문 보기 위키 갱신

패키지 매니저를 사용하면 클러스터에 속하지 않은 호스트에도 Calico를 손쉽게 설치할 수 있어요. apt나 yum 같은 Linux 패키지 매니저로 Calico 바이너리를 받아 네트워크 정책을 담당하는 Felix를 띄우는 방법을 소개해요. 클러스터가 아닌 호스트에 정책만 적용하고 싶을 때 딱 맞는 설치 방식이에요.

출처: 문서

본문

큰 그림

패키지 매니저를 사용해 클러스터에 속하지 않은 호스트에 Calico를 설치해요.

가치

패키지로 제공되는 Calico 바이너리는 설치와 업그레이드가 쉬워요. 이 방식은 init 시스템을 자동으로 구성해 Felix가 계속 실행되도록 유지해 줘요.

시작하기 전에

  1. Calico 데이터스토어가 떠 있고 호스트에서 접근 가능한지 확인해요.
  2. 호스트가 최소 시스템 요구 사항을 충족하는지 확인해요.
  3. 시스템이 Ubuntu 계열이나 RedHat 계열이 아니라면 다른 설치 방법을 선택해야 해요.
  4. 네트워킹 기능과 함께 Calico를 설치하려면(클러스터 워크로드와 통신할 수 있도록) 컨테이너 설치 방식을 선택하는 게 좋아요.
  5. Kubernetes 데이터스토어라면 kubectl을 설치하고, etcd3 데이터스토어라면 calicoctl 설치 및 구성을 진행해요.

방법

이 가이드는 네트워크 정책을 담당하는 Calico 데몬인 Felix를 설치하는 방법을 다뤄요.

1단계: 바이너리 설치하기

PPA 사용 조건: Ubuntu 14.04 또는 16.04

sudo add-apt-repository ppa:project-calico/calico-3.33
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install calico-felix

RPM 사용 조건: RedHat 7 계열 배포판

cat > /etc/yum.repos.d/calico.repo <<EOF
[calico]
name=Calico Repository
baseurl=https://binaries.projectcalico.org/rpm/calico-3.33/
enabled=1
skip_if_unavailable=0
gpgcheck=1
gpgkey=https://binaries.projectcalico.org/rpm/calico-3.33/key
priority=97
EOF

yum install calico-felix

데이터베이스를 초기화하기 전까지 Felix는 "wait-for-ready" 상태라는 로그를 주기적으로 남겨요. 로그 파일의 기본 위치는 /var/log/calico/felix.log예요.

2단계: 데이터스토어 연결 구성하기

다음 지침과 샘플 파일을 사용해 호스트에서 Calico를 시작할 환경 변수를 정의해요. 더 많은 도움이 필요하면 Felix 구성 참조를 확인하세요.

Tab: Kubernetes 데이터스토어

Kubernetes 데이터스토어(기본값)라면 다음을 설정해요.

변수 구성 안내
FELIX_DATASTORETYPE kubernetes로 설정
KUBECONFIG Kubernetes API 서버에 접근하기 위한 kubeconfig 파일 경로

Tab: etcd 데이터스토어

etcdv3 데이터스토어라면 다음을 설정해요.

변수 구성 안내
FELIX_DATASTORETYPE etcdv3로 설정
FELIX_ETCDENDPOINTS 쉼표로 구분된 etcdv3 클러스터 URL 목록. 예: https://calico-datastore.example.com:2379
FELIX_ETCDCAFILE etcd의 서버 인증서를 검증할 CA 인증서 경로. TLS를 쓰고 공용 CA를 쓰지 않는다면 필수
FELIX_ETCDCERTFILE FELIX_ETCDKEYFILE 활성화한 경우, etcd 클러스터에 클라이언트 인증할 때 쓰는 인증서와 키 경로

Tab: 어느 데이터스토어든 공통

어느 데이터스토어든 공통으로 다음을 설정해요.

변수 구성 안내
CALICO_NODENAME 노드를 식별하는 값이에요. 값을 지정하지 않으면 컴퓨트 서버 호스트명이 Calico 노드 식별에 사용돼요.
CALICO_IP or CALICO_IP6 둘 다 지정하지 않으면 Calico는 이 노드의 다음 홉(next hop) IP 주소로 현재 구성된 값을 사용해요. 이 값은 Node 리소스를 통해 구성할 수 있어요. 다음 홉 주소가 구성되어 있지 않으면 Calico가 호스트 인터페이스를 조회해 IPv4 다음 홉 주소를 자동으로 정하고(Node 리소스에 이 값을 구성해요). CALICO_IP를 autodetect로 설정하면 노드가 시작될 때마다 IP 주소 자동 탐지를 강제할 수 있어요. 이 환경 변수로 IP 주소를 설정하면 Node 리소스에 현재 설정된 값을 다시 구성해요.
CALICO_AS 지정하지 않으면 Calico는 노드 BGP 클라이언트의 AS Number로 현재 구성된 값을 사용해요. 이 값 역시 Node 리소스로 구성할 수 있어요. Node 리소스 값이 없다면 Calico는 전역 기본값에서 AS Number를 상속해요. 이 환경 변수로 값을 설정하면 Node 리소스에 현재 설정된 값을 다시 구성해요.
NO_DEFAULT_POOLS 기본 풀이 없을 때 Calico가 기본 풀을 만들지 않도록 하려면 true로 설정해요. 풀은 워크로드 엔드포인트에 사용되며, 클러스터 외부 호스트에는 필요하지 않아요.
CALICO_NETWORKING_BACKEND 사용할 네트워킹 백엔드예요. bird 모드에서는 Calico가 BIRD BGP 데몬으로 BGP 네트워킹을 제공하고, VXLAN 네트워킹도 사용할 수 있어요. vxlan 모드에서는 VXLAN 네트워킹만 제공되고 BIRD와 BGP는 비활성화돼요. 정책 전용으로 Calico를 운영하려면 none으로 설정해요.

샘플 EnvironmentFile - /etc/calico/calico.env로 저장해요.

FELIX_DATASTORETYPE=etcdv3
FELIX_ETCDENDPOINTS=https://calico-datastore.example.com:2379
FELIX_ETCDCAFILE="/pki/ca.pem"
FELIX_ETCDCERTFILE="/pki/client-cert.pem"
FELIX_ETCDKEYFILE="/pki/client-key.pem"

포함된 init 시스템 유닛을 수정해 EnvironmentFile을 추가해요. 예를 들어 systemd라면 calico-felix 유닛의 [Service] 섹션에 다음 줄을 추가해요.

EnvironmentFile=/etc/calico/calico.env

3단계: 데이터스토어 초기화하기

Felix가 실행되는 각 호스트마다 node 리소스를 구성해야 해요. 이렇게 하면 첫 번째 node 리소스를 만든 후에 데이터베이스가 초기화돼요. Calico/BGP 연동이 포함되지 않은 배포라면 node 리소스 명세에 노드 이름만 있으면 돼요. 대부분의 배포에서 이 이름은 호스트명과 같아요.

calicoctl create -f - <<EOF
- apiVersion: projectcalico.org/v3
  kind: Node
  metadata:
    name: <node name or hostname>
EOF

Felix 로그가 wait-for-ready 상태를 알리는 주기적 메시지에서 초기화 메시지의 연속적인 흐름으로 바뀌는 걸 확인할 수 있을 거예요.

더 알아보기 (Learn more)

설치 후 Felix 로그를 확인하면 데이터스토어 초기화가 잘 됐는지 바로 알 수 있어요. 환경 변수의 자세한 의미는 Felix 구성 참조에서 더 깊이 살펴볼 수 있어요.