๐Ÿ“‚
Amazon EKS
  • Amazon EKS
  • ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ƒ์„ฑํ•˜๊ธฐ
    • Cloud9 IDE ํ™˜๊ฒฝ ๊ตฌ์„ฑ
    • IAM ์—ญํ•  ์ƒ์„ฑ
    • SSH & CMK Key ์ƒ์„ฑํ•˜๊ธฐ
  • EKS ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์ถ•
    • EKS ํด๋Ÿฌ์Šคํ„ฐ ๋งŒ๋“ค๊ธฐ
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋Œ€์‹œ๋ณด๋“œ ๋ฐฐํฌ
    • Kubernetes ๊ณต์‹ ๋Œ€์‹œ๋ณด๋“œ ๋ฐฐํฌ
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ
    • ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ
    • ์„œ๋น„์Šค ์Šค์ผ€์ผ(Scaling)
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ฆฌํ•˜๊ธฐ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ - Helm
    • HELM ์„ค์น˜
    • Helm์œผ๋กœ Nginx ๋ฐฐํฌ
    • Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ - POD ๋ฐฐ์น˜
    • NodeSelector
    • Affinity and Anti-affinity
    • ๋” ์‹ค์šฉ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€
    • ์ •๋ฆฌํ•˜๊ธฐ
  • ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ - Health Checks
    • Liveness ํ”„๋กœ๋ธŒ ๊ตฌ์„ฑ
    • Readiness ํ”„๋กœ๋ธŒ ๊ตฌ์„ฑ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ - AutoScaling
    • HPA ๊ตฌ์„ฑํ•˜๊ธฐ
    • CA ๊ตฌ์„ฑํ•˜๊ธฐ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • ๋„คํŠธ์›Œํ‚น - ์„œ๋น„์Šค ๋…ธ์ถœ
    • ์„œ๋น„์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—ฐ๊ฒฐ
    • ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๊ธฐ
    • ์„œ๋น„์Šค ๋…ธ์ถœ
    • Ingress
    • Ingress Controller
    • ์ •๋ฆฌํ•˜๊ธฐ
  • ๋„คํŠธ์›Œํฌ - Calico ์ •์ฑ…
    • Calico ์„ค์น˜ํ•˜๊ธฐ
    • Stars Policy Demo
    • ์ •๋ฆฌํ•˜๊ธฐ
  • Updating ๊ถŒํ•œ์„ค์ • - RBAC
    • ํ…Œ์ŠคํŠธ POD ์„ค์น˜
    • ์‚ฌ์šฉ์ž ์ƒ์„ฑ ๋ฐ ๋งตํ•‘
    • ์—ญํ• ๊ณผ ๋ฐ”์ธ๋”ฉ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • Updating ๊ถŒํ•œ์„ค์ • - IAM ๊ทธ๋ฃน
    • IAM Role, Group & User ์ƒ์„ฑํ•˜๊ธฐ
    • RBAC ์„ค์ •ํ•˜๊ธฐ
    • EKS ์—‘์„ธ์Šค ํ…Œ์ŠคํŠธ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • Updating ๊ถŒํ•œ์„ค์ • - Service account
    • OIDC ์ž๊ฒฉ ์ฆ๋ช… ๊ณต๊ธ‰์ž ์ƒ์„ฑํ•˜๊ธฐ
    • IAM ์—ญํ•  ์ƒ์„ฑ ๋ฐ ์ง€์ •
    • ์ƒ˜ํ”Œ POD ๋ฐฐํฌ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • Updating - ๋„คํŠธ์›Œํฌ - POD Security Group
    • SG ์ƒ์„ฑํ•˜๊ธฐ
    • RDS ์ƒ์„ฑํ•˜๊ธฐ
    • CNI ๊ตฌ์„ฑํ•˜๊ธฐ
    • SG ์ •์ฑ…
    • Pod ๋ฐฐํฌํ•˜๊ธฐ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • Updating - ๋ชจ๋‹ˆํ„ฐ๋ง - Prometheus and Grafana
    • Prometheus ๋ฐฐํฌํ•˜๊ธฐ
    • Grafana ๋ฐฐํฌํ•˜๊ธฐ
    • ์ •๋ฆฌํ•˜๊ธฐ(Optional)
  • Updating ๋ชจ๋‹ˆํ„ฐ๋ง - X-Ray
    • X-Ray DaemonSet ๋ฐฐํฌํ•˜๊ธฐ
    • ์ƒ˜ํ”Œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ
    • X-Ray console ํ™•์ธ
    • ์ •๋ฆฌํ•˜๊ธฐ(Optional)
  • Updating ๋ชจ๋‹ˆํ„ฐ๋ง - Container Insights
    • ์‚ฌ์ „ ์ค€๋น„
    • Container Insights ๊ตฌ์„ฑํ•˜๊ธฐ
    • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ
    • Container Insights ํ™•์ธํ•˜๊ธฐ
    • ์ •๋ฆฌํ•˜๊ธฐ(Optional)
  • Updating CD - Gitops with Flux
    • ์‚ฌ์ „ ์ค€๋น„
    • Codepipeline
    • EKS์— ๋ฐฐํฌ
    • ์ •๋ฆฌํ•˜๊ธฐ
  • Updating Argo Rollouts
  • Updating Service Mesh - AWS App Mesh
    • Fargate ๋ฐ OBSERVABILITY ๊ตฌ์„ฑ
    • Product Catalog App ๋ฐฐํฌ
    • APP MESH ์„ค์น˜
    • Porting to APP MESH
    • Virtual Gateway ๊ตฌ์„ฑ
    • Canary
    • Observability
  • Updating ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ - EKS Cluster
    • Upgrade EKS control Plane
    • Upgrade EKS CORE ADD-ONs
    • Upgrade Managed Node Group
