JINIers
Private Cluster 구성 본문
이걸 만들거다.
private cluster
참고링크 1: 비공개 클러스터 만들기
참고링크 2: GKE로 Cloud NAT 설정
구성순서
1. vpc 네트워크 및 서브넷 만들기
2. 비공개 클러스터 만들기
3. SSH 연결을 허용하는 방화벽 규칙 만들기
4. 노드 중 하나에 SSH 권한 만들기
5. 노드에 로그인하고 인터넷에 연결할 수 없는지 확인
6. Cloud Router를 사용하여 NAT 구성 만들기
7. 인터넷에 연결시도
8. cloud shell을 사용하여 비공개 클러스터로 액세스
1. vpc 네트워크 및 서브넷 만들기
vpc network > create vpc network > name, subnet 입력 > create
* region = us-central1로 했으나 vpc subnet이 뜨지 않아 us-west1로 변경해주었다.
2. 비공개 클러스터 만들기
kubernetes engine > cluster > create > standard > configure > 세부설정(아래) > create
cluster basics
- name : private-cluster
- region : us-west1
Node pools > default-pool
size > number of nodes : 1
* total node: 3 (아니면 9개가 생성되는데 그럼 cluster가 생성되는데 몹시 오래걸린다.)
cluster > networking
- network : 생성한 vcp network 선택(private-cluster-vpc)
* 네트워크 선택 시 서브넷은 자동으로 선택된다.
- private cluster 선택
- Access control plane using its external IP address : 체크
* 선택 해제 하지말 것(cloud shell로 접속 시 접속 불가)
- control plan ip range 입력
- Enable control plane authorized networks : 체크
클러스터를 생성한다.
※ access control plane using its external IP address : 체크해제 시 클러스터의 external ip 는 생성되지 않는다.
비공개클러스터니까 당연히 external ip가 생겨야 하지 않나?? ㅇㅇ 맞음. 근데 저걸 체크해제하면 cloud shell에서 접속할 수 없다.
관련링크: 제어 영역 액세스를 위한 승인된 네트워크 추가
3. SSH 연결을 허용하는 방화벽 규칙 만들기
vpc network > firewall > create firewall rule > 세부설정(▼) > create
참고링크에는 ssh만 설정하라고 했지만 원활한 테스트를 위해 모든 포트를 오픈해준다.
4. 노드 중 하나에 SSH 권한 만들기
security > Identity-Aware Proxy > SSH and TCP resources > 리소스 체크 > + add principal
add principal >
new principals : 계정 입력
role : IAP-secured Tunnel User
5. 노드에 로그인하고 인터넷에 연결할 수 없는지 확인
compute engine > vm instance > gke vm instance > ssh 접속
노드 프롬프트에서 컨테이너 프로세스 ID 찾기
pgrep '^kube-dns$'
컨테이너와 연결
sudo nsenter --target [process-id] --net /bin/bash
sudo nsenter --target 3577 --net /bin/bash
kube-dns에서 인터넷 연결시도
curl example.com
6. Cloud Router를 사용하여 NAT 구성 만들기
cloud nat > 세부설정 > create
라우터 생성
create router > name : private-cluster-router > create
7. 인터넷에 연결재시도
curl example.com
8. cloud shell을 사용하여 비공개 클러스터로 액세스
cloud의 외부ip 주소를 찾는다.
dig +short myip.opendns.com @resolver1.opendns.com
* cloudshell의 ip는 쉘 창을 닫으면 ip가 바뀌기 때문에 접속 전에 꼭 확인해준다.
cloud shell의 외부주소를 클러스터의 승인된 네트워크 목록에 추가
gcloud container clusters update [cluster_NAME] --enable-master-authorized-networks --master-authorized-networks=[cloudshell IP]/32 --region=[cluster 지역]
gcloud container clusters update private-cluster --enable-master-authorized-networks --master-authorized-networks=104.199.132.18/32 --region=us-west1
승인된 네트워크 목록 확인
gcloud container clusters describe private-cluster --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])" --region=us-west1
kubernetes engine > cluster > networking > Control plane authorized networks 에서도 확인할 수 있다.
사용자 인증정보 받기
gcloud container clusters get-credentials [Cluster NAme] --project=[ProjectID] --region=[지역]
gcloud container clusters get-credentials private-cluster --project=sound-works-376501 --region=us-west1
node와 연결되는지 확인
kubectl get nodes
끝.
잘 되는지 deploy를 만들어 테스트해보았다.
잘됨
진짜 끝!
'GCP > 구성연습' 카테고리의 다른 글
bastion 생성 (0) | 2023.04.28 |
---|---|
GCP vm → gitlab으로 파일 동기화 (0) | 2022.12.05 |
GCP vm에 gitlab Project sycn 하기 (0) | 2022.12.05 |
k8s ingress & cloud armor 설정 (0) | 2022.08.19 |
GCP 부팅디스크 분리 및 VM 복제 (0) | 2022.07.13 |