Вопрос по amazon-route53, amazon-web-services, kubernetes – Как опубликовать kubernetes URL-адрес загрузки LoadBalancer для aws route53

5

Сегодня, когда я запускаю приложение, используя kubernetes поверх aws, оно открывает общедоступный URL-адрес LoadBalancer, однако, чтобы связать его с моим доменом, чтобы сделать приложение общедоступным, мне нужно вручную заходить в консоль aws route53 в браузере на каждом запуск. Могу ли я обновить aws route53 Тип ресурса A, чтобы он соответствовал последнему URL-адресу Kubernetes LoadBalancer Ingress из командной строки?

Kubernetes over gcloud разделяет эту проблему необходимости предварительно определить статический IP-адрес, который используется в конфигурации запуска, или вручную выполнить связывание доменов на основе браузера после запуска. На AWS я надеялся, что смогу использовать что-то похожее на это из командной строки

aws route53domains update-domain-nameservers   ???

__ ИЛИ __ могу ли я предопределить вход LoadBalancer aws kubernetes, аналогичный выполнению предопределенного статического IP-адреса при работе через gcloud?

чтобы показать проблему с URL-адресом входа в развернутом приложении LoadBalancer

kubectl describe svc

... выход

Name:           aaa-deployment-407
Namespace:      ruptureofthemundaneplane
Labels:         app=bbb
            pod-template-hash=4076262206
Selector:       app=bbb,pod-template-hash=4076262206
Type:           LoadBalancer
IP:         10.0.51.82
LoadBalancer Ingress:   a244bodhisattva79c17cf7-61619.us-east-1.elb.amazonaws.com
Port:           port-1  80/TCP
NodePort:       port-1  32547/TCP
Endpoints:      10.201.0.3:80
Port:           port-2  443/TCP
NodePort:       port-2  31248/TCP
Endpoints:      10.201.0.3:443
Session Affinity:   None
No events.

ОБНОВИТЬ:

Ошибка при попытке использовать новую технику командной строки (совет по поводу @ error2007s) ...

aws route53 list-hosted-zones

... выводы

{
    "HostedZones": [
        {
            "ResourceRecordSetCount": 6, 
            "CallerReference": "2D58A764-1FAC-DEB4-8AC7-AD37E74B94E6", 
            "Config": {
                "PrivateZone": false
            }, 
            "Id": "/hostedzone/Z3II3949ZDMDXV", 
            "Name": "chainsawhaircut.com."
        }
    ]
}

Важный бит, используемый ниже: hostedzone Z3II3949ZDMDXV

теперь я создаю следующиеиспользуя этот документ (и этот Док тоже) как файл /change-resource-record-sets.json (ПРИМЕЧАНИЕ. Я могу успешно изменить тип A, используя аналогичный вызов cli ... однако мне нужно изменить тип A с помощью псевдонима цели входного URL-адреса LoadBalancer)

{
    "Comment": "Update record to reflect new IP address of fresh deploy",
    "Changes": [{
        "Action": "UPSERT",
        "ResourceRecordSet": {
            "Name": "chainsawhaircut.com.",
            "Type": "A",
            "TTL": 60,
            "AliasTarget": {
                "HostedZoneId": "Z3II3949ZDMDXV",
                "DNSName": "a244bodhisattva79c17cf7-61619.us-east-1.elb.amazonaws.com",
                "EvaluateTargetHealth": false
            }
        }
    }]
}

в командной строке я потом выдаю

aws route53 наборы записей ресурсов изменений --hosted-zone-id Z3II3949ZDMDXV - пакетный файл изменений: ///change-resource-record-sets.json

которые дают это сообщение об ошибке

An error occurred (InvalidInput) when calling the ChangeResourceRecordSets operation: Invalid request

Есть идеи?

Для AWS ELB, если вы хотите указать домен на ELB, вы должны добавить его в качестве C-имени, вы можете сделать это из командной строки, проверьте это руководствоoliverhelm.me/sys-admin/updating-aws-dns-records-from-cli error2007s

Ваш Ответ

2   ответа
0

внешний DNS проект.

Специальная настройка AWSможно найти здесь

После установки его можно использовать с аннотацией, например:external-dns.alpha.kubernetes.io/hostname: nginx.external-dns-test.my-org.com.

Обратите внимание, что разрешения IAM должны быть установлены правильно.

2