Powered by GitBook
On this page

Was this helpful?

  1. ๋„คํŠธ์›Œํ‚น - ์„œ๋น„์Šค ๋…ธ์ถœ

Ingress Controller

PreviousIngressNext์ •๋ฆฌํ•˜๊ธฐ

Last updated 3 years ago

Was this helpful?

Ingress ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž‘๋™ ํ•˜๋ ค๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์— Ingress ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์‹คํ–‰ ์ค‘ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

kube-controller-manager ๋ฐ”์ด๋„ˆ๋ฆฌ ์ผ๋ถ€๋กœ ์‹คํ–‰๋˜๋Š” ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋‹ฌ๋ฆฌ Ingress ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

AWS Load Balancer Controller

AWS ALB Ingress Controller๊ฐ€ ๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

AWS Load Balancer Controller๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์šฉ Elastic Load Balancer๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ž…๋‹ˆ๋‹ค.

  • ๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค Ingress ๋ฆฌ์†Œ์Šค๋ฅผ ์ถฉ์กฑ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค Service ๋ฆฌ์†Œ์Šค๋ฅผ ์ถฉ์กฑ ํ•ฉ๋‹ˆ๋‹ค.

AWS Load Balancer ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ง€์›ํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ ๋ชจ๋“œ๋Š” ์•„๋ž˜์˜ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • Instance(default): ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋…ธ๋“œ๋ฅผ ALB์˜ ๋Œ€์ƒ์œผ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ALB์— ๋„๋‹ฌํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์€ NodePort๋กœ ๋ผ์šฐํŒ…๋œ ๋‹ค์Œ ํŒŒ๋“œ๋กœ ํ”„๋ก์‹œ๋ฉ๋‹ˆ๋‹ค.

  • IP: ํŒŒ๋“œ๋ฅผ ALB ๋Œ€์ƒ์œผ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ALB์— ๋„๋‹ฌํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์€ ํŒŒ๋“œ๋กœ ์ง์ ‘ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํŠธ๋ž˜ํ”ฝ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  ingress.yaml ํŒŒ์ผ์— ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” Application Load Balancer์— ์ดˆ์ ์„ ๋งž์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

