• 티스토리 홈
  • 프로필사진
    59lee
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
59lee
  • 프로필사진
    59lee
    • 분류 전체보기 (72)
      • AWS (11)
      • 대외활동 (0)
      • 솔루션 아키텍트 (0)
      • 운영체제 (1)
      • 모바일 (1)
      • AHSS[1기] (9)
      • TOPCIT (2)
      • 네트워크 관리사 (2)
      • 악성코드 분석 (1)
      • 웹 취약점 진단 (2)
      • 파이썬 (0)
      • 자바 (0)
      • aws (1)
      • 자격증 (0)
      • 보안컨설팅 (5)
      • 침해사고 대응 (0)
      • 5파트 개인정보 보호법 (4)
      • 4파트 (10)
      • 3파트 (0)
      • 2파트 (0)
      • 1파트 (4)
      • 정보보안솔루션 (2)
      • CISA (12)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 태스크 7: 실습 애플리케이션 배포
        2024년 05월 08일
        • 59lee
        • 작성자
        • 2024.05.08.:42
        EKS 클러스터에 애플리케이션 배포

        목차

        1. 서문
        2. Kubernetes 네임스페이스 생성
        3. YAML 구성 파일 작성 및 배포
        4. 객체 생성 확인
        5. Ingress와 ALB 설정
        6. 포드 및 트래픽 확인
        7. 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바