이전 글 https://jjongguet.tistory.com/171 와 연관됩니다.
테라폼으로 배포한 GKE 에 ssh
와 gcloud
로 연결하기 위한 방법을 총 정리했습니다.
SSH 키 생성
ssh-keygen
사용한 키 생성
ssh-keygen -t rsa -f {키 파일 위치} -C {GCP계정 이메일}
# 생성하려는 키의 위치가 ~/.ssh/gcp-example
# GCP계정 이메일이 jjong@gmail.com 이라면
# ssh-keygen -t rsa -f ~/.ssh/gcp-example -C jjong@gmail.com
이때 2개의 키 파일이 생성됩니다. 위의 경우에는 gcp-example
과 이 생성됩니다.
gcp-example
파일: private key 라고 지칭, 로컬 → 서버로 접근할때 사용하는 파일gcp-example.pub
파일: public key 라고 지칭, 서버에 등록해 두는 목적으로 사용하는 파일
권한설정
#권한설정
chmod 400 {private key}
#chmod 400 gcp-example
SSH 키 등록
GCP Console → 메타데이터 → SSH키 추가→ 아래의 ssh-rsa 로 시작하는 내용 전문을 복사 후 붙여넣기
#public key 값 확인
cat {public key}
#cat gcp-example.pub
(혹시몰라서 키 일부를 가렸습니다)
SSH 키 Gcloud OS에 등록
- 이 내용은 ‘내가 로컬에서 사용하고있는 PC’ 에서 ‘GCP에 떠있는
instance
’ 에 접근하기 위한 SSH key를 등록하는 과정입니다.
ssh 키를 gcloud 명령어에서 사용할수 있도록 등록하는 과정
gcloud compute os-login ssh-keys add \
--key-file=KEY_FILE_PATH \
--project=PROJECT
gcloud compute os-login ssh-keys add \
--key-file="~/.ssh/gcp-example.pub" \
--project="gcpgcpgcp"
- 프로젝트의 이름이 ‘
gcpgcpgcp
’라고 가정했을때의 예시입니다.
인스턴스의 태그 확인
이 과정을 해주는 이유는 GKE를 구성하는 Instance는 모두 Instance Template 을 통해서 만들어지는데, 각각의 Instance로 직접 접근하려면 ‘방화벽’ 항목에서 ‘네트워크 태그’ 를 사용해서 열어주려고 하기때문입니다.
VM 인스턴스 → 인스턴스 아무거나 접속 → 네트워크 태그
위 사진의 경우엔 네트워크 태그 3개를 확인할수 있습니다.
gke-jjong-test1-gke-d839ca68-node #각각의 인스턴스에 붙는 노드 중 하나
gke-node #gke 내부적으로 붙는 노드
jjong-test1-gke #인스턴스 템플릿으로 붙으면서 생긴 노드
이번 게시글에서는 GKE의 특정 노드(gke-jjong-test1-gke-d839ca68-node
), 모든 GKE의 노드(gke-node
)에 설정하는게 아닌, 인스턴스 템플릿으로 만들어진 노드(jjong-test1-gke
)에 설정을 하는것을 목표로 게시글을 작성하겠습니다.
방화벽 때 설정할 태그는 jjong-test1-gke
입니다.
내 IP 확인
네이버 → ‘내 ip 주소 확인’ 검색
방화벽 생성
네트워크 보안 → 방화벽 정책 → 방화벽 규칙 만들기
이후 아래와 같이 설정
이름: 아무렇게나 지정
대상: 지정된 대상 태그
대상 태그: jjong-test1-gke
(인스턴스 태그)
소스 IPv4범위: (네이버 → 내 IP주소 조회했을때 나오는 값)
지정된 프로토콜 및 포트: 22(ssh)
이렇게 하면 끝이다. gcloud와 ssh명령어를 통해서 이제 서버에 접근할 수 있다
gcloud 명령어를 사용한 접근법
gcloud compute ssh --zone {region} {instance id} --project {project name}
예를들어 {region}
이 ‘asia-northeast3-b’
이고
{instance id}
가 ‘gke-jjong-test1-gke-jjong-test1-gke-9f262b00-bmhp’
이고
{project name}
이 ‘gke-gcp-test-project’
라고 가정하면
gcloud compute ssh --zone "asia-northeast3-b" "gke-jjong-test1-gke-jjong-test1-gke-9f262b00-bmhp" --project "gke-gcp-test-project"
ssh 명령어를 사용한 접근법
ssh -i {private key} {instance의 user}@{instance ip}
예를들어 {private key}
가 ~/.ssh/gcp-example
이고
{instance user}
가 jjongguet
이고
{instance ip}
가 1.2.3.4
라면
ssh -i ~/.ssh/gcp-example jjongguet@1.2.3.4
'Cloud > GCP' 카테고리의 다른 글
gcloud 계정 변경 적용 안될때: auth login, auth application-default login의 차이점 (0) | 2023.10.30 |
---|---|
테라폼으로 GKE에 노드 프로비저닝 하는 예제 (1) | 2023.10.08 |