необходимая для обновления aws route53 Тип записи ресурса A со значением из только что отчеканенного kubernetes Входной URL-адрес LoadBalancer

Шаг 1 - идентифицируйте свой идентификатор хост-зоны, выполнив

aws route53 list-hosted-zones

... из вывода здесь клип для моего домена

"Id": "/hostedzone/Z3II3949ZDMDXV", 

... важно никогда не заполнять json хост-зоной Z3II3949ZDMDXV, он используется только как cli-parm ... есть второй аналогично названный токен HostedZoneId, который совершенно другой

шаг 2 - посмотреть текущее значение вашей записи домена route53 ... проблема:

aws route53 list-resource-record-sets --hosted-zone-id Z3II3949ZDMDXV --query "ResourceRecordSets[?Name == 'scottstensland.com.']"

... выход

[
    {
        "AliasTarget": {
            "HostedZoneId": "Z35SXDOTRQ7X7K", 
            "EvaluateTargetHealth": false, 
            "DNSName": "dualstack.asomepriorvalue39e7db-1867261689.us-east-1.elb.amazonaws.com."
        }, 
        "Type": "A", 
        "Name": "scottstensland.com."
    }, 
    {
        "ResourceRecords": [
            {
                "Value": "ns-1238.awsdns-26.org."
            }, 
            {
                "Value": "ns-201.awsdns-25.com."
            }, 
            {
                "Value": "ns-969.awsdns-57.net."
            }, 
            {
                "Value": "ns-1823.awsdns-35.co.uk."
            }
        ], 
        "Type": "NS", 
        "Name": "scottstensland.com.", 
        "TTL": 172800
    }, 
    {
        "ResourceRecords": [
            {
                "Value": "ns-1238.awsdns-26.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400"
            }
        ], 
        "Type": "SOA", 
        "Name": "scottstensland.com.", 
        "TTL": 900
    }
]

... в указанном выше значении

"HostedZoneId": "Z35SXDOTRQ7X7K", 

который является вторым аналогичным именем токенНЕ используйте неправильный идентификатор размещенной зоны

шаг 3 - поместите ниже в ваш файл изменений aws_route53_type_A.json(синтаксис Doc см. по ссылке, указанной в комментарии выше)

{
  "Comment": "Update record to reflect new DNSName of fresh deploy",
  "Changes": [
    {
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "AliasTarget": {
            "HostedZoneId": "Z35SXDOTRQ7X7K", 
            "EvaluateTargetHealth": false, 
            "DNSName": "dualstack.a0b82c81f47d011e6b98a0a28439e7db-1867261689.us-east-1.elb.amazonaws.com."
        }, 
        "Type": "A", 
        "Name": "scottstensland.com."
      }
    }
  ]
}

Чтобы определить значение для указанного выше поля «DNSName» ... после того, как приложение kubernetes развернуто на aws, оно отвечает входом LoadBalancer, как показано в выходных данных команды cli:

kubectl describe svc --namespace=ruptureofthemundaneplane

... как в

LoadBalancer Ingress:   a0b82c81f47d011e6b98a0a28439e7db-1867261689.us-east-1.elb.amazonaws.com

... хотя моя цель - выполнить вызов из командной строки, я могу сделать это вручную, войдя в консольный браузер aws ... подтянуть свой домен на route53 ...

... В этом редактируемом текстовом поле списка выбора браузера (обведено зеленым) я заметил, что URL волшебным образом добавляется с: dualstack. Раньше мне не хватало этой магической строки ... поэтому ключ json "DNSName" хочет этого

dualstack.a0b82c81f47d011e6b98a0a28439e7db-1867261689.us-east-1.elb.amazonaws.com.

наконец выполнить запрос на изменение

aws route53 change-resource-record-sets --hosted-zone-id Z3II3949ZDMDXV --change-batch file://./aws_route53_type_A.json

... выход

{
    "ChangeInfo": {
        "Status": "PENDING", 
        "Comment": "Update record to reflect new DNSName of fresh deploy", 
        "SubmittedAt": "2016-07-13T14:53:02.789Z", 
        "Id": "/change/CFUX5R9XKGE1C"
    }
}

.... теперь, чтобы подтвердить изменение, запустите это, чтобы показать запись

aws route53  list-resource-record-sets  --hosted-zone-id Z3II3949ZDMDXV  

Похожие вопросы