ALB Controller
aws alb controller (application load balance controller)
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ง์ ์ค์นํ๊ณ ์ฌ์ฉํ ๋๋ ingress-nginx๋ฅผ ์ฌ์ฉํ์์ผ๋ eks์๋ aws (alb) application load balance๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์ฒ์ ๊ณ ๋ฏผ์ด aws์์ ๋ก๋๋ฐ๋์ค๋ฅผ ์ธํ ํ๋๊ฒ ๋ฒ๊ฑฐ๋กญ๋ค๋ ๊ณ ๋ฏผ์ด ์์๋๋ฐ ๊ทธ๊ฑธ aws์์ ์๊ณ ์์๋์ง kubernete ์ค์ ํ์ผ์ ์ ์ด๋ง ์ฃผ๋ฉด ์๋์ผ๋ก alb๊ฐ ์์ฑ์ด ๋๋ค.
ALB Controller๋ฅผ ์ค์น๋ฅผ ํด๋๋ฉด ์ฟ ๋ฒ๋คํฐ์ค์ ์ค์ ์ ํ๋ฉด ์ด ์ปจํธ๋กค๋ฌ๊ฐ ALB๋ฅผ ์๋์ผ๋ก ๋ฑ๋กํด์ฃผ๋ ๊ฒ์ด๋ค.
์ด ์ปจํธ๋กค๋ฌ๊ฐ alb์ ์ ์์ด ๊ฐ๋ฅํ๊ฒ ๋์ผ๋๋ฐ ์ด๊ฑธ oidc๋ฅผ ์ฌ์ฉํ๋ค.(์ธ์ฆ)
ALB๋ nodeport ๋ loadbalance๋ง ์ง์์ ํ๋ค.(์ค์)
๋งํฌ์ ์๋ ๋ด์ฉ์ ํด์ฃผ๋ฉด ๋๋ค. ๊ฐ๋จํ๊ฒ ์์ฝํด๋ณด๋ฉด
OIDC
https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html
OIDC Issuer
๊ธฐ๋ณธ์ ์ผ๋ก eksctl๋ก ์์ฑํ๋ฉด ์ด๊ฑด ๊ธฐ๋ณธ๊ฐ์ด ๊ฐ์ด ์๊น
OIDC Provider
์๋ฌด๊ฒ๋ ์๋์จ๋ค. ์๋ค๋๊ฑฐ๋ค ๊ทธ๋ฌ๋ฉด ์์ฑ ํด์ค์ผ ํ๋ค. ์์ผ๋ฉด ์์ฑ ๋ถ๋ถ์ ๋์ด๊ฐ๋ฉด ๋๋ค.
์์ผ๋ฉด ์์ฑ
Create an IAM OIDC provider for your cluster
๋ด์ฉ ํ์ธ
๋ด์ฉ์ด ์๋ค. oidc provider๋ ๋ง๋ค์ด์ก๋ค.
์น์ฌ์ดํธ์์๋ ์์ฑ ํ์ธ ๊ฐ๋ฅ
https://console.aws.amazon.com/iamv2/home#/identity_providers

ALB Controller Install
Create an IAM policy
arn์ ๋ณต์ฌํด์ ๋ณด๊ดํด๋๋ค.
์น์ฌ์ดํธ์์ ํ์ธ
https://console.aws.amazon.com/iam/home#/policies
AWSLoadBalancerControllerIAMPolicy๋ก ๊ฒ์ํด๋ณด๋ฉด ์์ฑ๋ ๊ฒ์ ์์ ์๋ค.

create Role
Open the IAM console at https://console.aws.amazon.com/iam/
role > create role
trusted entity > Web identity

permissions
Attach Policy section > AWSLoadBalancerControllerIAMPolicy

tags > review >
Role Name : AmazonEKSLoadBalancerControllerRole > create role
์์ฑ๋๊ฑฐ ํ์ธ

After the role is created, choose the role in the console to open it for editing
Trust relationships > Edit trust relationship

๋ค์ ๋ถ๋ถ์ ์์

