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

Kubernetes에서 etcd 분할하기(고급)

원문 보기 위키 갱신

개별 Calico 컴포넌트의 접근을 제한하거나 calicoctl 사용자 접근을 제한하기 위해 etcd 역할을 고급으로 분할하는 방법을 다뤄요. Calico와 Kubernetes의 초기 etcd RBAC 구성을 마친 뒤에 읽으면 좋아요. 컴포넌트별 인증서 구성과 노드별·컴포넌트별 인증서 구성 두 가지 방향을 소개해요.

출처: 문서

본문

Tab: Operator

이 문서는 operator 방식의 Calico 설치에는 적용되지 않아요.

Tab: Manifest

이 문서는 개별 Calico 컴포넌트의 접근을 제한하거나 calicoctl 사용자 접근을 제한하기 위해 etcd 역할을 고급으로 분할하는 방법을 설명해요. Calico와 Kubernetes의 초기 etcd RBAC 구성은 이 가이드를 따랐다고 가정해요.

이 가이드가 필요한 이유

Calico 컴포넌트별로 etcd 데이터스토어 접근을 제한하거나, calicoctl을 위한 제한된 접근 역할을 만들고 싶을 때 유용해요.

etcd 역할이 필요한 컴포넌트

다음 컴포넌트들은 아래에 나열되거나 링크된 키 접두사/경로에 접근할 수 있는 적절한 역할이 부여된 etcd 사용자 이름과 일치하는 CN을 가진 인증서가 필요해요.

아래에서 참조하는 모든 인증서/키 쌍은 위 정보를 바탕으로 해당 컴포넌트용으로 이미 만들어져 있다고 가정해요.

Calico 컴포넌트

인증서를 생성하고 etcd에 사용자와 역할을 설정했다면, 이를 사용하는 컴포넌트들을 구성해야 해요. 위에서 나열한 것과 같은 컴포넌트들의 상세 구성 페이지 링크예요:

아래는 Calico 컴포넌트가 Kubernetes 매니페스트 파일로 실행되는 호스티드(hosted) Calico 설치를 사용할 때의 예제와 제안이에요. 이 방식이 필수는 아니고, Kubernetes 밖에서 실행되는 서비스를 구성하는 방식으로도 같은 결과를 낼 수 있어요.

컴포넌트별 인증서 구성

호스티드 매니페스트를 쓰면서도 컴포넌트마다 인증서를 따로 두는 구성이 가능해요. 이 구성에서는 위에 나열한 각 Calico 컴포넌트 타입(cni-plugin, Calico Kubernetes controllers, calico/node)마다 인증서가 필요해요.

이 구성은 Kubernetes와 Calico를 etcd RBAC으로 분할하기: 호스티드 Calico 매니페스트 업데이트에서 설명하는 것과 비슷한 매니페스트 수정이 필요해요. 거기에 더해, 각 컴포넌트마다 CA, 인증서, 키 데이터를 base64로 인코딩해 담은 별도의 Secret을 만들어야 해요. 그리고 컴포넌트별 Secret을 올바른 파드의 volumes 목록에 넣고, 알맞은 컨테이너의 volumeMounts가 /calico-secrets mountPath에 대한 볼륨을 참조하도록 만들어야 해요.

노드별·컴포넌트별 인증서 구성

위 방법만으로도 etcd 접근을 잠그는 데 큰 진전이고 많은 요구를 충족하겠지만, 노드·컴포넌트 조합마다 다른 인증서를 사용하는 세 번째 선택지도 있어요. 이런 구성은 여러 방법으로 달성할 수 있으므로 구현자의 몫으로 남겨 둬요. 가능한 방법은 다음과 같아요:

  • 구성 관리 도구로 인증서를 설치·구성하면서 Calico 컴포넌트를 설치하고 시작하기
  • Vault 같은 시크릿 관리 도구에서 알맞은 인증서 정보를 가져오는 사이드카 컨테이너가 있는 매니페스트 만들기

더 알아보기 (Learn more)

인증서와 역할 준비가 끝나면 컴포넌트 구성 페이지의 지침에 따라 Secret과 volumeMounts를 채워 넣으면 돼요. 컴포넌트별 Secret을 파드별로 쪼개는 것이 호스티드 매니페스트에서 가능한 최소 변경이에요.