목차
- 1. WSL 설치 및 Ubuntu 준비
- 2. 기본 패키지 설치
- 3. Git 설정 및 프로젝트 clone
- 4. Terraform 설치
- 5. Hetzner API Token 설정
- 6. Terraform 실행
- 7. SSH Key 준비
- 8. Hetzner에 SSH Key 등록
- 9. Terraform에 SSH Key 연결
- 10. 서버 재생성
- 11. 서버 접속
- 12. k3s 설치
- 13. 애플리케이션 배포
- 14. 결과 확인
1. WSL 설치 및 Ubuntu 준비
먼저 Windows에서 WSL을 설치한다.
이 명령어는 반드시 Windows PowerShell을 관리자 권한으로 실행한 뒤 입력해야 한다.
wsl --install

설치 후 재부팅하고, Ubuntu를 실행한다.

처음 실행할 때 사용자 이름과 비밀번호를 설정하게 된다.
이 비밀번호는 Ubuntu 내부에서 sudo 사용할 때 쓰는 비밀번호다.
2. 기본 패키지 설치
Ubuntu에서 필요한 기본 도구들을 먼저 설치한다.
이 단계에서 패키지를 업데이트하지 않으면 이후 Terraform이나 기타 도구 설치 과정에서 오류가 발생할 수 있다.
sudo apt update
sudo apt upgrade -y
sudo apt install -y git curl unzip gnupg software-properties-common

3. Git 설정 및 프로젝트 clone
새 PC에서는 Git 설정도 다시 해줘야 한다.
user.name과 user.email은 형식만 맞으면 되고, 실제 값은 아무거나 사용해도 동작에는 문제가 없다.
git config --global user.name "Seulgi"
git config --global user.email "GitHub 이메일"
git config --global --list
이후 프로젝트를 가져온다.
cd ~
git clone https://github.com/xotmfrlox/cloud-native-devops-gcp.git
cd cloud-native-devops-gcp
4. Terraform 설치
Terraform은 서버가 아니라 로컬 환경에 설치한다.
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update
sudo apt-get install terraform
terraform -v //설치확인
5. Hetzner API Token 설정
Hetzner 관련 설정은 Hetzner Cloud 콘솔에서 진행한다.
접속 주소: https://console.hetzner.cloud/
Terraform은 Hetzner Cloud API를 통해 서버를 생성한다.
이때 API Token은 로컬 환경에서 Hetzner 계정으로 요청을 보내기 위한 인증 수단이다.
즉, 로컬 PC에서 Terraform을 실행하면 이 토큰을 이용해 Hetzner에 서버 생성 요청이 전달된다.
경로: Hetzner Cloud → Security → API Tokens → Create Token

export HCLOUD_TOKEN="발급받은 토큰"
이 값은 현재 터미널에서만 유지되기 때문에
새 환경에서는 다시 설정해야 한다.
API Token VS SSH Key
| 구분 | 용도 |
| API Token | Terraform이 Hetzner에 서버 생성/삭제 요청 |
| SSH Key | 서버에 접속 (ssh root@IP) |
6. Terraform 실행
Terraform은 terraform 폴더 안에서 실행한다.
cd ~/cloud-native-devops-gcp/terraform
terraform init // 필요한 provider와 모듈을 다운로드하고 Terraform 실행을 초기화한다.
terraform plan // 현재 상태와 비교해서 어떤 리소스가 생성/변경될지 미리 보여준다.
terraform apply // plan 결과를 실제로 실행하여 Hetzner에 서버를 생성한다.
이 단계에서는 서버만 생성된다.


