kustomize
约 2 分钟阅读
- kubernetes-sigs/kustomizeGitHubkubernetes-sigs/kustomizekubernetes-sigs/kustomize · kustomize reference · kubectl apply -k · v1.14+ · #1500 - 升级到新版受到阻碍 · 特点 · 不基于字符串模板 · 变量引用 · vars笔记:kustomize
- kustomize referenceLinkkubectl.docs.kubernetes.io/references/kustomizekubernetes-sigs/kustomize · kustomize reference · kubectl apply -k · v1.14+ · #1500 - 升级到新版受到阻碍 · 特点 · 不基于字符串模板 · 变量引用 · vars笔记:kustomize
- kubectl apply -k
- v1.14+
- #1500GitHub Issuekubernetes-sigs/kustomize#1500 - 升级到新版受到阻碍
- 特点
- 不基于字符串模板
- 变量引用
- vars
- Patch 修改定义
- JSON Patch
- patchesStrategicMerge
- patchesJson6902
- DSL 修改定义
- namespace
- namePrefix
- nameSuffix
- commonLabels
- commonAnnotations
- images - 镜像替换
- DSL 生成定义
- configmapGenerator
- secretGenerator
- generatorOptions
- 资源聚合
- resources
- bases - overlay 多层目录
- configurations
- crds
- kustomization.yaml - 核心定义文件
- 参考
- 不支持移除资源 - #1593GitHub Issuekubernetes-sigs/kustomize#1593
# macOS
brew install kustomize
kubectl kustomize目录结构
# 应用基础目录
mkdir -p app/base app/overlays/{staging,production}
# kustomize build 生成 yaml
# 部署不同环境
kustomize build ~/ldap/overlays/staging | kubectl apply -f - --context staging
kustomize build ~/ldap/overlays/production | kubectl apply -f - --context production
# -k 可直接 apply
kubectl apply -k ~/ldap/overlays/staging --context staging
kubectl apply -k ~/ldap/overlays/production --context production~/someApp - 基础应用目录
├── base - 基础层
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ └── service.yaml
└── overlays - 叠加层
├── development - base+开发环境自定义内容
│ ├── cpu_count.yaml
│ ├── kustomization.yaml
│ └── replica_count.yaml
└── production - base+生产环境自定义内容
├── cpu_count.yaml
├── kustomization.yaml
└── replica_count.yaml示例
- kubernetes-sigs/kustomize/examples/transformerconfigsGitHub Filekubernetes-sigs/kustomize/examples/transformerconfigs
批量合并修改
kustomization.yaml
patches:
- target:
kind: Application
path: patch.yamlpatch.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
# 匹配所有
name: '*'
spec:
project: dev-clustervars/replacements
resources:
- admin.cm.yaml
replacements:
- source:
kind: ConfigMap
name: admin-conf
fieldPath: data.version
targets:
- select:
kind: Deployment
fieldPaths:
# 替换镜像版本号
- spec.template.spec.containers.[name=admin].image
options:
delimiter: ":"
index: 1- api/types/replacement.goGitHub Filekubernetes-sigs/kustomize/api/types/replacement.go
- kubernetes-sigs/kustomize#3492GitHub Issuekubernetes-sigs/kustomize#3492
- vars -> replacements
- kubernetes-sigs/kustomize#2052GitHub Issuekubernetes-sigs/kustomize#2052
FAQ
accumulating resources: accumulation err='merging resources from 'res.yaml': may not add resource with an already registered id
检查是否已经定义过资源
index out of range [4] with length 4
YAML 语法可能没有问题,但是有 CJK 可能会导致这个异常
- kubernetes-sigs/kustomize#3778GitHub Issuekubernetes-sigs/kustomize#3778 - Can not add any comment in .yaml
- go-yaml 包版本问题
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- K8S Awesome笔记 · Kustomize
cncf landscape · awesome-cloud-native · Service Mesh / Cloud Native · GoogleCloudPlatform/scion · Google Cloud Platform 相关的 Go 项目。
References
GitHub8 条
- kubernetes-sigs/kustomizegithub.com/kubernetes-sigs/kustomize
- kubernetes-sigs/kustomize/api/types/replacement.gogithub.com/kubernetes-sigs/kustomize/blob/7c36ed21b3587e7124326743a888db5374e86d93/api/types/replacement.go
- kubernetes-sigs/kustomize/examples/transformerconfigsgithub.com/kubernetes-sigs/kustomize/tree/master/examples/transformerconfigs
- kubernetes-sigs/kustomize#1500github.com/kubernetes-sigs/kustomize/issues/1500
- kubernetes-sigs/kustomize#1593github.com/kubernetes-sigs/kustomize/issues/1593
- kubernetes-sigs/kustomize#2052github.com/kubernetes-sigs/kustomize/issues/2052
- kubernetes-sigs/kustomize#3492github.com/kubernetes-sigs/kustomize/issues/3492
- kubernetes-sigs/kustomize#3778github.com/kubernetes-sigs/kustomize/issues/3778
其他外链3 条
- kubectl.docs.kubernetes.io/pages/app_management/introduction.htmlkubectl.docs.kubernetes.io/pages/app_management/introduction.html
- kubectl.docs.kubernetes.io/references/kustomizekubectl.docs.kubernetes.io/references/kustomize
- kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomizationkubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization