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
노드그룹 생성전략 참고자료
https://kim-dragon.tistory.com/54
Fargate
Role
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 |