kustomize来生成相应的k8s的相关配置

1、configmap

使用文件生成configmap
#生成一个  application.properties 文件
cat <<EOF >application.properties
FOO=Bar
EOF

cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: example-configmap-1
  files:
  - application.properties
EOF

基于键值对生成configmap
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: example-configmap-2
  literals:
  - FOO=Bar
EOF

2、在deployment中引用

cat <<EOF >application.properties
FOO=Bar
EOF

cat <<EOF >deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: app
        image: my-app
        volumeMounts:
        - name: config
          mountPath: /config
      volumes:
      - name: config
        configMap:
          name: example-configmap-1
EOF

cat <<EOF >./kustomization.yaml
resources:
- deployment.yaml
configMapGenerator:
- name: example-configmap-1
  files:
  - application.properties
EOF

3、secret的创建

基于文件的创建
# 创建一个 password.txt 文件
cat <<EOF >./password.txt
username=admin
password=secret
EOF

cat <<EOF >./kustomization.yaml
secretGenerator:
- name: example-secret-1
  files:
  - password.txt
EOF

基于键值对的创建
cat <<EOF >./kustomization.yaml
secretGenerator:
- name: example-secret-2
  literals:
  - username=admin
  - password=secret
EOF

4、贯穿性的字段应用在整个文件中的所有位置

# 创建一个 deployment.yaml
cat <<EOF >./deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
EOF

cat <<EOF >./kustomization.yaml
namespace: my-namespace
namePrefix: dev-
nameSuffix: "-001"
commonLabels:
  app: bingo
commonAnnotations:
  oncallPager: 800-555-1212
resources:
- deployment.yaml
EOF

最终结果
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    oncallPager: 800-555-1212
  labels:
    app: bingo
  name: dev-nginx-deployment-001
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app: bingo
  template:
    metadata:
      annotations:
        oncallPager: 800-555-1212
      labels:
        app: bingo
    spec:
      containers:
      - image: nginx
        name: nginx

kustomize edit set [command] [arguments]

可用命令

image: 更新或添加镜像。

label: 更新或添加标签。

annotation: 更新或添加注解。

replicas: 更新或添加副本数。

resource: 添加资源文件。

transformer: 添加转换器。

5、如果有多环境可以使用基准的方式

# 创建一个包含基准的目录
mkdir base
# 创建 base/deployment.yaml
cat <<EOF > base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
EOF

# 创建 base/service.yaml 文件
cat <<EOF > base/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  ports:
  - port: 80
    protocol: TCP
  selector:
    run: my-nginx
EOF

# 创建 base/kustomization.yaml
cat <<EOF > base/kustomization.yaml
resources:
- deployment.yaml
- service.yaml
EOF
此基准可在多个覆盖中使用。你可以在不同的覆盖中添加不同的 namePrefix 或其他贯穿性字段。 下面是两个使用同一基准的覆盖:

mkdir dev
cat <<EOF > dev/kustomization.yaml
resources:
- ../base
namePrefix: dev-
EOF

mkdir prod
cat <<EOF > prod/kustomization.yaml
resources:
- ../base
namePrefix: prod-
EOF

字段 解释

namespace 为所有资源添加名字空间

namePrefix 此字段的值将被添加到所有资源名称前面

nameSuffix 此字段的值将被添加到所有资源名称后面

commonLabels 要添加到所有资源和选择算符的标签

commonAnnotations 要添加到所有资源的注解

resources 列表中的每个条目都必须能够解析为现有的资源配置文件

configMapGenerator 列表中的每个条目都会生成一个 ConfigMap

secretGenerator 列表中的每个条目都会生成一个 Secret

generatorOptions 更改所有 ConfigMap 和 Secret 生成器的行为

bases 列表中每个条目都应能解析为一个包含 kustomization.yaml 文件的目录

patchesStrategicMerge 列表中每个条目都能解析为某 Kubernetes 对象的策略性合并补丁

patchesJson6902 列表中每个条目都能解析为一个 Kubernetes 对象和一个 JSON 补丁

vars 每个条目用来从某资源的字段来析取文字

images 每个条目都用来更改镜像的名称、标记与/或摘要,不必生成补丁

configurations 列表中每个条目都应能解析为一个包含 Kustomize 转换器配置 的文件

crds 列表中每个条目都应能够解析为 Kubernetes 类别的 OpenAPI 定义文件

相关推荐
自律的kkk13 分钟前
docker配置镜像加速器
运维·docker·容器
Lill_bin1 小时前
JVM内部结构解析
jvm·后端·spring cloud·微服务·云原生·ribbon
青云交2 小时前
大数据新视界 --大数据大厂之Kubernetes与大数据:容器化部署的最佳实践
数据库·kubernetes·容器编排·资源管理·大数据处理·扩展性、故障恢复·存储持久化·监控、日志管理、性能提升
苏少朋2 小时前
Docker安装 ▎Docker详细讲解 ▎数据卷挂载 ▎Nginx安装理解
linux·nginx·docker·容器
晚枫20002 小时前
kafka发送事件的几种方式
spring boot·分布式·docker·容器·kafka·intellij-idea·linq
二进制杯莫停2 小时前
初识zookeeper
分布式·zookeeper·云原生
StevenZeng学堂3 小时前
【Kubernetes笔记】为什么DNS解析会超时?
网络协议·docker·云原生·kubernetes
云计算练习生4 小时前
深入剖析Docker容器安全:挑战与应对策略
安全·docker·容器
wellshake6 小时前
在 Docker 中部署无头 Chrome:在 Browserless 中运行
chrome·docker·容器
爱吃龙利鱼15 小时前
nginx实现https安全访问的详细配置过程
运维·nginx·安全·云原生·https