【问题标题】:do I need to create overlay for each microservice container app我需要为每个微服务容器应用程序创建覆盖吗
【发布时间】:2021-07-02 15:24:39
【问题描述】:

我有大约 20 个容器应用程序,每个容器应用程序都有 deployment.yaml,现在假设我想为每个容器应用程序添加不同的 replicas。下图提示我需要匹配metadata:name

这是否意味着我需要为一个容器应用程序分别创建 20 个overlay.yaml?我可以使用 SINGLE 覆盖文件管理所有应用吗?

【问题讨论】:

  • 是的,你需要 20 个叠加层,如果每个叠加层都应该有唯一的配置。
  • 是的。我对每个服务都有不同的配置,比如自定义环境变量。
  • 如果我有 4 个部署环境,那么我将有 4*20 = 80 个叠加层。这是巨大的维护。难道我们没有任何集中方式以最小化覆盖文件吗?
  • 所有 4 个环境的副本是否不同?如果您可以设置覆盖 3 个的默认值,那么您只需要 20 个叠加层。

标签: kubernetes kustomize


【解决方案1】:

这可以通过使用patches 来解决。您将能够在每个环境中使用一个覆盖文件来管理所有部署,您可以在其中明确设置每个部署的副本数量。


这是一个简化的例子:

我有两个环境:devstage。两者都有 kustomization.yamlpatches 用于特定的部署和副本数量(两个环境不同)。

tree command:

.
├── base
│   ├── app-1.yaml
│   ├── app-2.yaml
│   └── kustomization.yaml
└── overlays
    ├── dev
    │   └── kustomization.yaml
    └── stage
        └── kustomization.yaml

部署 - app-1.yaml:(第二个几乎相同,名称和图像不同)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-1
spec:
  template:
    spec:
      containers:
      - name: example-1
        image: example:1.0

低于来自overlays/dev/kustomization.yaml的sn-p:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - ../../base

patches:
  - patch: |-
      - op: replace
        path: /spec/replicas
        value: 2
    target:
      group: apps
      version: v1
      kind: Deployment
      name: example-1
  - patch: |-
      - op: replace
        path: /spec/replicas
        value: 3
    target:
      group: apps
      version: v1
      kind: Deployment
      name: example-2

实际结果:

$ kubectl kustomize overlays/dev
apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-1
spec:
  replicas: 2
  template:
    spec:
      containers:
      - image: example:1.0
        name: example-1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-2
spec:
  replicas: 3
  template:
    spec:
      containers:
      - image: example:2.0
        name: example-2

有用的链接:

【讨论】:

  • 你真是个天才。感谢您的回复。我有一个有趣的案例,每个微服务我都有不同的环境变量集。 Path 会在这里帮忙吗?
  • 这里我又问了一个问题,stackoverflow.com/questions/68295287/…
猜你喜欢
  • 2023-04-05
  • 2021-07-01
  • 1970-01-01
  • 2023-03-11
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多