0

Ошибка при использовании командной строки Google Cloud DNS при попытке обновить внешний IP-адрес ресурса записи ресурса Hosted Zone Тип A для моего домена ... this works fine using the browser based gce console ... на английском языке когда я развертываю свое приложение с помощью Kubernetes, он дает мне свежий IP-адрес, который мне нужно связать с существующей DNS-доменом, чтобы люди могли добраться до моего приложения, указывая на свой браузер в моем домене (example.com) ... rub это действие должно произойти каждый раз, когда я повторно развертываю свое приложение, следовательно, необходимо автоматизироватьgcloud dns record-sets transaction Не удается обновить IP-адрес

Примечание. Облачная зона DNS уже существует и работает. Я пытаюсь обновить внешний IP-адрес, чтобы соответствовать свежему РазВЕРТЫВаНИя Kubernetes в LoadBalancer Ingress согласно

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. 

здесь просто введите Рекордный

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 ... поэтому я выпускаю

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

здесь я добавляю сделку с моим новым 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 ... было бы приятным прикосновением, если бы кубернеты достигли общего решения для всех своих поставщиков облачных хостов ... Люди используют некоторые другие автоматизированные средства для достижения этого? некоторая библиотека SDK в lang x?

ответ

1

операции Облако DNS работать на всей RR установить с (record-set или dns#resourceRecordSet), а не отдельные RRs. Ваш пример не будет делать то, что вы хотите, даже в последнем случае, поскольку в конечном итоге вы получите RRset, содержащий как старые, так и новые IP-адреса, которые будут «работать в основном».

В любом случае, это является запись наборы и только один RRset для каждого RTYPE допускается, поэтому ваша транзакция должна сначала удалить существующую A RRset, а затем добавить новый.

Смежные вопросы