Kubernetes

Kubernetes - EKS Console setup

빠빠담 2021. 12. 11. 01:15
반응형

VPC

IAM - role

 

 


 

Security group

 


 

 

 


Bastion host

 

 


 

Install Kubectl

 

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html

 


# 배포할 Amazon EKS 버전과 상응하는 kubectl를 설치합니다. 
sudo curl -o /usr/local/bin/kubectl  \
   https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
   
sudo chmod +x /usr/local/bin/kubectl

# 아래의 명령어를 통해, 최신의 kubectl이 설치되었는지 확인합니다.
kubectl version --client=true --short=true

 

선택적으로 설치

 

https://github.com/scop/bash-completion#installation

 

# jq는 JSON 형식의 데이터를 다루는 커맨드라인 유틸리티입니다. 아래의 명령어를 통해, jq를 설치합니다.
sudo yum install -y jq

# Bash 쉘에서 kubectl completion script는 
# kubectl completion bash 명령어를 통해 생성할 수 있습니다. 
# 쉘에 completion script를 소싱하면 kubectl 명령어의 자동 완성을 가능하게 만들 수 있습니다. 
# 하지만 이런 completion script는 bash-completion에 의존하기 때문에 아래의 명령어를 통해, bash-completion을 설치해야 합니다.
sudo yum install -y bash-completion

 


 

Evironment Setup

 

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/create-kubeconfig.html

 

aws configure
# access key: XXXXXXXX
# secret key: XXXXXXXX
# region: ap-northeast-2
# Default output format [None]: json

 

위 계정 설정에 대한 확인

 

aws sts get-caller-identity

 

계정을 설정하고 아래 명령어를 통해 ~/.kube/config 의

kubectl 설정파일이 자동으로 생성된다.

aws eks --region <region-code> update-kubeconfig --name <cluster_name>

 

수동 설정도 가능하니 위 aws 문서를 확인 

apiVersion: v1
clusters:
- cluster:
    server: <endpoint-url>
    certificate-authority-data: <base64-encoded-ca-cert>
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: aws
  name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws
      args:
        - "eks"
        - "get-token"
        - "--cluster-name"
        - "<cluster-name>"
        # - "--role-arn"
        # - "<role-arn>"
      # env:
        # - name: AWS_PROFILE
        #   value: "<aws-profile>"

 

Issue

 

https://rainbound.tistory.com/176

error: You must be logged in to the server (Unauthorized)

kubectl만 하면 위와같은 에러가 나왔다.
 
정책을 수정하고 update, config 재설정을 해보았으나 안됐었음
 
aws sts get-caller-identity
에서 arn은 맞았는데 userId은 어디서 확인하라는건지 몰라서 맞는 줄 알았다.
 
계속해서 안되다가 생각해보니 eks 클러스터 생성은 콘솔에서 상위 계정? 이라고해야하 다른 계정으로 생성했던것이었다.
그래서 혹시 몰라
aws cli로 접속한 iam 계정으로 콘솔 로그인후 생성하니 문제가 해결되었다.

 

 

https://aws.amazon.com/ko/premiumsupport/knowledge-center/amazon-eks-cluster-access/

 

필자는 root 계정으로 eks 클러스터를 구성하여 root 계정의 엑세스 키로 우선 아래의 계정 설정을 해주었다.

cd ~/.aws

vim aws-auth.yaml
apiVersion: v1 
kind: ConfigMap 
metadata: 
  name: aws-auth 
  namespace: kube-system 
data: 
  mapRoles: | 
    - rolearn: arn:aws:iam::11122223333:role/EKS-Worker-NodeInstanceRole-1I00GBC9U4U7B 
      username: system:node:{{EC2PrivateDNSName}} 
      groups: 
        - system:bootstrappers 
        - system:nodes 
  mapUsers: | 
    - userarn: arn:aws:iam::11122223333:user/designated_user 
      username: designated_user 
      groups: 
        - system:masters
kubectl apply -f aws-auth.yaml

 

설정이 완료된뒤 위에 설정한 계정으로 다시 변경하여 kubectl 명령이 정상작동하는 것을 확인하자

aws configure
# access key: XXXXXXXX
# secret key: XXXXXXXX
# region: ap-northeast-2
# Default output format [None]: json

 


 

Node group

 

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/create-node-role.html

 

Role

AmazonEKSWorkerNodePolicy
AmazonEC2ContainerRegistryReadOnly
AmazonEKS_CNI_Policy


 

노드그룹 생성전략 참고자료

https://kim-dragon.tistory.com/54

 

 

 

 

 

 


 

Fargate

 

Role

 

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/task_execution_IAM_role.html#create-task-execution-role

 

AmazonECSTaskExecutionRolePolicy

 

 

 

 

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/cluster-endpoint.html

 

 

반응형

'Kubernetes' 카테고리의 다른 글

Fargate  (0) 2021.12.11
K9S  (0) 2021.12.11
Ingress - EKS  (0) 2021.12.05
Kubernetes - EKS  (0) 2021.11.30
Kubernetes - On-Premise  (0) 2021.11.25