直播笔记- 使用Kustomize管理Kubernetes清单

点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践

bf5961ea8dfbb5dc196133c6b85a8b71.gif

点击下方预约按钮,预约直播cde567d70b750a6f922df4ddf4fe9cda.png

上期直播回放,可以通过视频号观看

今天是「DevOps云学堂」与你共同进步的第 10 

关注公众号,回复 devops,免费加入DevOps学习群

获得问题解析、DevOps解决方案指导


在此文章中,我们演示了如何使用 Kustomize 通过简单示例来管理 Kubernetes 清单,以及如何使用 Kustomize CLI 呈现 Kubernetes 清单。呈现的 YAML 文件可以使用命令直接部署到集群kubectl。我们也可以直接使用 CD(持续交付)工具,比如Argo CD使用 kustomize 配置来部署资源。
先决条件:基本了解 Kubernetes 以及如何使用 yaml 部署资源。机器中安装了 Kustomize CLI。要安装,请参阅https://kubectl.docs.kubernetes.io/installation/kustomize/以获取更多详细信息。

Kustomize 简介

Kustomize 引入了一种无模板的方式来自定义应用程序配置,从而简化了现成应用程序的使用。Kubernetes配置应用程序时使用静态YAML文件,但在不同环境中使用相同的配置文件不可行。Kustomize提供了一种解决方案,允许用户通过单个基础配置,根据不同环境的需求,通过变量和补丁方式定制配置文件。
44c50f98bb6252c40f7246b507670c76.png

配置管理

资源管理

https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/resource/ 该resources标签用于指定应用程序清单yaml的路径,该标签由kustomize框架识别。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml

生成ConfigMap和Secrets

参考:https://kubectl.docs.kubernetes.io/guides/config_management/secrets_configmaps/

configMapGenerator:
- name: nginxconfig
  files:
  - nginx.conf

secretGenerator:
  - name: env_file_secret
    envs:
    - secrets.txt
    type: Opaque

更新容器镜像

参考:https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/images/

images:
- name: nginx
  newName: my-registry/nginx
  newTag: v1

更新副本数

https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/replicas/

replicas:
- name: nginx
  count: 5

更新对象的API

https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/

patches:
  - target:
      kind: Deployment
    patch: |
      - op: replace
        path: /apiVersion
        value: apps/v2

以上代码参考代码库:https://jihulab.com/devopsvip/kustomize-demo.git 中的01-resources目录代码, clone 代码库后,运行kustomize build 01-resources命令生成清单文件内容输出。


多环境配置

创建一个base目录,用于存储应用的基准清单文件。参考代码库:https://jihulab.com/devopsvip/kustomize-demo.git 中的base目录。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml

secretGenerator:
  - name: env_file_secret
    envs:
    - secrets.txt
    type: Opaque

configMapGenerator:
- name: nginxconfig
  files:
  - nginx.conf
  
images:
- name: nginx
  newName: my-registry/nginx
  newTag: v1

创建dev环境配置

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization


resources:
  - ../../base

namespace: apps-dev
nameSuffix: -dev
replicas:
- name: nginx
  count: 2

commonLabels:
  env: dev

创建stg环境配置

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization


resources:
  - ../../base

namespace: apps-stg
nameSuffix: -stg

images:
- name: nginx
  newName: my-registry/nginx
  newTag: v1

replicas:
- name: nginx
  count: 5

commonLabels:
  env: stg

发布命令:

##dev
kustomize build env/dev

##stg
kustomize build env/stg

以上是我们分享的关于Kustomize的使用方式,更多内容可以参考官方文档:kustomize.io.


往期内容

7ed41512df96a345e2ca45280f12746a.jpeg

推动软件持续交付的24个关键能力点

b0fbd51ff8a26eb14506ce455fbb767e.jpeg

谈谈DevOps工程师需要学习的技能

e389e3e49b23749090b2f33af4173bdd.jpeg

使用Jenkins Git参数实现分支标签动态选择

8ff13b9deef917c92dc47a91173ac0d1.jpeg

CodeReview实践-Gerrit自动触发JenkinsCI

7b74cab4ed2ad5a6eb4aebb41b3090f2.jpeg

直播笔记-使用async和poll加速playbook运行


如果这篇文章对您有帮助,欢迎转发点赞分享。您的关注是我持续分享的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值