Kubernetes The Hard Way의 두 번째 단계인 'Compute Resources (Jumpbox)' 파트 정리
이제 본격적인 실습의 시작이다. 클러스터를 구성할 서버들을 띄우기 전, 이 모든 작업을 지휘할 지휘소(Command Center) 역할을 하는 '점프박스(Jumpbox)'를 먼저 세팅해야 한다.
로컬 노트북에서 바로 쏘는 게 아니고, 격리된 환경에서 안전하게 접근하는 과정이다.
사실상 Bastion Host 구축 단계라고 보면 된다.
Kubernetes The Hard Way(이하 KTHW)는 말 그대로 '어렵게' 배우는 과정이다.
매니지드 서비스(EKS, GKE)가 다 해주던 걸 내가 직접 해야 한다.
앞으로 만들 컨트롤 플레인(Control Plane)과 워커 노드(Worker Node)들은 보안상 외부에서 함부로 접속하면 안 된다. 그래서 딱 하나의 구멍, 즉 점프박스를 통해서만 내부 노드들에 접근하고 명령을 내리도록 네트워크를 구성한다.
이 흐름을 기억하자. 오늘 할 일은 이 중간 다리를 튼튼하게 만드는 것이다.
일단 구글 클라우드(GCP)든 AWS든 기본 리눅스 머신(Ubuntu 추천) 하나가 필요하다. KTHW 가이드에서는 보통 gcloud 커맨드로 생성하지만, 핵심은 "외부에서 접속 가능한 공인 IP를 가진 리눅스 서버 한 대"를 띄우는 것이다.
Memo:
나중에 헷갈리지 않게 호스트네임은jumpbox로 명확하게 지정해두자.
점프박스에 접속 후 , 단순한 서버 접속 용도가 아니라, 여기서 인증서 생성, 설정 파일 배포, 클러스터 명령 수행을 위한 툴 설치한다.
설치해야 할 핵심 3대장:
쿠버네티스 보안의 핵심은 TLS 인증서다. KTHW의 꽃이자 가장 고통스러운 부분이기도 하다.
openssl은 너무 복잡하니까, Cloudflare에서 만든 PKI 툴인 cfssl을 깐다.
cfssl: 인증서 서명 요청(CSR) 생성 및 서명cfssljson: 출력을 JSON에서 실제 인증서 파일(.pem 등)로 변환# 대략 이런 느낌으로 설치 (버전 확인 필수)
wget -q --show-progress --https-only --timestamping \
https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/linux/cfssl \
https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/linux/cfssljson
chmod +x cfssl cfssljson
sudo mv cfssl cfssljson /usr/local/bin/
설명이 필요 없는 쿠버네티스 CLI. 아직 클러스터는 없지만, 나중에 설정 파일(kubeconfig)을 만들거나 상태를 확인할 때 필요하므로 미리 깔아둔다.
# 최신 버전 혹은 실습하려는 k8s 버전과 맞춰서 다운로드
wget https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
점프박스에서 다른 노드(server, worker)들에 접속할 때 매번 비밀번호를 칠 수는 없다. 자동화를 위해 SSH Key 기반 인증을 구성해야 한다.
이 부분이 꼬이면 나중에 노드 세팅할 때 Permission denied를 발생하니 확실하게 체크해야 함.
cfssl 툴을 미리 세팅.kubectl도 준비 완료.다음 단계부터는 인증서 생성(Certificate Authority) 작업을 진행한다.