앞에서 EKS Cluster를 Private하게 구성을 해보았다. 클러스터 엔드포인트 액세스를 Private으로 설정했었기 때문에 VPC 외부에서는 접근할 수 없다.
Bastion 서버에서 Cluster와 통신해보도록 하겠다.
kubectl
설치먼저 Bastion 서버에 kubectl
이 설치되어 있어야 한다.
다음 AWS 문서를 참고하여 Bastion 서버에
kubectl
을 설치한다.
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html
Bastion서버에서 Cluster로 요청이 가능하도록 Cluster 보안그룹
에 Bastion
에 대한 443
포트를 열어준다.
먼저 Bastion 서버에 접속해서 access key
와 secret access key
를 세팅한다.
Last login: Wed Apr 21 06:35:18 2021 from 125.128.60.184
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[aylee@ip-24-0-0-228 ~]$ aws configure
AWS Access Key ID [None]: AKIA5DFZMA**********
AWS Secret Access Key [None]: G44KzpgkkdD15JZmWEyN********************
Default region name [None]:
Default output format [None]:
이 access key
는 EKS Cluster
를 만든 IAM 사용자
의 access key
여야 한다.
(EKS Cluster를 생성한 사용자가 아닌 다른 사용자나 역할이 Kubernetes에 접근하는 방법은 다음 글에서...)
우리가 만든 Cluster
와 통신할 수 있도록 다음 명령어를 실행해 준다.
$ aws eks update-kubeconfig \
--region ap-northeast-1 \
--name L23724-cluster-tokyo
config
설정 완료 후 kubectl
명령어를 실행해 보면 다음과 같이 통신이 잘 되는 것을 볼 수 있다.
[aylee@ip-24-0-0-228 ~]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 20h
[aylee@ip-24-0-0-228 ~]$ kubectl get po
No resources found in default namespace.
Bastion이 아닌 로컬이나 다른 서버에서
kubeconfig
를 업데이트하고 kubectl 명령어를 실행하려고 하면timeout
이 발생하는 것을 볼 수 있다.
(오직 Bastion에서만 접근 가능)$ kubectl get svc Unable to connect to the server: dial tcp 24.0.0.104:443: i/o timeout
다음 글에서는 Bastion 서버안에 Cluster 생성자의 access key를 넣는 대신 EC2에 IAM 역할
을 붙여준 후 그 역할에 RBAC
권한 부여를 통해 Cluster에 접근할 수 있도록 세팅해 보겠다.
Bastion이라는 건 어떤건가요?
EC2머신을 하나 독립적으로 만들어서 진행해야 하는 부분일까요?