본문 바로가기

Server Infra/Kubernetes

EKS 쉽게 만드려고 삽질하는중

728x90

테스트 하다 죽이고 하다 죽이고 그러다 보니 매번 새롭게 만들고 세팅하는게 지겨워 져서 딱 필요한 것들만 자동으로 슈슈슉 만들어 주는 스크립트를 만들어 보려고 한다. 만드는 툴은 여러가지가 있다

  1. eksctl
  2. cdk
  3. terraform

일단은 eksctl부터다.

 

eks를 만드는 사전 조건으로는 당연하겠지만 eks를 만들수 있는 iam룰이 필요하다. 나는 sso를 이용하여 Administrator 권한을 쓰것이기 때문에 그건 넘기고...

 

다음 조건인 vpc를 만들것이다.(이건 eksctl로 만들면 거지같이 만들어지기 때문에 사전에 미리 만들어 놓은 vpc를 쓰려고 한다.) 만약 eks를 암호화 하겠다고 한다면 kms를 만들어 놔야한다.

aws kms create-alias --alias-name alias/eksworkshop --target-key-id $(aws kms create-key --query KeyMetadata.Arn --output text)

export MASTER_ARN=$(aws kms describe-key --key-id alias/eksworkshop --query KeyMetadata.Arn --output text)

echo "export MASTER_ARN=${MASTER_ARN}" | tee -a ~/.bash_profile

자 저기서 MASTER_ARN을 잘 기억해두자

 

다음엔 eksctl로 배포한 cluster.yaml을 만들자

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: eksworkshop-eksctl
  region: ap-northeast-2
  version: "1.23"

# privateCluster:
#   enabled: true
#   additionalEndpointServices:
#   - "autoscaling"

vpc:
  id: "vpc-xxx"
  subnets:
    private:
      # Private Subnet
      ap-northeast-2a: { id: subnet-xxx }
      ap-northeast-2c: { id: subnet-xxx }
      # Public Subnet
      # ap-northeast-2a: { id: subnet-xxx }
      # ap-northeast-2c: { id: subnet-xxx }
      

managedNodeGroups:
- name: nodegroup-1
  desiredCapacity: 3
  instanceType: m4.xlarge
  volumeSize: 100
  ssh:
    enableSsm: true
  privateNetworking: true

- name: nodegroup-2
  desiredCapacity: 3
  instanceType: m4.xlarge
  volumeSize: 100
  ssh:
    enableSsm: true
  privateNetworking: true

# To enable all of the control plane logs, uncomment below:
# cloudWatch:
#  clusterLogging:
#    enableTypes: ["*"]
cloudWatch:
  clusterLogging:
    enableTypes: ["*"]

secretsEncryption:
  keyARN: MASTER_ARN

파일을 만들었다면 이제 만들어보자

eksctl create cluster -f cluster.yaml

이건 정말 클러스터만 만들어준다. 그 뒤로 iam이랑 rolebinding도 해 줘야 콘솔에서 리소스가 정상적으로 보인다.

아니 근데 중요한건 난 profile이 정말 많은데 eksctl은 default만 읽는지 profile설정이 안된다. 방법을 못 찾겠다

eksctl create iamidentitymapping \
    --cluster eksworkshop-eksctl \
    --region=ap-northeast-2 \
    --arn arn:aws:iam::xxx:role/rolename \
    --group system:masters \
    --no-duplicate-arns

물론 위 과정은 아래와 같이 코드를 추가해서 할 수도 있다

iamIdentityMappings:
  - arn: arn:aws:iam::000000000000:role/myAdminRole
    groups:
      - system:masters
    username: admin
    noDuplicateARNs: true

자세한 내용은 아래의 가이드를 참고하자.

https://eksctl.io/usage/iam-identity-mappings/

 

Manage IAM users and roles - eksctl

Manage IAM users and roles EKS clusters use IAM users and roles to control access to the cluster. The rules are implemented in a config map called aws-auth. eksctl provides commands to read and edit this config map. Get all identity mappings: eksctl get ia

eksctl.io

근데 뭔가 너무 별로다. CDK로 저 과정들에 CNI 설치까지 한방에 해봐야 겠다.

728x90

'Server Infra > Kubernetes' 카테고리의 다른 글

PKOS 2기 1주차 - kops  (0) 2023.03.06
Chaos mesh!!  (0) 2022.11.07
K8s Study DOIK - MySQL Operator for Kubernetes #2  (0) 2022.06.05
K8s Study DOIK - MySQL Operator for Kubernetes  (0) 2022.06.05
Istio EnvoyFilter Redirect 이슈  (0) 2022.05.06