【问题标题】:ConfigMap also for kubernetes configurations?ConfigMap 也适用于 Kubernetes 配置?
【发布时间】:2019-08-06 11:50:34
【问题描述】:

我有 2 个 kubernetes 描述符文件 (yml):一个用于生产,一个用于测试。 它们之间的唯一区别是,在生产中我希望最多 4 个副本来授予水平缩放,而在测试中我很好。 所以生产的yaml还有以下内容:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: prodAutoScaling
spec:
  maxReplicas: 4
 minReplicas: 1
 scaleTargetRef:
  apiVersion: extensions/v1beta1
kind: Deployment
name: myapp
 targetCPUUtilizationPercentage: 80

如果可以将此配置放在配置映射中,我可以拥有两个相同的描述符并避免同时维护两者。 这可能吗?

【问题讨论】:

  • 您是否正在寻找一种工具,它只允许您为两种环境维护一个配置?
  • 是的,在这种情况下,只有一点点不同,所以这是有道理的

标签: kubernetes


【解决方案1】:

使用ytt 执行此操作非常简单(总共 6 行)

./config/autoscaler.yml

#@ load("@ytt:data", "data")
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: prodAutoScaling
spec:
  maxReplicas: #@ data.values.replicas
 minReplicas: 1
 scaleTargetRef:
   apiVersion: extensions/v1beta1
   kind: Deployment
   name: myapp
   targetCPUUtilizationPercentage: 80

./config/values.yml

#@data/values
replicas: 1

./prod/values.yml

#@data/values
replicas: 4

部署测试:

$ ytt -f config/

部署到产品:

$ ytt -f config/ -f prod/

【讨论】:

    【解决方案2】:

    检查kustomize 可能只对一个文件有点过分,但稍后当文件数量增加时会有所帮助。

    1. 自定义

    $ kubectl kustomize dev/

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: dev-AutoScaling
    spec:
      maxReplicas: 1
      minReplicas: 1
      scaleTargetRef:
        apiVersion: extensions/v1beta1
        kind: Deployment
        name: myapp
      targetCPUUtilizationPercentage: 80
    

    $ kubectl kustomize prod/

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: prod-AutoScaling
    spec:
      maxReplicas: 4
      minReplicas: 1
      scaleTargetRef:
        apiVersion: extensions/v1beta1
        kind: Deployment
        name: myapp
      targetCPUUtilizationPercentage: 80
    
    .
    ├── base
    │   ├── HorizontalPodAutoscaler.yaml
    │   └── kustomization.yaml
    ├── dev
    │   ├── kustomization.yaml
    │   └── map.yaml
    └── prod
        ├── kustomization.yaml
        └── map.yaml
    

    $cat base/HorizontalPodAutoscaler.yaml

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: AutoScaling
    spec:
      scaleTargetRef:
        apiVersion: extensions/v1beta1
        kind: Deployment
        name: myapp
      targetCPUUtilizationPercentage: 80
      maxReplicas: 0
      minReplicas: 1
    

    $cat base/kustomization.yaml

    resources:
    - HorizontalPodAutoscaler.yaml
    `$cat dev/kustomization.yaml`
    bases:
    - ../base
    namePrefix: dev-
    patchesStrategicMerge:
    - map.yaml
    

    $ cat dev/map.yaml

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: AutoScaling
    spec:
      maxReplicas: 1
    

    $ cat prod/kustomization.yaml

    bases:
    - ../base
    namePrefix: prod-
    patchesStrategicMerge:
    - map.yaml
    

    $ cat prod/map.yaml

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: AutoScaling
    spec:
      maxReplicas: 4
    
    1. ytt

    您也可以使用ytt 进行模板化。

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 2021-05-31
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 2020-05-05
      • 2019-02-10
      相关资源
      最近更新 更多