Aws-alb-controller: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) (→Policy) |
||
| Строка 29: | Строка 29: | ||
=Установка и настройка= |
=Установка и настройка= |
||
| − | =Policy= |
+ | ==Policy== |
| + | Создать политику (пример идет в комплекте с кодом) |
||
<PRE> |
<PRE> |
||
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json |
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json |
||
| Строка 38: | Строка 39: | ||
--policy-document file://iam-policy.json |
--policy-document file://iam-policy.json |
||
</PRE> |
</PRE> |
||
| + | |||
{{#spoiler:show=Прежде чем применять политику - проверить содержимое файла| |
{{#spoiler:show=Прежде чем применять политику - проверить содержимое файла| |
||
Версия 11:47, 23 июня 2025
Это заметка про настройку aws-load-balancer-controller
https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main
Просто что бы не забыть шаги
Что такое aws-load-balancer-controller и зачем нужно
Так как блядский цирк AWS не позволяет использовать свои сертефикаты нигде кроме как
на своих ресурсах, то приходится вместо божественного nginx ingress controller
пользоваться ALB
Естественно, что создавать руками (накликивать) каждый раз балансер это не вариант, то хочется что бы
при создании ресурса типа Ingress балансер создавался автоматически.
Для этого и нужен aws-load-balancer-controller
Логика работы (коротко)
Устроено все, если смотреть обзорно, довольно просто
aws-load-balancer-controllerследит за появлением ресурса типаIngress- При появлении ресурса идет в
APIAWS и создаетALB - Для авторизации использует K8s
Service account- Этот
Service Accountпреднастроен заранее и связан сTrust Policyкоторая через привязаннуюIAM Roleпозволяет делать ограниченный набор запросов к code>API
- Этот
Установка и настройка
Policy
Создать политику (пример идет в комплекте с кодом)
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json
role
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRoleWithWebIdentity",
"Principal": {
"Federated": "arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/12345678901285475EA0123456789012"
},
"Condition": {
"StringEquals": {
"oidc.eks.us-east-1.amazonaws.com/id/12345678901285475EA0123456789012:sub": [
"system:serviceaccount:kube-system:aws-load-balancer-controller"
],
"oidc.eks.us-east-1.amazonaws.com/id/123456789085475EA0123456789012:aud": [
"sts.amazonaws.com"
]
}
}
}
]
}
aws iam create-role \ --role-name AWSLoadBalancerControllerIAMRole \ --assume-role-policy-document file://trust-policy.json
Attach Plicy to Role
aws iam attach-role-policy \ --role-name AWSLoadBalancerControllerIAMRole \ --policy-arn arn:aws:iam::<ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy
SA
apiVersion: v1
kind: ServiceAccount
metadata:
name: aws-load-balancer-controller
namespace: kube-system
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::<account-id>:role/<generated-role-name>
????
apiVersion: v1
kind: ServiceAccount
metadata:
name: aws-load-balancer-controller
namespace: kube-system
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::54XXXXXXXXXX:role/AWSLoadBalancerControllerIAMRole
helm
helm repo add eks https://aws.github.io/eks-charts helm repo update
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ -n kube-system \ --set clusterName=<CLUSTER_NAME> \ --set serviceAccount.create=false \ --set serviceAccount.name=aws-load-balancer-controller \ --set region=<REGION> \ --set vpcId=<VPC_ID> \ --set ingressClass=alb
aws eks describe-cluster --name education-eks-1o3RFCvh --query "cluster.resourcesVpcConfig.vpcId"
"vpc-0cc5209fbf68dXXXX"
Регион можно узнать например так
aws eks describe-cluster --name education-eks-1o3RFCvh --query "cluster.arn" "arn:aws:eks:us-east-1:54XXXXXXXXXX:cluster/education-eks-1o3RFCvh"