Summary
사전 준비
기존에 Nginx Proxy Manager + 를 통해 Reverse Proxy를 통한 웹 서비스를 관리했는데 k3s에는 내부 자체의 Reverse Proxy 도구인 Traefik이 있습니다. 자동으로 80 포트와 443 포트를 사용하려고 시도하기 때문에 Nginx Proxy Manager + 를 미리 종료시켰습니다.
설치
k3s 설치 방법은 매우 간단합니다. 공식 홈페이지에 있는 스크립트를 사용하면 바로 설치 가능합니다.
curl -sfL https://get.k3s.io | sh -이후 설치가 완료되면 아래 명령어를 통해 설치 완료 여부를 판단할 수 있습니다.
sudo k3s kubectl get node초기 설정
사용자 권한으로 실행하기
k3s 명령어를 실행시키기 위해서는 sudo k3s를 계속 붙여줘야해서 매우 번거롭습니다. 이를 생략하기 위한 방법입니다.
# 1. 사용자용 kube 디렉토리 생성
mkdir -p ~/.kube
# 2. k3s의 관리자 설정 파일을 복사
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
# 3. 설정 파일의 소유권 이전
sudo chown $(id -u):$(id -g) ~/.kube/config
# 4. zsh에 자동완성 기능 추가
echo 'export KUBECONFIG=~/.kube/config' >> ~/.zshrc
# 5. 설정 적용
source ~/.zshrc
# 6. 동작 확인
kubectl get nodek3s.yaml → config 인 이유
kubectl은 사용자가 별도 옵션을 주지 않으면 기본적으로~/.kube/디렉토리에 있는config라는 이름의 파일을 가장 먼저 찾도록 설계되어 있습니다.
k8s 관리 도구 추천
yaml 폴더 설정
k3s의 yaml를 저장하기 위한 폴더를 설정합니다. 저 같은 경우에는 ~/k3s를 생성했습니다.
Tip
해당 폴더를 git을 통해 관리하는 것을 추천드립니다.
namespace 생성
Namespace는 k8s에서 서비스들을 그룹화하여 격리할 수 있는 기능입니다. 같은 Namespace 안에서만 소통할 수 있기 때문에 특정 서비스에 의존해야하는 서비스의 경우 같은 Namespace안에 놓습니다.
# 인프라성 서비스 (PostgreSQL, Authentik 등)
kubectl create namepsace core-infra
# 일반 사용자용 서비스 (Stirling-PDF, VaultWarden 등)
kubectl create namespace apps
# 생성 확인
kubectl get ns