Aws-external-dns: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 17: | Строка 17: | ||
=Решение= |
=Решение= |
||
| + | ==IAM Policy== |
||
| − | |||
| + | Для начала потребуется создать политику следующего вида: |
||
<PRE> |
<PRE> |
||
| Строка 43: | Строка 44: | ||
} |
} |
||
</PRE> |
</PRE> |
||
| + | |||
| + | В том пример присутствуют две записи: |
||
| + | <PRE> |
||
| + | "arn:aws:route53:::hostedzone/Z1038XXXXXXXXXXXXXXX", |
||
| + | "arn:aws:route53:::hostedzone/Z0235XXXXXXXXXXXXXXX" |
||
| + | </PRE> |
||
| + | так как приложение использует более чем одну зону. |
||
| + | |||
| + | <BR> |
||
| + | Для получения Id (<code>Z1038XXXXXXXXXXXXXXX</code> в примере) использовать комманду |
||
| + | <code> aws route53 list-hosted-zones-by-name | jq '.HostedZones[] | select(.Name=="XXXXX") | .Id' </code> |
||
| + | |||
<PRE> |
<PRE> |
||
{ |
{ |
||
Версия 13:30, 8 июня 2025
Постановка задачи
Задача: есть некоторый базовый домен mydomain.tld, который лежит на серверах AWS в Route53
Требуется при разворачивании приложения в EKS автоматически создавать записи типа CNAME и
направлять их на балансировщик (Ingress или другой, но пока Ingress),
при запуске экземпляра приложения, например для
экземпляра staging создать записи
backend.staging.mydomain.tldfrontend.staging.mydomain.tldчто-то-еще.staging.mydomain.tld
Имя экземпляра приложения staging может быть произвольным
Решение
IAM Policy
Для начала потребуется создать политику следующего вида:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExternalDNSAccess",
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets",
"route53:ListResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/Z1038XXXXXXXXXXXXXXX",
"arn:aws:route53:::hostedzone/Z0235XXXXXXXXXXXXXXX"
]
},
{
"Effect": "Allow",
"Action": "route53:ListHostedZones",
"Resource": "*"
}
]
}
В том пример присутствуют две записи:
"arn:aws:route53:::hostedzone/Z1038XXXXXXXXXXXXXXX", "arn:aws:route53:::hostedzone/Z0235XXXXXXXXXXXXXXX"
так как приложение использует более чем одну зону.
Для получения Id (Z1038XXXXXXXXXXXXXXX в примере) использовать комманду
aws route53 list-hosted-zones-by-name | jq '.HostedZones[] | select(.Name=="XXXXX") | .Id'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRoleWithWebIdentity",
"Principal": {
"Federated": "arn:aws:iam::54XXXXXXXXXX:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/5918A6B3305CXXXXXXXXXXXXXXXXXXXX"
},
"Condition": {
"StringEquals": {
"oidc.eks.us-east-1.amazonaws.com/id/5918A6B3305CXXXXXXXXXXXXXXXXXXXX:sub": [
"system:serviceaccount:external-dns:external-dns"
],
"oidc.eks.us-east-1.amazonaws.com/id/5918A6B3305CXXXXXXXXXXXXXXXXXXXX:aud": [
"sts.amazonaws.com"
]
}
}
}
]
}