본문 바로가기
CLOUD/AWS

AWS EKS 애플리케이션 배포(노드생성 및 배포)

by Rainbound-IT 2021. 8. 11.
반응형

 

노드 생성

  • Fargate — 리눅스— Linux 응용 프로그램을 실행하려는 경우 이 유형을 선택합니다.AWSFargate
  • 관리 노드 — Linux— Amazon EC2 인스턴스에서 Amazon Linux 애플리케이션을 실행하려면 이 유형을 선택합니다. 이 안내서에서는 다루지 않지만자체 관리형보틀로켓노드를 클러스터에 추가합니다. 모든 워크로드가 Windows인 경우에도 모든 클러스터에는 하나 이상의 Linux 노드가 있어야 합니다.

나는 둘다 해보겟다.

 

 

 

Fargate — 리눅스

 

IAM 역할을 생성하여 여기에 필요한 Amazon EKS IAM 관리형 정책을 연결합니다. 클러스터가 Fargate 인프라에 포드를 생성하는 경우 Fargate 인프라에서 실행되는 구성 요소는AWS사용자를 대신하여 Amazon ECR에서 컨테이너 이미지를 가져오거나 로그를 다른AWS서비스. Amazon EKS 포드 실행 역할은 이 작업을 수행할 수 있는 IAM 권한을 제공합니다.

 

 

우선 json형태로 정책을 만든다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks-fargate-pods.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

해당 정책을 이용하여 역할생성

그리고 eks 관리형 정책을 연결

 

그리고 다시 콘솔로 들어가서 eks에서 해당 클러스터에서 컴퓨팅 선택후 Fargate 프로파일 추가

 

 

이름은 아무거나 포드실행역할엔 방금전에 생성했던 역할을 선택하면 되고 서브넷은 퍼블릭을 모두 삭제하여 프라이빗에서만 접속이 가능하도록 하자. 

 

 

네임스페이스에 입력을하고( 뭐하는거지?) 다음 후 생성하면된다.

 

 

 

 

관리 노드 — Linux

 

이전 단계에서 생성한 서브넷과 노드 IAM 역할을 지정하여 관리형 노드 그룹을 생성합니다

 

 

Amazon VPC CNI 플러그인에 대한 IAM 역할을 생성하고 필요한 Amazon EKS IAM 관리형 정책을 이 역할에 연결합니다. 

Amazon EKS 아마존 VPC CNI 플러그인은 기본적으로 클러스터에 설치됩니다. 플러그인은 VPC IP 주소를 각 포드에 할당합니다.

 

 

 

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<111122223333>:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:aws-node"
        }
      }
    }
  ]
}

<111122223333> 에는 계정 id 숫자 그리고 지역은 자신계정의 지역을 입력하고 xxxx 어쩌구 써잇는건 openid conncect url에 숫자를 넣으면 된다.

 

룰생성

정책 연결

 

 

 

 

 

VPC CNI 플러그인에서 사용하는 Kubernetes 서비스 계정을 IAM 역할에 연결합니다. 

 

노드 IAM 역할을 생성하여 여기에 필요한 Amazon EKS IAM 관리형 정책을 연결합니다. Amazon EKS 노드kubelet데몬은AWSAPI를 생성합니다. 노드는 IAM 인스턴스 프로파일 및 연결 정책을 통해 이 API 호출에 대한 권한을 수신합니다.

 

역할에 넣을 정책 json파일 생성

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

 

노드 iam역할생성

 

관리형 정책 연결

 

 

다시 콘솔로 들어가서 내클러스터 선택후 구성탭에서 노드그룹 추가를 클릭하자

 

이름을 만들고 노드 iam 역할에는 방금 생성했던 iam 을 선택하고 다음

컴퓨팅등 나오는데 기본값으로 하고 네트워크 지정에서 아래와 같이 노드에 대한 ssh 액세스 구성 왼쪽을 클릭하여 키페어를 선택한다.

(난 만들어서 있다)

ssh키페어가 없으면 아래와 같이 생성하거나 직접 콘솔에서 생성해도 된다.

aws ec2 create-key-pair --region us-west-2 --key-name myKeyPair

 

그러면 node 와 fargate가 생성 완료 되었다.

 

노드생성된걸 볼수 있다.

 

배포되는 워크로드를 볼수 있다.

 

 

 

노드 보는 명령어

kubectl get nodes -o wide

실행중인 워크로드 확인

kubectl get pods --all-namespaces -o wide

 

fargate 보는 명령어

eksctl get fargateprofile --cluster test-cli-eks -o yaml

 

Reference

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/getting-started-console.html

 

Amazon EKS 시작하기AWS Management Console및AWS CLI - Amazon EKS

요청의 가용 영역 중 하나에 Amazon EKS 클러스터를 생성하는 데 충분한 용량이 없다는 오류가 표시될 수 있습니다. 이 경우 오류 출력에는 새 클러스터를 지원할 수 있는 가용 영역이 포함됩니다.

docs.aws.amazon.com

https://kscory.com/dev/aws/eks-setup

 

Cory's Developing & Life.

Cory's Developing & Life.

kscory.com

 

반응형

'CLOUD > AWS' 카테고리의 다른 글

AWS 할만한 아키텍처들  (0) 2021.08.11
AWS EKS node(managed vs self-managed vs Fargate)  (0) 2021.08.11
AWS EKS 와 kubectl 연결 문제  (0) 2021.08.11
AWS CloudFormation  (0) 2021.08.10
AWS EKS 애플리케이션 배포 (구축)  (0) 2021.08.09

댓글