- 태스크 7: 실습 애플리케이션 배포2024년 05월 08일
- 59lee
- 작성자
- 2024.05.08.:42
EKS 클러스터에 애플리케이션 배포 목차
- 서문
- Kubernetes 네임스페이스 생성
- YAML 구성 파일 작성 및 배포
- 객체 생성 확인
- Ingress와 ALB 설정
- 포드 및 트래픽 확인
- IAM roles for service accounts 설명
서문
이 글은 AWS Skill Builder 실습을 바탕으로 출력한 예시 내용입니다.
1. Kubernetes 네임스페이스 생성
애플리케이션에 대한 네임스페이스를 생성합니다.
kubectl create namespace containers-lab
예상 출력:
namespace/containers-lab created
2. YAML 구성 파일 작성 및 배포
다음은
~/environment/eksLabRepo/eks-lab-app/k8s-all.yaml
파일 예시입니다.apiVersion: apps/v1 kind: Deployment metadata: namespace: containers-lab name: eks-lab-deploy labels: app: eks-app spec: replicas: 3 selector: matchLabels: app: lab-app template: metadata: labels: app: lab-app spec: containers: - name: website image: $ECR_REPO_URI_WEBSITE:latest ports: - containerPort: 80 volumeMounts: - mountPath: /var/metadata name: metadata-vol - name: sidecar image: $ECR_REPO_URI_SIDECAR:latest volumeMounts: - mountPath: /var/metadata name: metadata-vol volumes: - name: metadata-vol emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: lab-service namespace: containers-lab spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app: lab-app --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: containers-lab name: lab-ingress annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip kubernetes.io/ingress.class: alb spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: lab-service port: number: 80
명령 실행:
cd ~/environment/eksLabRepo/eks-lab-app envsubst < k8s-all.yaml | kubectl apply -f -
예상 출력:
deployment.apps/eks-lab-deploy created service/lab-service created ingress.networking.k8s.io/lab-ingress created
3. 객체 생성 확인
kubectl get all -n containers-lab
예상 출력:
pod/eks-lab-deploy-xxxxx Running 2/2 ... service/lab-service NodePort ... deployment.apps/eks-lab-deploy 3/3
4. Ingress와 ALB 설정
Ingress를 통해 ALB가 생성되며, 외부에서 트래픽을 수신하게 됩니다.
kubectl get ingress -n containers-lab
예상 출력:
NAME HOSTS ADDRESS PORTS AGE lab-ingress * k8s-containe-labingre-...elb.amazonaws.com 80 1m
5. 포드 및 트래픽 확인
브라우저에서 ALB DNS 주소로 접속하면 로드밸런싱된 결과를 확인할 수 있습니다. 새로고침할 때마다 포드가 변경됩니다.
6. IAM Roles for Service Accounts
- 최소 권한: 포드에 필요한 최소한의 IAM 권한만 부여 가능
- 자격 증명 격리: 포드 간 IAM 자격 증명 분리
- 감사 가능성: CloudTrail로 추적 가능
기본 연결된 IAM 정책:
- AmazonEKSWorkerNodePolicy
- AmazonEC2ContainerRegistryReadOnly
- AmazonSSMManagedInstanceCore
- AmazonEKS_CNI_Policy
'AWS' 카테고리의 다른 글
태스크 8: Amazon EKS 포드에 대한 IAM 역할 구성 (0) 2024.05.08 태스크 6: Amazon EKS에서 AWS Load Balancer Controller 실행 (0) 2024.05.08 태스크 5: Amazon EKS 클러스터에 인증 (0) 2024.05.08 태스크 4: Amazon ECR 리포지토리 생성 및 Docker 이미지 푸시 (0) 2024.05.08 태스크 3: Docker 이미지 생성 (0) 2024.05.08 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)