Files
lpt-infra/README.md
T

2.3 KiB

LPT Infrastructure

Kubernetes 部署清单,按环境隔离。

├── traefik/
│   └── dynamic.yml
├── dev/
│   ├── deployment-lpt-fe.yaml
│   ├── deployment-lpt-be.yaml
│   ├── deployment-lpt-ai.yaml
│   ├── service-lpt-fe.yaml
│   ├── service-lpt-be.yaml
│   ├── service-lpt-ai.yaml
│   └── configmap.yaml
├── prod/
│   ├── deployment-lpt-fe.yaml
│   ├── deployment-lpt-be.yaml
│   ├── deployment-lpt-ai.yaml
│   ├── service-lpt-fe.yaml
│   ├── service-lpt-be.yaml
│   ├── service-lpt-ai.yaml
│   └── configmap.yaml
└── README.md

首次部署

1. 创建 namespace

kubectl create namespace lpt-dev
kubectl create namespace lpt-prod

2. 创建 Secret(仅一次,由 CI/CD 自动管理)

# dev
kubectl create secret generic lpt-secrets \
  --from-literal=llm-api-key=sk-xxx \
  --from-literal=mysql-root-password=xxx \
  -n lpt-dev

kubectl create secret docker-registry regcred \
  --docker-server=192.168.123.199:5000 \
  --docker-username=admin \
  --docker-password=xxx \
  -n lpt-dev

# prod
kubectl create secret generic lpt-secrets \
  --from-literal=llm-api-key=sk-xxx \
  --from-literal=mysql-root-password=xxx \
  -n lpt-prod

kubectl create secret docker-registry regcred \
  --docker-server=192.168.123.199:5000 \
  --docker-username=admin \
  --docker-password=xxx \
  -n lpt-prod

3. Apply 全部配置

kubectl apply -f dev/
kubectl apply -f prod/

日常更新

cd ~/lpt-infra
git pull
kubectl apply -f dev/
kubectl apply -f prod/

Traefik

Traefik 以 Docker 容器运行在宿主机,通过 file provider 加载路由规则,转发到 K8s NodePort。

更新路由

# 将最新配置复制到 Traefik 挂载目录
sudo cp traefik/dynamic.yml /etc/traefik/dynamic/k8s-lpt.yml

# Traefik 自动检测文件变更,无需重启
# 或手动验证
sudo docker exec traefik cat /etc/traefik/dynamic/k8s-lpt.yml

端口对照

服务 dev NodePort prod NodePort
lpt-fe 30080 30180
lpt-be (api) 30082 30182
lpt-ai ClusterIP ClusterIP

验证

kubectl get pods -n lpt-dev
kubectl get pods -n lpt-prod