AWS Elastic Load Balancing Application Load Balancer (ALB)๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์—์„œ Amazon EC2 ์ธ์Šคํ„ด์Šค์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋Œ€์ƒ์— ๊ฑธ์ณ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์„ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑํ•˜๋Š” ์ž˜ ์•Œ๋ ค์ง„ AWS ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

ALB๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ง€์› ํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜ธ์ŠคํŠธ ๋˜๋Š” ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…

  • TLS (Transport Layer Security) ํ„ฐ๋ฏธ๋„ค์ด์…˜, WebSocket

  • HTTP / 2

  • AWS WAF(Web Application Firewall) ํ†ตํ•ฉ

  • ํ†ตํ•ฉ ์•ก์„ธ์Šค ๋กœ๊ทธ ๋ฐ ์ƒํƒœ ํ™•์ธ

1. AWS Load Balancer Controller ๋ฐฐํฌํ•˜๊ธฐ

๋จผ์ € AWS Load Balancer Controller ๋ฒ„์ „์ด ์„ค์ • ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ํ•ฉ๋‹ˆ๋‹ค.

if [ ! -x ${LBC_VERSION} ]
  then
    tput setaf 2; echo '${LBC_VERSION} has been set.'
  else
    tput setaf 1;echo '${LBC_VERSION} has NOT been set.'
fi

Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ALB Ingress Controller๋ฅผ ์„ค์น˜ ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € helm์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ•˜์‹ญ์‹œ์˜ค:

helm version --short
eksctl utils associate-iam-oidc-provider \
    --region ${AWS_REGION} \
    --cluster eksworkshop-eksctl \
    --approve

AWS Load Balancer Controller์— ๋ถ€์—ฌํ•  AWSLoadBalancerControllerIAMPolicy ์ •์ฑ…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.3.0/docs/install/iam_policy.json
aws iam create-policy \
    --policy-name AWSLoadBalancerControllerIAMPolicy \
    --policy-document file://iam_policy.json

AWS Load Balancer Controller๋ฅผ ์œ„ํ•œ ServiceAccount๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Account ID๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๋‹ค์Œ์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•œ ํ›„ IAM ์—ญํ• ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
eksctl create iamserviceaccount \
  --cluster eksworkshop-eksctl \
  --namespace kube-system \
  --name aws-load-balancer-controller \
  --attach-policy-arn arn:aws:iam::${ACCOUNT_ID}:policy/AWSLoadBalancerControllerIAMPolicy \
  --override-existing-serviceaccounts \
  --approve

TargetGroupBinding CRDs ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

kubectl apply -k github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master

kubectl get crd

EKS repo๋กœ ๋ถ€ํ„ฐ helm ์ฐจํŠธ(AWS Load Balancer Controller)๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

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

helm upgrade -i aws-load-balancer-controller \
    eks/aws-load-balancer-controller \
    -n kube-system \
    --set clusterName=eksworkshop-eksctl \
    --set serviceAccount.create=false \
    --set serviceAccount.name=aws-load-balancer-controller \
    --set image.tag="${LBC_VERSION}"

kubectl -n kube-system rollout status deployment aws-load-balancer-controller

๋ฐฐํฌ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get deployment -n kube-system aws-load-balancer-controller

๊ฒฐ๊ณผ์—์„œ ${LBC_VERSION}์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ง€์นจ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋งŒ์•ฝ helm์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ IAM OIDC provider ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Pod์™€ ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ƒ์„ฑํ•œ ํ•ญ๋ชฉ์ด API Server ๋˜๋Š” ์™ธ๋ถ€ ์„œ๋น„์Šค์— ์ธ์ฆํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์— IAM role์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด, ์ƒ์„ฑํ•œ ํด๋Ÿฌ์Šคํ„ฐ(ํ˜„์žฌ ์‹ค์Šต์—์„œ์˜ eks-demo)์— IAM OIDC provider๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Amazon EKS ์„ค๋ช…์„œ์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค.

AWS Load Balancer Controller
controller
Application Load Balancers
Network Load Balancers
์—ฌ๊ธฐ
service account
IAM Roles for Service Accounts
์—ฌ๊ธฐ