Ack-acm-controller: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 26: Строка 26:
 
==<code>Policy</code>==
 
==<code>Policy</code>==
 
Создать файл с <code>Policy</code> - имя конечно не принципиально, для простоты пусть будет <code>AWSACMControllerIAMPolicy.json</code>
 
Создать файл с <code>Policy</code> - имя конечно не принципиально, для простоты пусть будет <code>AWSACMControllerIAMPolicy.json</code>
  +
<BR>
  +
Это https://github.com/aws-controllers-k8s/acm-controller/blob/main/config/iam/recommended-inline-policy рекомендованная политика []
 
<PRE>
 
<PRE>
 
{
 
{
"Version": "2012-10-17",
+
"Version": "2012-10-17",
"Statement": [
+
"Statement": [
{
+
{
"Effect": "Allow",
+
"Effect": "Allow",
"Action": [
+
"Action": [
"acm:RequestCertificate",
+
"acm:DescribeCertificate",
"acm:DescribeCertificate",
+
"acm:ImportCertificate",
"acm:ListCertificates",
+
"acm:RequestCertificate",
"acm:DeleteCertificate",
+
"acm:UpdateCertificateOptions",
"acm:AddTagsToCertificate",
+
"acm:DeleteCertificate",
"acm:UpdateCertificateOptions",
+
"acm:AddTagsToCertificate",
"acm:ListTagsForCertificate"
+
"acm:RemoveTagsFromCertificate",
  +
"acm:ListTagsForCertificate"
],
 
"Resource": "*"
+
],
 
"Resource": "*"
},
 
{
+
}
 
]
"Effect": "Allow",
 
"Action": [
 
"route53:ChangeResourceRecordSets",
 
"route53:GetChange",
 
"route53:ListHostedZonesByName",
 
"route53:ListHostedZones",
 
"route53:GetHostedZone"
 
],
 
"Resource": "*"
 
}
 
]
 
 
}
 
}
 
</PRE>
 
</PRE>

Версия 12:47, 23 июня 2025

Задача

Если уже пользоваться AWS то хотелось бы получить максимум за свои деньги, и отказаться от использования Let's Encrypt,
а выписывать сертефикаты от AWS
К сожалению, жадный AWS не дает ключ от сертификата, и единственный доступный вариант использования - это ALB

acm-controller

Аналогично другим контроллерам, позволяет создавать сертефикаты (но блять без ключей, ебучий ты AWS) как ресурсы в k8s

Логика работы (коротко)

Устроено все, если смотреть обзорно, довольно просто

  • acm-controller следит за появлением ресурса типа Certificate
  • При появлении ресурса идет в API и что-то там делает

TODO

Установка и настройка acm-controller

Policy

Создать файл с Policy - имя конечно не принципиально, для простоты пусть будет AWSACMControllerIAMPolicy.json
Это https://github.com/aws-controllers-k8s/acm-controller/blob/main/config/iam/recommended-inline-policy рекомендованная политика []

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "acm:DescribeCertificate",
                "acm:ImportCertificate",
                "acm:RequestCertificate",
                "acm:UpdateCertificateOptions",
                "acm:DeleteCertificate",
                "acm:AddTagsToCertificate",
                "acm:RemoveTagsFromCertificate",
                "acm:ListTagsForCertificate"
            ],
            "Resource": "*"
        }
    ]
}
aws iam create-policy \
  --policy-name AWSACMControllerIAMPolicy \
  --policy-document file://AWSACMControllerIAMPolicy.json

Helm

helm repo add ack https://aws.github.io/eks-charts
helm repo update


helm install ack-acm-controller ack/ack-acm-controller \
  --namespace ack-system \
  --create-namespace \
  --set aws.region=us-east-1 \
  --set serviceAccount.create=false \
  --set serviceAccount.name=ack-acm-controller