1

我是这个组的新手。很高兴有联系。
我想知道是否有人有在 CI/CD 流程中使用伞舵图的经验?

在我们的项目中,我们有 2 个独立的开发商承包商。每个承包商负责特定的微服务。

我们使用 Harbor 作为图表和随附容器图像的存储库,使用 GitLab 作为我们的代码仓库和 CI/CD 编排器……通过 GitLab 运行器。

该计划是使用一个伞形图将所有大约 60 个微服务部署为一个系统。

我有兴趣听取任何采用类似方法的团队的意见,以及他们如何在 CI/CD 流程中处理/处理伞形图。

感谢您的任何意见/指导。

虚拟现实,

4

1 回答 1

1

我们使用类似的模式,我们有 30 多个微服务。

我们有一个用于基本图表的 Github 存储库。

基本微服务图表有各种 kubernetes 模板(如 HPA、ConfigMap、Secrets、Deployment、Service、Ingress 等),每个模板都有启用或禁用的选项。

注意 -基本图表甚至可以包含其他图表

例如。此基本图表具有 nginx-ingress 图表的依赖关系:

apiVersion: v2
name: base-microservice
description: A base helm chart for deploying a microservice in Kubernetes
type: application
version: 0.1.6
appVersion: 1
dependencies:
- name: nginx-ingress
  version: "~1.39.1"
  repository: "alias:stable"
  condition: nginx-ingress.enabled

以下是 secrets.yaml 模板的示例模板:

{{- if .Values.secrets.enabled -}}
apiVersion: v1
kind: Secret
metadata:
  name: {{ include "base-microservice.fullname" . }}
type: Opaque
data:
  {{- toYaml .Values.secrets.data | nindent 2}}
{{- end}}

现在,当在此基本图表存储库中发生提交时,作为 CI 流程的一部分(以及其他事情),我们会这样做

  1. 检查图表存储库中是否已存在 Helm 索引
  2. 如果存在,则下载现有索引并将当前生成的索引与现有索引合并 -> helm repo index --merge oldindex/index.yaml 。
  3. 如果它不存在,那么我们创建新的 Helm 索引 ->( helm repo index . ) 然后将归档的图表和索引 yaml 上传到我们的图表存储库。

现在在我们的每个微服务中,我们都有一个图表目录,其中我们只有 2 个文件:

  1. 图表.yaml
  2. 值.yaml

示例微服务的目录结构:

目录结构

此微服务 A 的 Chart.yaml 如下所示:

apiVersion: v2
name: my-service-A
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: 1

dependencies:
- name: base-microservice
  version: "0.1.6"
  repository: "alias:azure"

此微服务 A 的values.yaml具有需要为基本微服务值覆盖的值

例如。

base-microservice:
  nameOverride: my-service-A
  image:
    repository: myDockerRepo/my-service-A
  resources:
    limits:
      cpu: 1000m
      memory: 1024Mi
    requests:
      cpu: 300m
      memory: 500Mi
  probe:
    initialDelaySeconds: 120
  nginx-ingress:
    enabled: true
  ingress:
    enabled: true

现在,在进行此微服务的持续部署时,我们有以下步骤(以及其他步骤):

  1. 获取 helm 依赖项(helm 依赖项更新 ./charts/my-service-A
  2. 将我的版本部署到 kubernetes ( helm upgrade --install my-service-a ./charts/my-service-A )
于 2020-07-11T04:58:04.577 回答