Red*_*Kun 7 kubernetes kustomize
我使用 kustomize 将 kube-prometheus 部署到多个环境。
kube-prometheus 是一个基础,每个环境都是一个覆盖层。假设我想将仪表板部署到覆盖层,这意味着我需要为每个覆盖层部署相同的 ConfigMap 和相同的补丁。
理想情况下,我希望避免更改基础,因为它是在我的存储库之外声明的,并保持干燥,而不是在各处复制相同的配置。
有办法实现这一点吗?
文件夹结构:
/base/
/kube-prometheus/
/overlays/
/qa/ <---
/dev/ <--- I want to share resources+patches between those
/staging/ <---
Run Code Online (Sandbox Code Playgroud)
正确的方法是使用组件。
组件可以将资源和补丁封装在一起。就我而言,我想添加 ConfigMap(资源)并将此 ConfigMap 安装到我的部署(补丁)而不重复补丁。
所以我的叠加层看起来像这样:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base/kube-prometheus/ # Base
components:
- ../../components/grafana-aws-dashboards/ # Folder with kustomization.yaml that includes both resources and patches
Run Code Online (Sandbox Code Playgroud)
这是组件:
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- grafana-dashboard-aws-apigateway.yaml
- grafana-dashboard-aws-auto-scaling.yaml
- grafana-dashboard-aws-ec2-jwillis.yaml
- grafana-dashboard-aws-ec2.yaml
- grafana-dashboard-aws-ecs.yaml
- grafana-dashboard-aws-elasticache-redis.yaml
- grafana-dashboard-aws-elb-application-load-balancer.yaml
- grafana-dashboard-aws-elb-classic-load-balancer.yaml
- grafana-dashboard-aws-lambda.yaml
- grafana-dashboard-aws-rds-os-metrics.yaml
- grafana-dashboard-aws-rds.yaml
- grafana-dashboard-aws-s3.yaml
- grafana-dashboard-aws-storagegateway.yaml
patchesStrategicMerge:
- grafana-mount-aws-dashboards.yaml
Run Code Online (Sandbox Code Playgroud)
此方法记录在此处:
https ://kubectl.docs.kubernetes.io/guides/config_management/components/