0

0

如何用 Kustomize 定制 .NET 应用的 Kubernetes 配置?

小老鼠

小老鼠

发布时间:2025-09-30 12:05:02

|

390人浏览过

|

来源于php中文网

原创

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

如何用 kustomize 定制 .net 应用的 kubernetes 配置?

使用 Kustomize 定制 .NET 应用的 Kubernetes 配置是一种声明式、无侵入的方式,能有效管理不同环境(如开发、测试、生产)下的部署差异。你不需要修改原始 YAML 文件,而是通过叠加补丁来调整配置。以下是具体操作步骤和最佳实践。

准备基础资源配置

在项目根目录创建 k8s/base 目录,存放通用的 Kubernetes 资源定义:

  • deployment.yaml:定义 .NET 应用的 Deployment
  • service.yaml:暴露应用服务
  • kustomization.yaml:声明基础资源

示例 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 修改副本数或镜像标签
  • 添加环境变量或资源配置限制
  • 引用基础配置并应用补丁

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

注入配置文件和 Secrets

.NET 应用常依赖 appsettings.json 或环境变量。Kustomize 支持 ConfigMap 和 Secret 注入。

网奇Eshop网络商城系统
网奇Eshop网络商城系统

网奇.NET网络商城系统是基于.Net平台开发的免费商城系统。功能强大,操作方便,设置简便。无需任何设置,上传到支持asp.net的主机空间即可使用。系统特色功能:1、同时支持Access和SqlServer数据库;2、支持多语言、多模板3、可定制缺货处理功能4、支持附件销售功能5、支持会员组批发功能6、提供页面设计API函数7、支持预付款功能8、配送价格分地区按数学公式计算9、商品支持多类别,可

下载

在 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 补丁实现,结构清晰又易于维护。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

415

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

310

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

75

2025.09.10

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

24

2025.12.22

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

3

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

13

2026.01.21

Python多线程合集
Python多线程合集

本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.4万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号