在Kubernetes DevOps实践中,环境配置同步是确保应用从开发到生产一致性的关键环节。本文将分享一个完整的容器化应用部署环境准备方案。
环境配置同步架构
首先,我们采用GitOps理念,通过Helm Chart管理不同环境的配置。创建基础目录结构:
envs/
├── development/
│ ├── values.yaml
│ └── configmap.yaml
├── staging/
│ ├── values.yaml
│ └── configmap.yaml
└── production/
├── values.yaml
└── configmap.yaml
CI/CD流水线配置
使用GitHub Actions实现自动化部署:
name: Deploy to Kubernetes
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Helm
uses: azure/setup-helm@v1
- name: Configure kubectl
run: |
echo "$KUBECONFIG" | base64 -d > kubeconfig.yaml
kubectl config use-context my-cluster
- name: Deploy to Dev
run: |
helm upgrade --install dev-app ./charts/app \
--namespace dev \
--values envs/development/values.yaml
环境变量管理
通过Helm的values.yaml文件统一管理环境配置:
# development/values.yaml
replicaCount: 1
image:
repository: myapp
tag: dev-latest
env:
- name: ENV
value: development
- name: LOG_LEVEL
value: debug
自动化脚本
创建环境同步脚本sync-env.sh:
#!/bin/bash
# 同步开发环境到生产环境配置
for env in development staging production; do
echo "Syncing $env environment"
helm template ./charts/app --values envs/$env/values.yaml > manifests/$env.yaml
kubectl apply -f manifests/$env.yaml
echo "Deployment completed for $env"
done
通过这种方式,确保了从开发到生产环境的配置一致性,同时保持了各环境的差异化配置管理。

讨论