Terraform을 처음 실행할 때 다음과 같은 오류가 발생할 수 있다.
Error: Failed to load plugin schemas
permission denied
이 오류는 Terraform provider 실행 파일에 권한이 없을 때 발생한다.
주로 새로운 PC 환경에서 .terraform 디렉터리가 정상적으로 초기화되지 않았을 때 나타난다.
해결 방법은 기존 provider 캐시를 삭제하고 다시 초기화하는 것이다.
rm -rf .terraform
rm .terraforhttp://m.lock.hcl
terraform init
terraform apply
7. SSH Key 준비
SSH key는 서버 접속 시 비밀번호 입력 없이 인증하기 위해 사용한다.
key가 설정되어 있으면 `ssh root@IP` 실행 시 바로 접속되고, 없으면 password 입력을 요구하게 된다.
새 PC에서는 SSH key가 없는 경우가 많으므로 먼저 확인한다.
// 키 여부 확인
ls ~/.ssh
id_ed25519.pub 등 키가 있는 확인후 없으면 생성한다.
// 키 생성
ssh-keygen -t ed25519
// 생성된 공개키 확인:
cat ~/.ssh/id_ed25519.pub
8. Hetzner에 SSH Key 등록
Hetzner 콘솔에서 SSH key를 등록한다.
- Security → SSH Keys → Add Key

9. Terraform에 SSH Key 연결
Terraform 서버 설정은 프로젝트 내부 terraform 폴더에 있는 main.tf 파일에서 관리된다.
서버 생성 시 SSH key가 적용되도록 main.tf에 키를 명시한다.
cd ~/cloud-native-devops-gcp/terraform/main.tf
// 아래 내용 추가 혹은 ssh_keys 확인
resource "hcloud_server" "devops" {
name = "devops-server"
server_type = "cx23"
image = "ubuntu-22.04"
location = "hel1"
ssh_keys = ["등록한 SSH key 이름"]
}
10. 서버 재생성
SSH key 설정을 반영하려면 서버를 다시 생성해야 한다.
terraform destroy
terraform apply
11. 서버 접속
확인 방법은 두 가지다.
1. Terraform 출력값으로 확인
terraform output
안될 경우에는,2. Hetzner Cloud 콘솔에서 확인
Project 선택 → Servers → 생성된 서버 클릭 → Networking 탭 또는 서버 목록에서 IPv4 확인
12. k3s 설치
서버를 destroy 후 다시 생성하면 다음과 같은 오류가 발생할 수 있다.
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
이 오류는 같은 IP에 대해 이전 서버의 SSH fingerprint가 로컬에 남아 있을 때 발생한다.
Terraform으로 서버를 새로 만들면 서버는 완전히 새로운 인스턴스이기 때문에 fingerprint도 변경된다.
로컬의 기존 기록을 삭제하면 해결된다.
ssh-keygen -f "~/.ssh/known_hosts" -R "<SERVER_IP>"
이후 다시 ssh 접속을 시도하면 새로운 fingerprint를 등록하고 정상적으로 접속할 수 있다.
ssh root@<SERVER_IP>
정상적으로 설정되면 비밀번호 없이 접속된다.
13. 애플리케이션 배포
서버에 들어간 뒤 Kubernetes를 설치한다.
apt update
apt install -y git curl
curl -sfL https://get.k3s.io | sh -
// 확인
kubectl get nodes
14. 결과 확인
cd /root
git clone https://github.com/xotmfrlox/cloud-native-devops-gcp.git
cd cloud-native-devops-gcp
kubectl apply -f k8s/
15. 결과 확인
kubectl get pods
kubectl get svc
kubectl get ingress
브라우저에서 서버 IP로 접속하면 애플리케이션을 확인할 수 있다.
마무리
새로운 PC에서 같은 환경을 다시 구성하는 과정은
단순히 코드만 가져오는 것으로 끝나지 않는다.
로컬 환경(WSL, Terraform), 인증 정보(API Token, SSH key),
그리고 인프라 코드까지 모두 맞아야 동일한 환경이 재현된다.
이 과정을 한 번 정리해두면,
다른 환경에서도 같은 방식으로 빠르게 인프라를 다시 만들 수 있다.
'💻 개발과 자동화' 카테고리의 다른 글
| How to Set Up SSH for GitLab and Clone Projects Securely (0) | 2025.12.10 |
|---|---|
| Keycloak + OAuth2 Integration with Docker (WSL2 + Rancher) (0) | 2025.12.03 |
| [Mssql] Table drop시 FOREIGN KEY 참조로 삭제 불가능 (0) | 2024.06.14 |
| TOMCAT 배포 및 Log 디렉토리 변경 (2) | 2023.08.25 |
| 리눅스 서버에 USB 마운트 및 랜선 접속 방법 (0) | 2023.08.24 |
댓글