Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JINIers

Private Cluster 구성 본문

GCP/구성연습

Private Cluster 구성

JINIers 2023. 2. 27. 15:12

이걸 만들거다.

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

cluster basics


Node pools > default-pool

size > number of nodes : 1

* total node: 3 (아니면 9개가 생성되는데 그럼 cluster가 생성되는데 몹시 오래걸린다.)

default-pool


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 : 체크

networking

클러스터를 생성한다.

※ access control plane using its external IP address : 체크해제 시 클러스터의 external ip 는 생성되지 않는다.

비공개클러스터니까 당연히 external ip가 생겨야 하지 않나?? ㅇㅇ 맞음. 근데 저걸 체크해제하면 cloud shell에서 접속할 수 없다. 

관련링크: 제어 영역 액세스를 위한 승인된 네트워크 추가


3. SSH 연결을 허용하는 방화벽 규칙 만들기

vpc network > firewall > create firewall rule > 세부설정(▼) > create 

참고링크에는 ssh만 설정하라고 했지만 원활한 테스트를 위해 모든 포트를 오픈해준다.

 

create firewall rule


4. 노드 중 하나에 SSH 권한 만들기

security > Identity-Aware Proxy > SSH and TCP resources > 리소스 체크 > + add principal

 

add principal >

new principals : 계정 입력

role : IAP-secured Tunnel User

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

그럼 이렇게 bash쉘로 변경된다.

kube-dns에서 인터넷 연결시도

curl example.com

결과가 뜨지 않아야한다.


6. Cloud Router를 사용하여 NAT 구성 만들기

cloud nat > 세부설정 > create


라우터 생성

create router > name : private-cluster-router > create

create router

 


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

승인된 네트워크 목록 확인(shell)

kubernetes engine > cluster > networking > Control plane authorized networks 에서도 확인할 수 있다.

승인된 네트워크 목록 확인(console)

 

사용자 인증정보 받기

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
Comments