使用Kustomize可声明式管理.NET应用的多环境Kubernetes部署,通过base定义通用配置,overlays叠加环境特有补丁,实现配置分离与复用。

使用 Kustomize 定制 .NET 应用的 Kubernetes 配置是一种声明式、无侵入的方式,能有效管理不同环境(如开发、测试、生产)下的部署差异。你不需要修改原始 YAML 文件,而是通过叠加补丁来调整配置。以下是具体操作步骤和最佳实践。
在项目根目录创建 k8s/base 目录,存放通用的 Kubernetes 资源定义:
示例 deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: dotnet-app
spec:
replicas: 2
selector:
matchLabels:
app: dotnet-app
template:
metadata:
labels:
app: dotnet-app
spec:
containers:
- name: app
image: myregistry/dotnet-app:latest
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: Production
kustomization.yaml 声明资源:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - deployment.yaml - service.yaml
在 k8s/overlays 下建立环境子目录,例如 dev、staging、prod。
以 k8s/overlays/dev 为例:
patch.yaml 示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: dotnet-app
spec:
replicas: 1
template:
spec:
containers:
- name: app
image: myregistry/dotnet-app:dev
env:
- name: ASPNETCORE_ENVIRONMENT
value: Development
resources:
requests:
memory: "512Mi"
cpu: "200m"
overlays/dev/kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization bases: - ../../base patches: - patch.yaml
.NET 应用常依赖 appsettings.json 或环境变量。Kustomize 支持 ConfigMap 和 Secret 注入。
在 overlays/prod 中添加自定义配置:
# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: dotnet-app-config
data:
appsettings.json: |
{
"ConnectionStrings": {
"Default": "Server=prod-db;Database=AppDb;"
}
}
# secret.yaml(建议从文件生成)
apiVersion: v1
kind: Secret
metadata:
name: dotnet-app-secret
type: Opaque
stringData:
appsettings.Production.json: |
{ "Logging": { "LogLevel": { "Default": "Warning" } } }
更新 kustomization.yaml 引入它们:
resources: - configmap.yaml - secret.yaml
然后在补丁中挂载:
patches:
- |-
apiVersion: apps/v1
kind: Deployment
metadata:
name: dotnet-app
spec:
template:
spec:
containers:
- name: app
volumeMounts:
- name: config-volume
mountPath: /app/appsettings.json
subPath: appsettings.json
- name: secret-volume
mountPath: /app/appsettings.Production.json
subPath: appsettings.Production.json
volumes:
- name: config-volume
configMap:
name: dotnet-app-config
- name: secret-volume
secret:
secretName: dotnet-app-secret
使用 kubectl 直接应用定制化配置:
kubectl apply -k k8s/overlays/dev
或先查看生成的 YAML:
kustomize build k8s/overlays/dev
可将其输出用于 CI/CD 流水线:
kustomize build k8s/overlays/prod | kubectl apply -f -
基本上就这些。Kustomize 让你用一套模板管理多环境部署,特别适合 .NET 这类需要环境差异化配置的应用。关键是把公共部分抽到 base,变化的部分用 overlay 补丁实现,结构清晰又易于维护。
以上就是如何用 Kustomize 定制 .NET 应用的 Kubernetes 配置?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号