Имеется у нас ExternalDNS, см. Kubernetes: обновление DNS в Route53 при создании Ingress, который начал сыпать в лог сообщениями типа:
msg=»failed to list resource records sets for zone /hostedzone/Z2VM3W5SRY4I9J: Throttling: \n\tstatus code: 400
И даже в AWS Console в Route53 начали появляться сообщения «Throttling error that was caused because API rate was exceeded. Try again later.«:
Проблема очевидна — ExternalDNS делает слишком много запросов к AWS API.
Для решения — добавим опции --interval и --events.
В --interval укажем интервал раз в 2 минуты вместо дефолтной одной, см. Parameters, а --events активирует дополнительный обработчик, который вызывает ExternalDNS при создании или обновлении Ingress-объектов.
Деплоится ExternalDNS у нас из Ansible и Helm, см. Ansible: модуль community.kubernetes и установка Helm-чарта с ExternalDNS — обновляем Ansible-task:
- name: "Deploy ExternalDNS chart inside {{ eks_env }}-devops-external-dns-ns namespace (and create it)"
community.kubernetes.helm:
kubeconfig: "{{ kube_config_path }}"
name: "external-dns"
chart_ref: "bitnami/external-dns"
release_namespace: "{{ eks_env }}-devops-external-dns-ns"
create_namespace: true
values:
interval: 2m
triggerLoopOnEvent: true
...
Деплоим, проверяем логи — всё чисто.





