kustomize(九) 使用终章

简介: kustomize(九) 使用终章

扩展阅读:


kustomize (一) 管理yaml部署入门hello world

kustomize (二) ConfigMap的生成和滚动更新

kustomize (三) devops和开发配合管理配置数据behavior: merge、namePrefix、nameSuffix

kustomize (四) generatorOptions详解

kustomize (五) 使用vars将 k8s runtime数据注入容器

kustomize(六)命令行常用编排

kustomize (七)patches、patchesJson6902、patchesStrategicMerge详解

kustomize (八)生成secret

kustomize(九)使用终章

文章目录

1. kustomization API说明

1670835913925.png

2. bases

bases在v2.1.0中已弃用该字段

bases移到resonrces字段中。这使得基础(仍然是一个资源中心概念)相对于其他输入资源进行排序。

3. commonAnnotations

为所有资源添加注释,如果资源上已经存在注解键,该值将被覆盖。

cat <<EOF >./deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
EOF
cat <<EOF >./kustomization.yaml
namespace: my-namespace
commonAnnotations:
  oncallPager: 800-555-1212
resources:
- deployment.yaml
EOF

运行kubectl kustomize ./查看Deployment资源中设置的所有字段:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    oncallPager: 800-555-1212
  labels:
    app: bingo
  name: dev-nginx-deployment-001
  namespace: my-namespace
spec:
....

4. commonLabels

为所有资源和 selectors 增加标签。如果资源上已经存在注解键,该值将被覆盖。

cat <<EOF > 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
        ports:
        - containerPort: 80
EOF
# Create a kustomization.yaml
cat <<EOF >./kustomization.yaml
namePrefix: dev-
commonLabels:
  app: my-nginx
resources:
- deployment.yaml
EOF

运行kubectl kustomize ./查看Deployment资源中设置的所有字段:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
      app: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
        app: my-nginx
    spec:
      ....

5. images

修改镜像的名称、tag 或 image digest。

通过在kustomize .yaml的images字段中指定新的镜像来更改容器内使用的镜像。

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  template:
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
EOF
cat <<EOF >./kustomization.yaml
resources:
- deployment.yaml
images:
- name: nginx
  newName: my.image.registry/nginx
  newTag: 1.4.0
EOF

运行kubectl kustomize ./查看正在使用的镜像是否更新:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  template:
    spec:
      containers:
      - image: my.image.registry/nginx:1.4.0
        name: my-nginx
        ports:
        - containerPort: 80

6. namePrefix

为所有资源和引用的名称添加前缀。

服务名称可能会发生更改。不建议在命令参数中硬编码服务名称。对于这种用法,Kustomize可以通过vars将服务名称注入容器

cat <<EOF > 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
        command: ["start", "--host", "\$(MY_SERVICE_NAME)"]
EOF
# Create a service.yaml file
cat <<EOF > 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
cat <<EOF >./kustomization.yaml
namePrefix: dev-
nameSuffix: "-001"
resources:
- deployment.yaml
- service.yaml

运行kubectl kustomize ./查看注入容器的服务名称是dev-my-nginx-001:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dev-my-nginx-001
spec:
  replicas: 2
  selector:
    matchLabels:
      run: my-nginx
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - command:
        - start
        - --host
        - dev-my-nginx-001
        image: nginx
        name: my-nginx

7. namespace

为所有资源添加 namespace。

如果在资源上设置了现有 namespace,则将覆盖现有 namespace;如果在资源上未设置现有 namespace,则使用现有 namespace

cat <<EOF >./deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
EOF
cat <<EOF >./kustomization.yaml
namespace: my-namespace
resources:
- deployment.yaml
EOF

运行kubectl kustomize ./查看Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: dev-nginx-deployment
  namespace: my-namespace

8. nameSuffix

为所有资源和引用的名称添加后缀。

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
EOF
# Create a service.yaml file
cat <<EOF > service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
spec:
EOF
cat <<EOF >./kustomization.yaml
nameSuffix: "-001"
resources:
- deployment.yaml
- service.yaml

运行kubectl kustomize ./查看注入容器的服务名称是my-nginx-001:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-001
spec:
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx-001
spec:

参考链接:


https://github.com/kubernetes-sigs/kustomize/blob/master/examples/zh/README.md

https://blog.csdn.net/weixin_37546425/article/details/109214976



相关文章
|
Kubernetes 安全 Linux
Pod必备知识: SecurityContexts
Security Context主要用于限制容器的行为,从而保障系统和其他容器的安全。这一块的能力不是 Kubernetes 或者容器 runtime 本身的能力,而是 Kubernetes 和 runtime 通过用户的配置,最后下传到内核里,再通过内核的机制让 SecurityContext 来生效。所以这里介绍的内容,会比较简单或者说比较抽象一点。 1.容器级别的Security Context:仅对指定容器生效 2.Pod级别的Security Context:对指定Pod中的所有容器生效 3.Pod Security Policies(PSP):对集群内所有Pod生效
1634 0
Pod必备知识: SecurityContexts
|
8月前
|
机器学习/深度学习 Kubernetes Shell
K8S 实用工具之六 -kubectl-aliases
K8S 实用工具之六 -kubectl-aliases
|
8月前
|
Kubernetes 安全 API
K8S 实用工具之四 - kubectl 实用插件
K8S 实用工具之四 - kubectl 实用插件
|
Kubernetes 监控 安全
一文读懂最佳 Kubectl 安全插件(下)
Hello folks,我是 Luga,接着上一篇博文,我们继续来解析 Kubectl 安全插件相关内容...
111 1
|
Kubernetes 负载均衡 Cloud Native
一文读懂为什么需要 Traefik CRD?
Hello folks,我是 Luga,今天我们来聊一下云原生网关 Traefik 核心技术之一-Traefik CRD。
186 0
|
存储 Kubernetes 安全
一文读懂最佳 Kubectl 安全插件(上)
Hello folks,我是 Luga,今天我们来聊一聊在 Kubernetes Cluster 编排生态环境中一个至关重要的安全 Topic:Kubectl Plugin。
224 0
|
JSON 运维 Kubernetes
2.1 [kustz] 先从模仿创建 Deployment 开始
2.1 [kustz] 先从模仿创建 Deployment 开始 > 大家好, 我是老麦, 一个小运维。 > 今天我们继续手写这个 kustz
131 0
2.1 [kustz] 先从模仿创建 Deployment 开始
|
Kubernetes Go API
【开个坑】 kustz 快速发布应用到 Kubernetes
写一个工具 kustz, 在一个文件中管理发布所有工具。
119 0
|
自然语言处理 Kubernetes Devops
kustomize (四) generatorOptions详解
kustomize (四) generatorOptions详解
|
设计模式 Oracle 关系型数据库
什么鬼?(终章)
什么鬼?(终章)
什么鬼?(终章)

热门文章

最新文章