[EKS] ④ Bastion 서버에서 Private Cluster와 통신

이아영·2021년 4월 22일
1

EKS

목록 보기
4/7

앞에서 EKS Cluster를 Private하게 구성을 해보았다. 클러스터 엔드포인트 액세스를 Private으로 설정했었기 때문에 VPC 외부에서는 접근할 수 없다.

Bastion 서버에서 Cluster와 통신해보도록 하겠다.

Bastion 서버에 kubectl 설치

먼저 Bastion 서버에 kubectl이 설치되어 있어야 한다.

다음 AWS 문서를 참고하여 Bastion 서버에 kubectl을 설치한다.
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html


Cluster 보안 그룹 인바운드 규칙 추가

Bastion서버에서 Cluster로 요청이 가능하도록 Cluster 보안그룹Bastion에 대한 443 포트를 열어준다.


Bastion 서버에서 Cluster와 통신

먼저 Bastion 서버에 접속해서 access keysecret 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 keyEKS 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에 접근할 수 있도록 세팅해 보겠다.

1개의 댓글

comment-user-thumbnail
2024년 6월 27일

Bastion이라는 건 어떤건가요?
EC2머신을 하나 독립적으로 만들어서 진행해야 하는 부분일까요?

답글 달기