DigitalOcean
DigitalOcean (DO)에서 셀프 매니지드 Kubernetes
DigitalOcean에서 kOps로 셀프 매니지드 Kubernetes 클러스터(마스터 1개, 워커 2개)를 만들고 Calico 네트워킹을 구성하는 튜토리얼이에요. API 토큰 발급부터 오브젝트 스토리지 준비, 클러스터 생성과 정리까지 순서대로 안내해요. 직접 관리하는 클러스터가 주는 최대한의 유연성이 필요하다면 좋은 출발점이에요.
출처: 문서
본문
큰 그림
이 튜토리얼은 DigitalOcean에서 Calico 네트워킹을 사용하는 셀프 매니지드 Kubernetes 클러스터(마스터 1개, 워커 노드 2개)를 만들어요.
가치
Kubernetes 클러스터를 직접 관리하면(EKS 같은 관리형 Kubernetes 서비스를 쓰는 것과 달리) Calico와 Kubernetes를 구성할 때 가장 큰 유연성을 얻을 수 있어요. Calico는 유연한 네트워킹 기능과 "어디서든 실행" 가능한 보안 강제를 결합해, 네이티브 Linux 커널 성능과 진정한 클라우드 네이티브 확장성을 갖춘 솔루션을 제공해요.
개념
Kubernetes Operations(kOps)는 클러스터 VM을 프로비저닝하고 Kubernetes를 설치하는 클러스터 관리 도구예요. Kubernetes 네트워킹 제공자로 Calico를 사용하는 기능이 내장되어 있어요.
참고: DigitalOcean에 대한 kOps 지원은 현재 초기 개발 단계에 있으며 변경될 수 있어요. 자세한 내용은 이 링크에서 볼 수 있어요.
시작하기 전에...
방법
DO에서 Kubernetes를 설치하고 관리하는 방법은 여러 가지가 있어요. Kubernetes Operations(kOps)를 사용하는 것이 대부분에게 좋은 기본 선택이에요. Calico의 유연하고 강력한 네트워킹 기능을 모두 활용할 수 있거든요. 하지만 여러분의 환경에는 다른 옵션이 더 잘 맞을 수도 있어요.
여러분이 얻게 되는 것의 세부 내용:
| Policy | IPAM | CNI | Overlay | Routing | Datastore |
|---|---|---|---|---|---|
| Calico | Calico | Calico | IPIP | BGP | kubernetes |
?
DigitalOcean API 토큰 생성하기
kOps는 DigitalOcean 계정의 리소스에 필요한 CRUD(Create, Read, Update, Delete) 작업을 위해 API 토큰을 사용해요. 이 링크를 사용해 API 토큰을 생성한 다음 환경 변수로 export 하세요.
export DIGITALOCEAN_ACCESS_TOKEN=<API_ACCESS_TOKEN>
오브젝트 스토리지 만들기
DigitalOcean은 S3 호환 스토리지 API를 제공하며, kOps는 클러스터 상태를 저장할 때 오브젝트 스토리지를 사용해요. 이 링크를 사용해 Space를 만들고 export 하세요.
export KOPS_STATE_STORE=do://<your-space-name>
export S3_ENDPOINT=<ENDPOINT>
참고:
S3_ENDPOINT에 FQDN을 사용하면 오류가 발생해요. Space FQDN이my-test-space.nyc3.digitaloceanspaces.com이라면<your-space-name>에는 그냥my-test-space를 export 하세요.
오브젝트 스토리지용 API 키 생성하기
오브젝트 스토리지에 접근하려면 API 키가 필요해요. 이 튜토리얼을 따라 키를 생성한 다음 환경 변수로 export 하세요.
export S3_ACCESS_KEY_ID=<ACCESS_KEY_ID>
export S3_SECRET_ACCESS_KEY=<SECRET_ACCESS_KEY>
kOps 알파 기능 활성화하기
KOPS_FEATURE_FLAGS 환경 변수로 알파 기능 지원을 활성화해요.
export KOPS_FEATURE_FLAGS="AlphaAllowDO"
클러스터 생성하기
kOps는 여러분이 원하는 방식으로 클러스터를 커스터마이즈할 수 있는 다양한 옵션을 지원해요.
--networking=calico옵션으로 클러스터에 Calico를 추가해요.- kOps는 클러스터를 만들 때 외부 DNS 서버가 필요한데,
--name=옵션에.k8s.local접미사를 붙이면 gossip DNS를 생성해 이 요구 사항을 우회할 수 있어요.
참고: kOps가 지원하는 옵션의 전체 목록은 이 링크에서 볼 수 있어요.
kops create cluster --cloud=digitalocean --name=calico-demo.k8s.local \
--networking=calico --master-zones=nyc1 --zones=nyc1 \
--master-count=1 --api-loadbalancer-type=public \
--node-size=s-1vcpu-2gb --image=ubuntu-20-04-x64 --yes
kOps 문서에 나온 옵션으로 Calico 설치를 더 커스터마이즈할 수도 있어요.
정리하기
이 튜토리얼에서 만든 리소스를 제거하고 싶다면:
kops delete cluster calico-demo.k8s.local --yes
DigitalOcean 웹 UI를 사용해 만들어 둔 API 토큰과 Space를 제거하세요.
다음 단계
필수
추천
더 알아보기 (Learn more)
kOps의 DigitalOcean 지원은 아직 알파 단계라 프로덕션 사용 전에 동작을 충분히 검증하는 게 좋아요. .k8s.local 접미사를 활용하면 외부 DNS 없이도 클러스터를 만들 수 있다는 점이 실습에 편리해요.