๋ค์ ์ฝ๋๋ก ๋ณ๊ฒฝ
sub": "system:serviceaccount:kube-system:aws-load-balancer-controller"Update Trust Policy
role arn์ ๋ณต์ฌํด๋๋ค.
arn:aws:iam::530310009353:role/AmazonEKSLoadBalancerControllerRole
{% endcode %}
`
`` role-arn ์ ๋ณต์ฌํด๋๊ฑธ๋ก ๋ฎ์ด์ด๋ค.
https://github.com/kubernetes-sigs/aws-load-balancer-controller ์์ ์ต์ ๋ฆด๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ ๋ฒ์ ๋ฑ์ ์์ ํด๋ผ.
cert-manager๊ฐ ๋ํ๋์๊ฐ ๊ฑธ๋ ค์๋ค. ๊ฐ์ด ์ค์นํ์.
ํ์ผ์ ์์ ํ์.
ServiceAccount ์ญ์

cluster name๋ณ๊ฒฝ

ํ์ธ
์์ํ์ด ๋์ค๋ฉด ์ ๋๊ฒ์ด๋ค.
์๋ฌ๊ฐ ๋์ค๋ฉด ๊ถํ๋ถ๋ถ์ ๋ค์ ํด๋ณด๋๋ก ํ์.
๋ก๊ทธ ํ์ธ
์ ์๋๋ฉด ๋ก๊ทธ๋ฅผ ํ์ธํด๋ด์ผํ๋ค.

์ด๋ฌ๋ฉด Oidc๊ฐ ์ ๋์ํ์ง ์๋ ๊ฒ์ด๋ค.
version์ด ์๋ง์๋ค. policy๋ 2.1.3 controller๋ 2.2.2 ๋ก ๋๋ฒ๋ ธ๋ค.
2.1.3์ผ๋ก ํ๋ฉด ์๋๋ค.
alb controller ์ญ์
delete role : AmazonEKSLoadBalancerControllerRole
delete policy : AWSLoadBalancerControllerIAMPolicy
๊ธฐ๋ณธ ingress ์ฌ์ฉ๋ฒ
์ด๊ฑธ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก aws application load balance๋ ๋ง๋ค์ด ์ค๋ค.
ec2 -> load balance

dns์ ์ถ๊ฐ
route53



http๋ฅผ https๋ก redirect
์์ ์ํ์ ์ ํ๋ ์์ผ๋ ํน๋ณํ ๋ฐ๋ก ์ค๋ช ํ๋ค.
anotation์ ๋ค์ ์ถ๊ฐ
๊ทธ๋ฆฌ๊ณ path์ ๋ค์ ์ถ๊ฐ
์ด๋ฌ๋ฉด http๋ก ์ ๊ทผํ๋ฉด https๋ก ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์์ผ์ค๋ค. ๊ผญ ์ด์ค์ ์ด ๋งจ์์ ์์ผํ๋ค.
๊ด๋ จ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์. https://github.com/kubernetes-sigs/aws-load-balancer-controller/blob/main/docs/guide/tasks/ssl_redirect.md
ssl backend
ํน์ pod๋ ํ๋ก๊ทธ๋จ ์์ฒด์์ ssl๋ก ์ ๊ทผ์ ๋ฐ์์ผํ ํ์๊ฐ ์์๋ alb controller์์๋ ๋ค์์ฒ๋ผ ์ฒ๋ฆฌํ๋ค.
anotation์ ๋ค์ ์ถ๊ฐ๋ฅผ ๋ณผ์ ์๋ค.
๋ง์ฝ ์ด๊ฑธ ์ถ๊ฐํ์ง ์์ผ๋ฉด ์ด๋ฐ ์๋ฌ๋ฅผ ๋ณผ์๊ฐ ์๋ค.
alb๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก http๋ก ํต์ ์ ์๋ํ๋ฏ๋ก ํฌํธ๋ 443์ ์ฐ๋ฉด์ http๋ฅผ ๋ณด๋ด๊ฒ ๋๋ค๋ณด๋ ์ด๋ฐ ์๋ฌ๊ฐ ๋์จ๋ค.
health check
๋ก๋ ๋ฐ๋์ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก pod๋ฅผ ๋ค ์ฒดํฌํด์ ์๋น์ค๋ฅผ ์ ์งํด์ค๋ค. ํน๋ณํ health check ๊ฒฝ๋ก๋ฅผ ์์ ํ๋ ค๋ฉด ๋ค์์ฒ๋ผ ํ์.
pod๊ฐ ssl์ ๊ธฐ๋ํ๊ณ ์์ผ๋ฉด healthcheck-protocol๋ ๋ง๋๊ฐ์ ๋ฃ์ด์ค์ผํ๋ค.
ELB target group์ ๊ฐ๋ฉด ์ ๋ด์ฉ์ ์๋ฃ๋๋ผ๋ ๊ธฐ๋ณธ์ผ๋ก healthcheck๊ฐ ์์ฑ์ด ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
nginx app์ alb์ ์คํ
ํ๋ฒ๋ ๋ชจ๋ ๊ฑธ ์ ์ฉํด์ alb๋ฅผ ์ฌ์ฉํด๋ณด์
์ ์ฉํ๋ฉด alb๊ฐ ์๊ธฐ๋๊ฒ์ aws console ์์ ๋ณผ ์ ์๋ค.
ssl๋ ์ ์ฉํ๋ค. cert-arn์ certificate-manager์ ๊ฐ์ ๋ง๋ค๋ฉด ์๊ธด๋ค. ๊ทธ๊ฑธ ์ฌ์ฉ
ssl redirect ์ ์ฉ ์๋ฃ
internet-facing: ํ์์ด๋ค.ํฌํธ๋ 80 443์ ๋๋ค ์ด์ด์ฃผ๋ฉด ์ข๋ค.
multiple domain and ssl ์ ์ฉ
rules์ ์ฌ๋ฌ๊ฐ์ ๋๋ฉ์ธ์ ์ถ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ssl์ ์ปด๋ง๋ก ์ฐ๊ฒฐํ๋ค.
์ฌ๋ฌ๊ฐ์ ์ธ๊ทธ๋ ์ค์์ albํ๋๋ฅผ ๊ณต์ ํ๊ธฐ
Ingress๊ฐ ๋ค ๊ฐ๊ฐ์ name space์ ์๊ธฐ๋๊ฒ์ ๋ง๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ๋ค์ด ํ๋์ ๋ก๋๋ฐ๋์ค๋ฅผ ์ฌ์ฉํ๋ค.
Last updated
Was this helpful?