CloudNet@ 팀의 가시다님께서 Leading 하시는 PKOS 2기 Study 내용 요약
해당 Kubernetes Study 는 '24단계 실습으로 정복하는 쿠버네티스' 책을 기반으로 진행 중입니다.
이전 포스팅은 kops 를 통해 k8s 실습 환경을 마련하는 목적이었습니다.
지금부터는 본격적으로 k8s 기능 과 활용에 대해 포스팅해보겠습니다.
1. k8s External DNS ??
Public Domain 과 Kubernetes Resource 를 연결시켜주는 솔루션
GitHub - kubernetes-sigs/external-dns: Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes I
Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services - GitHub - kubernetes-sigs/external-dns: Configure external DNS servers (AWS Route53, ...
github.com
쿠버네티스는 기본적으로 Service, Deployment 등의 오브젝트를 내부 DNS 로 관리합니다.
이 때 사용되는 것이 바로 CoreDNS 입니다.
그런데 만약 내가 test.com 이라는 도메인 주소를 가지고 있고, 이 도메인 주소를 통해 외부에 서비스를 하고 싶다면 어떻게 해야될까요??
단순하게 생각하면 NodePort 타입으로 Service 오브젝트를 배포하고 해당 노드와 test.com 을 연결시켜주면 된다고 생각할 수 있습니다.
하지만, 서비스가 계속 생성되고 삭제되는 와중에 이런 작업을 반복하는 것은 굉장히 번거로운 일입니다.
이 때 External DNS 를 사용하면 내가 가진 test.com 를 통해 쿠버네티스 오브젝트 등을 관리할 수 있게 됩니다.
즉, 쿠버네티스 오브젝트가 생성되고 삭제되면 자동으로 test.com 에 서브도메인이 생성되고 삭제되게 할 수 있는 것입니다.
- Route 53 자동 업데이트
1.1. IAM Policy 생성 - Route53 편집 권한
현재 AWS 에서 kops 를 배포했고, Route53 을 사용하고 있습니다.
External DNS 를 사용하려면 쿠버네티스에 Route53 도메인 편집 권한이 필요합니다.
- Record 편집 허용
- Hostzone , Record 조회 허용
해당 json 파일을 이용하여 AWS IAM Policy 를 생성해줍니다.
1.2. Kubernetes 에 권한 부여
생성한 IAM Policy 를 쿠버네티스가 사용할 수 있도록 Control Plane 과 Worker Node 인스턴스의 IAM Role 에 해당 정책을 부여해줍니다.
현재 k8s IRSA 가 없는 상태라 EC2 Role 에 해당 권한을 부여해줍니다.
1.3. External DNS 설치
기본적으로 Helm 이나 yaml 로 External DNS 에 대한 부분을 정의해줘야 하나, kops 는 간편하게 생성할 수 있습니다.
spec 부분에 아래 내용을 추가합니다.
이후 kops cluster 를 업데이트한 후, ExternalDNS 를 확인해봅니다.
1.4. External DNS 실행
이전에 배포해보았던 mario 게임에 External DNS 를 연결해봅시다.
현재 mario 게임이 배포되어 있는 상태입니다.
하지만 route53 에는 아직 해당 LoadBalancer 가 연결되지 않았습니다.
Mario 게임의 Service 오브젝트를 External DNS 와 연결시켜줍니다.
Route 53 확인 및 도메인으로 접속
Route 53 확인 및 도메인으로 접속
이번에는 External DNS 를 통해 쿠버네티스 오브젝트를 외부 서비스로 배포하는 방법을 알아보았습니다.
다음에는 쿠버네티스 네트워크 중 AWS CNI 와 스토리지에 관해 공부해보겠습니다.