- HyperGROOVE
- Hood Rabbit의 맥(Mac) 갤러리
- 울지않는벌새 : Security, Mo⋯
- :: 붕어IQ의 세상사는 이야기 ::
- DATA FILEE STYLE
- 하얀잉크의 해피컨텐츠
- 이카루스의 리뷰토피아
- Kurien's Blog
- 사진은 권력이다
- 우리집 고양이는 TV를 본다
- 못된준코의 세상리뷰
- 에우르트는 나쁜남자 -_-
- 아이엠피터
- 김용택의 참교육이야기
- 다락방의 추억 상자
- All you need are LOVE
- 천추의 IT 이야기
- 서관덕의 시간이 머문 작은공간
- 티비의 세상구경
- TB의 SNS 이야기
- 그래서 난 아직도 ing :Seas⋯
- 자로의 꿈
- 꿈 많은 개발자가 되자! Tae-⋯
- 다산인권센터
- 아이폰주무르기
- 신씨's 쌀롱
- 구브의 잡동사니
- 해리의 문화예술 다이어리
- 꿈꾸는자의 생각의 파편들...
- 밀양765kV송전탑OUT
- 기묘한 블로그
- 소비자와 함께 만드는 공간⋯
- 투명사회를 위한 정보공개센터
- 아는만큼 쓰는 블로그
- 작은outsider의 생각누리
- Script Programming(스크립트⋯
- 선대인의 인사이트
- Programming is Fun
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- statefulset
- 세월호
- 세월호 참사
- opensuse 11.3
- Virtualization
- ubuntu
- mysql
- k8s
- Ubuntu 9.10
- Ansible-playbook
- 경영
- centos
- Linux
- glusterfs
- Open vSwitch
- Kubernetes
- OpenShift Origin
- mongodb
- openSUSE
- 창업
- container
- Xen
- 100년의가게
- Route53
- 가상화
- external-dns
- 100년의기업
- Openshift
- Docker
- git
- Today
- 17
- Total
- 1,107,015
Bryan's Tech-Log
Amazon Route53, Google cloud DNS 를 활용한 kubernetes service DNS 자동화 (1/3) 본문
Amazon Route53, Google cloud DNS 를 활용한 kubernetes service DNS 자동화 (1/3)
Barracuda 2020. 9. 10. 01:211. AWS Route53 도메인을 parent domain으로 Google cloud DNS sub-domain 등록 활용하기
이번에는 하나의 목표를 위한 3개의 글로 이루어진 시리즈물을 포스팅을 해 보려 한다.
최종 목표는 Public cloud의 managed DNS 서비스를 통해, 특정 도메인(FQDN, 여기서는 본인이 보유 중인 Route53 managed 도메인 중 kube.click 이라는 도메인의 subdomain 을 route53.kube.click 또는 gcloud.kube.click로 만들어서 사용)의 서브도메인이 자동으로 만들어지고, 해당 도메인을 통해 Kubernetes service로 외부에서 접속 가능하도록 구성해 보는 것이다. 즉, kubernetes service(또는 ingress host) 이름을 svc1 이라고 하면 svc1.route53.kube.click 으로 A record 가 생성되고 kubernetes 내에서 svc1 이 삭제되면 이 A record 도 삭제되도록 하면 상당히 간편하게 자동화 된 외부 노출 주소 관리가 가능해질 것이다.
이 기능은, 마치 OpenShift 로 app을 expose하면 app.openshift.base.domain 으로 그 app의 endpoint 가 자동으로 만들어지는 것과 유사한 사용자 경험을 제공하게 되는데, 그를 위해 현존 거의 대다수 잘 알려진 23개 Public DNS 들과 잘 연동되는 external-dns(CNCF incubation project; https://github.com/kubernetes-sigs/external-dns) 을 적용해 보고자 한다.
물론 Public cloud로는 제목에 언급된 Route53과 Google cloud DNS 각각에 대해 모두 다루어 볼 것이며, 이번 글은 다음의 2개의 글에 대한 준비 과정으로 보면 될 듯하다. 보너스로, Route53 에서 관리되는 하나의 도메인을 parent 로 해서, Google cloud DNS에 그 subdomain 을 hosted zone으로 등록하고 사용하는 과정과 방법을 같이 기록 정리해 두고자 한다.
- Pre-requisites
- manageable FQDN(Route53 - kube.click)
- aws sdk
- gcloud sdk
Route53 domain 정보(parent domain)
$ aws route53 list-hosted-zones
----------
{
"HostedZones": [
...
{
"Id": "/hostedzone/REDACTEDHOSTEDZONEID",
"Name": "kube.click.",
"CallerReference": "RISWorkflow-RD:REDACTEDUUID",
"Config": {
"Comment": "HostedZone created by Route53 Registrar",
"PrivateZone": false
},
"ResourceRecordSetCount": 2
}
]
}
Google cloud project 및 managed zone 생성
$ export PROJECT_NAME="dns-hosting-poc"
$ gcloud config set project $PROJECT_NAME
$ export CUSTOM_DOMAIN="gcloud.kube.click"
$ export DNS_ZONE_NAME="subdomain-route53"
$ gcloud dns managed-zones create $DNS_ZONE_NAME \
--dns-name $CUSTOM_DOMAIN \
--description "Automatically managed zone by kubernetes.io/external-dns"
----------
Created [https://dns.googleapis.com/dns/v1/projects/dns-hosting-poc/managedZones/subdomain-route53].
$ gcloud dns record-sets list \
--zone=$DNS_ZONE_NAME \
--name=$CUSTOM_DOMAIN
----------
NAME TYPE TTL DATA
gcloud.kube.click. NS 21600 ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
gcloud.kube.click. SOA 21600 ns-cloud-e1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
Route53 parent domain에 NS record 추가
-
변경 전 record-sets 확인
$ export AWS_ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json --dns-name kube.click | jq -r '.HostedZones[0].Id' | cut -f3 -d'/') $ aws route53 list-resource-record-sets --hosted-zone-id $AWS_ZONE_ID
-
NS record 추가(단순 레코드 정의)
-
변경 후 record-sets 확인
$ export AWS_ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json --dns-name kube.click | jq -r '.HostedZones[0].Id' | cut -f3 -d'/') $ aws route53 list-resource-record-sets --hosted-zone-id $AWS_ZONE_ID
-
NS resolving 확인
$ dig gcloud.kube.click ns ---------- ; <<>> DiG 9.10.6 <<>> gcloud.kube.click ns ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20417 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;gcloud.kube.click. IN NS ;; ANSWER SECTION: gcloud.kube.click. 300 IN NS ns-cloud-e2.googledomains.com. gcloud.kube.click. 300 IN NS ns-cloud-e4.googledomains.com. gcloud.kube.click. 300 IN NS ns-cloud-e3.googledomains.com. gcloud.kube.click. 300 IN NS ns-cloud-e1.googledomains.com. ;; Query time: 1007 msec ;; SERVER: 210.220.163.82#53(210.220.163.82) ;; WHEN: Mon Sep 14 03:10:31 KST 2020 ;; MSG SIZE rcvd: 167
Google cloud DNS에 A record 등록 후 resolving 확인
$ gcloud dns record-sets list --zone=subdomain-route53
----------
NAME TYPE TTL DATA
gcloud.kube.click. NS 21600 ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
gcloud.kube.click. SOA 21600 ns-cloud-e1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
test.gcloud.kube.click. A 30 192.2.0.91
$ host test.gcloud.kube.click
----------
test.gcloud.kube.click has address 192.2.0.91
다음 포스팅(https://bryan.wiki/306)에서는 Route53 DNS와 external-dns 를 이용해서 kubernetes service 와 domain 주소를 통한 연결을 구성해 보도록 하자.
Barracuda