0

내 도메인의 호스트 된 영역 리소스 레코드 유형 A의 외부 IP를 업데이트하려고 할 때 명령 줄 Google 클라우드 DNS를 사용할 때 오류 발생 ... this works fine using the browser based gce console ... 한국어 Kubernetes를 사용하여 응용 프로그램을 배포하면 내 기존 도메인 DNS에 연결해야하는 새로운 IP를 제공하므로 사람들이 내 도메인 (example.com)에서 브라우저를 가리키는 응용 프로그램에 도달 할 수 있습니다 ...이 작업이 필요합니다 매번 다시 내 애플 리케이션을 배포 따라서 자동화해야합니다gcloud dns 레코드 세트 트랜잭션 IP 주소를 업데이트 할 수 없음

참고 - 클라우드 DNS 영역이 이미 존재하고 작동합니다. 나는

여기
kubectl describe svc --namespace=ruptureofthemundaneplane | grep Ingress 
LoadBalancer Ingress: 104.196.108.178 

그냥 기록을 입력 여기에 현재 상태

gcloud dns record-sets list --zone zone-cubalibre --project ruptureofthemundaneplane 
NAME       TYPE TTL DATA 
example.com.   A  60 104.196.108.147 
example.com.   NS  60 ns-cloud-a1.googledomains.com.,ns-cloud-a2.googledomains.com.,ns-cloud-a3.googledomains.com.,ns-cloud-a4.googledomains.com. 
example.com.   SOA 60 ns-cloud-a1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 1209600 300 
admin.example.com.  CNAME 60 example.com. 
www.admin.example.com. CNAME 60 example.com. 
www.example.com.  CNAME 60 example.com. 

에게 있습니다에 따라 신선한는 Kubernetes 배포의로드 밸런서 침투에 맞게 외부 IP 주소를 업데이트하려고

gcloud dns record-sets list --project ruptureofthemundaneplane --zone zone-cubalibre --name "example.com." --type "A" 
NAME     TYPE TTL DATA 
example.com. A  60 104.196.108.147 

IP 104.196.108.147을 새로운 값 104.196.108.178로 바꿔야합니다. 그래서 발행합니다.

여기

내 새로운 IP 주소 여기

gcloud dns record-sets transaction add "104.196.108.178" --name "example.com." --ttl 60 --type "A" --project ruptureofthemundaneplane --zone zone-cubalibre 

으로 거래를 추가 내가 트랜잭션 캐시

를 표시하도록 시스템을 물어 여기에 완성도 시스템 생성 YAML 파일

cat transaction.yaml 
--- 
additions: 
- kind: dns#resourceRecordSet 
    name: example.com. 
    rrdatas: 
    - ns-cloud-a1.googledomains.com. cloud-dns-hostmaster.google.com. 2 21600 3600 1209600 
    300 
    ttl: 60 
    type: SOA 
- kind: dns#resourceRecordSet 
    name: example.com. 
    rrdatas: 
    - 104.196.108.178 
    ttl: 60 
    type: A 
deletions: 
- kind: dns#resourceRecordSet 
    name: example.com. 
    rrdatas: 
    - ns-cloud-a1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 1209600 
    300 
    ttl: 60 
    type: SOA 

입니다

gcloud dns record-sets transaction describe  --project ruptureofthemundaneplane --zone zone-cubalibre 

... 출력

additions: 
- kind: dns#resourceRecordSet 
    name: example.com. 
    rrdatas: 
    - ns-cloud-a1.googledomains.com. cloud-dns-hostmaster.google.com. 2 21600 3600 1209600 
    300 
    ttl: 60 
    type: SOA 
- kind: dns#resourceRecordSet 
    name: example.com. 
    rrdatas: 
    - 104.196.108.178 
    ttl: 60 
    type: A 
deletions: 
- kind: dns#resourceRecordSet 
    name: example.com. 
    rrdatas: 
    - ns-cloud-a1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 1209600 
    300 
    ttl: 60 
    type: SOA 

마침내 나는이

gcloud dns record-sets transaction execute --project ruptureofthemundaneplane --zone zone-cubalibre 
ERROR: (gcloud.dns.record-sets.transaction.execute) 
The resource 'entity.change.additions[1]' named 'example.com. (A)' already exists (code: 409) 

어떤 제안이와 트랜잭션을 커밋? 정적 IP를 미리 정의하지 않도록하고 싶습니다 ... the equivalent Amazon aws commands work when I deploy using kube-up.sh over aws kubernetes가 모든 클라우드 호스트 공급 업체에서 공통적 인 솔루션을 얻은 경우 좋은 방법이 될 것입니다 ...이를 달성하기 위해 다른 자동화 된 수단을 사용하고 있습니까? lang x에있는 일부 SDK 라이브러리?

답변

1

클라우드 DNS 작업 오히려 개별 RR이보다의 (record-set 또는 dns#resourceRecordSet)를 설정 전체 RR에서 작동합니다. 기존의 IP 주소와 새로운 IP 주소를 모두 포함하는 RRset으로 끝날 것이기 때문에 예제가 후자의 경우에도 원하는 것을 수행하지 않을 것입니다. 어떤 경우

, 그것은 때문에 거래는 새로운 하나를 추가, 먼저 기존 A RRset을 삭제할 필요가 기록 세트 및 허용되는 각 RTYPE에 대해 하나의 RRset에 있습니다.