全局变量不影响Kubernetes的helm图表中的values.yaml文件(从CLI传递secretName和Domain Name)

时间:2018-01-05 10:18:27

标签: kubernetes yaml openshift devops kubernetes-helm

我需要一个帮助。我实施掌舵图时遇到困难。 场景:我需要通过CLI将值传递给values.yaml文件。以下是示例代码。

values.yaml

# Default values for miqp-ui-dep.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
##################Names of files and Applications################
Depname: miqp-server-dep
Appname: miqp-server
Svcname: miqp-server-svc
Ingname: miqp-ing
#################################################################
replicaCount: 2
strategy:
  type: RollingUpdate
  rollingUpdate:
     maxSurge: 1
     maxUnavailable: 1
minReadySeconds: 5
nodeSelector:
       role: nginxplus
image:
  repository: xxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/miqp-devops
  tag: miqpserver_2sep
  pullPolicy: IfNotPresent
service:
  name: miqp-ui-svc
  externalPort: 80
  internalPort: 8081
volumeMounts:
  name: ebs-pvc
ingress:
  enabled: true
  hosts:
    - kubernetes-miq.xxxxxx.com
  tls:
    - secretName: default-token-k33w6
      hosts:
        - kubernetes-xxxxxx.com
persistence:
  enabled: true
  volume:
    accessModes: ReadWriteOnce
    pvcName: ebs-pvc
    storageClass: standard
    storageSize: 20G

ingress.yaml

{{- if .Values.ingress.enabled -}}
{{- $serviceName := .Values.service.name -}}
{{- $servicePort := .Values.service.externalPort -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ .Values.Ingname }}
  namespace: {{ .Release.Namespace }}
spec:
  rules:
    {{- range $host := .Values.ingress.hosts }}
    - host: {{ $host }}
      http:
        paths:
          - path:
            backend:
              serviceName: {{ $serviceName }}
              servicePort: {{ $servicePort }}
          - path: /api/
            backend:
              serviceName: {{ $serviceName }}
              servicePort: {{ $servicePort }}
     {{- end -}}
  {{- if .Values.ingress.tls}}
  tls:
{{ toYaml .Values.ingress.tls | indent 4 }}
  {{- end -}}
{{- end -}}

现在我可以使用--set选项设置values.yml参数的值,但是如果我们必须以下面的方式替换参数呢?

ingress:
  enabled: true
  hosts:
    - kubernetes-miq.xxxxxx.com
  tls:
    - secretName: default-token-k33w6
      hosts:
        - kubernetes-miq.xxxxxx.com

我必须替换 - secretName值的值,即default-token-k33w6和hosts,即kubernetes-miq.xxxxxx.com

先谢谢。

1 个答案:

答案 0 :(得分:1)

您可以随时执行helm upgrade --reuse-values --set ingress.enabled=false之类的操作,对于更复杂的问题,您可以执行helm upgrade --reuse-values -f <filename>,其中您的文件包含类似示例的内容:

ingress:
  enabled: true
  hosts:
  - kubernetes-miq.xxxxxx.com

关于通过--set运行更复杂的结构,请查看https://github.com/kubernetes/helm/blob/master/docs/using_helm.md#the-format-and-limitations-of---set,其中包含以下方式:

--set key={a,b,c}

--set name.key1=a,name.key2=b