Bỏ qua để đến nội dung

Runbook Khởi tạo cụm & Bootstrap ArgoCD

1. Kiểm tra điều kiện tiên quyết trước khi chạy

Phần tiêu đề “1. Kiểm tra điều kiện tiên quyết trước khi chạy”

Trước khi chạy playbook khởi tạo, hãy đảm bảo các điều kiện sau đã sẵn sàng:

  1. Kết nối SSH tới VPS Hetzner CX33 thành công:
    Terminal window
    ssh hetzner-cx33-nbg "uname -a"
  2. File khoá bí mật AGE tồn tại trên máy local tại ~/.config/sops/age/keys.txt:
    Terminal window
    test -f ~/.config/sops/age/keys.txt && echo "Đã có private key"
  3. Mã hoá lại các file biến nếu có thay đổi:
    Terminal window
    make sops-encrypt

Thực hiện kiểm tra cú pháp và triển khai toàn bộ hạ tầng bằng Ansible (lệnh có tính chất idempotent, chạy lại an toàn):

Terminal window
# 1. Kiểm tra cú pháp manifest Kustomize và cú pháp playbook
make validate
# 2. Chạy playbook bootstrap hoàn chỉnh
make bootstrap
# 3. Kiểm tra trạng thái node từ máy local
make nodes

Kết quả mong đợi khi kiểm tra node:

NAME STATUS ROLES AGE VERSION
docker-ce-ubuntu-8gb-nbg1-1 Ready control-plane,master 2m v1.37.0+k3s1

Playbook Ansible sẽ tải file kubeconfig về một đường dẫn riêng biệt: ~/.kube/hetzner-cx33-nbg.yaml để tránh ghi đè làm mất cấu hình các cụm k8s khác trên máy của bạn.

Để tương tác với cụm:

Terminal window
# Cách 1: Xuất biến môi trường cho phiên làm việc hiện tại
export KUBECONFIG=~/.kube/hetzner-cx33-nbg.yaml
# Cách 2: Sao lưu file cũ và đặt cụm này làm kubeconfig mặc định
make kubeconfig

Sau khi make bootstrap hoàn tất, kiểm tra toàn bộ các pod của ArgoCD đã ở trạng thái Running:

Terminal window
kubectl get pods -n argocd

Kết quả mẫu:

NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 3m
argocd-applicationset-controller-... 1/1 Running 0 3m
argocd-dex-server-... 1/1 Running 0 3m
argocd-redis-... 1/1 Running 0 3m
argocd-repo-server-... 1/1 Running 0 3m
argocd-server-... 1/1 Running 0 3m

Kiểm tra endpoint công khai của ArgoCD qua giao thức HTTPS:

Terminal window
curl -sI https://argocd.timi.io.vn

Headers trả về mẫu:

HTTP/2 200
server: Cowboy / Traefik
strict-transport-security: max-age=63072000; includeSubDomains; preload
  • Địa chỉ UI: https://argocd.timi.io.vn
  • Tài khoản: admin
  • Mật khẩu: Lấy từ giá trị đã mã hoá trong file ansible/inventory/group_vars/all.sops.yml (argocd_admin_password).