推荐的向第三方头盔图表添加功能的方法?

时间:2019-09-10 08:43:52

标签: kubernetes kubernetes-helm

当前,我们正在向正在部署的第三方头盔图表中添加功能(例如-在Prometheus中,由于使用nginx入口控制器,我们正在添加身份验证支持)。

显然,当我们要升级头盔图时,这将使我们头疼,我们需要对所做的更改执行“差异”。

向现有的第三方头盔图表添加功能的推荐方法是什么?我应该使用伞形图并将普罗米修斯作为依赖项吗?然后从图表中导入值? (https://github.com/helm/helm/blob/master/docs/charts.md#importing-child-values-via-requirementsyaml

或其他推荐方式?

-编辑-

示例-如您所见,我添加了3个nginx.ingress。*批注以支持 prometheus 入口资源上的基本身份验证-当然,如果我要升级,则需要再次手动添加它们,将导致问题

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
{{- if .Values.prometheus.ingress.annotations }}
  annotations:
{{ toYaml .Values.prometheus.ingress.annotations | indent 4 }}
{{- end }}
{{- if .Values.alertmanager.ingress.nginxBasicAuthEnabled }}
    nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - ok"
    nginx.ingress.kubernetes.io/auth-secret: {{ template "prometheus-operator.fullname" . }}-prometheus-basicauth
    nginx.ingress.kubernetes.io/auth-type: "basic"
{{- end }}
  name: {{ $serviceName }}
  labels:
    app: {{ template "prometheus-operator.name" . }}-prometheus
{{ include "prometheus-operator.labels" . | indent 4 }}
{{- if .Values.prometheus.ingress.labels }}
{{ toYaml .Values.prometheus.ingress.labels | indent 4 }}
{{- end }}
spec:
  rules:
    {{- range $host := .Values.prometheus.ingress.hosts }}
    - host: {{ . }}
      http:
        paths:
          - path: "{{ $routePrefix }}"
            backend:
              serviceName: {{ $serviceName }}
              servicePort: 9090
    {{- end }}
{{- if .Values.prometheus.ingress.tls }}
  tls:
{{ toYaml .Values.prometheus.ingress.tls | indent 4 }}
{{- end }}
{{- end }}

2 个答案:

答案 0 :(得分:0)

在升级/重新设置基准时,我要么分叉处理,要么集成更改,或者如果可能的话,禁用要通过values.yaml文件自定义的入口元素。然后在另一个自定义图表中使用所需的自定义设置手动创建自己的入口实例,并从普罗米修斯图表中以正常值.yaml输入的形式提供所需的引用。

显然,这种方法有其局限性,如果自定义项与图表之间的联系过于紧密,则可能无法将其分开。

希望这会有所帮助。

答案 1 :(得分:0)

我认为这可能会回答您的question

这导致我找到specific part I was looking for,通过指定图表名称作为父values.yaml中的键,父图表可以覆盖子图表。

在应用程序图表的requirements.yaml中:

dependencies:
- name: jenkins
  # Can be found with "helm search jenkins"
  version: '0.18.0'
  # This is the binaries repository, as documented in the GitHub repo
  repository: 'https://kubernetes-charts.storage.googleapis.com/'

运行:

helm dependency update

在应用程序图表的values.yaml中:

# ...other normal config values

# Name matches the sub-chart
jenkins: 
  # This will be override "someJenkinsConfig" in the "jenkins" sub-chart
  someJenkinsConfig: value