Я использую Jenkins X и пытаюсь установить различные переменные с помощью файлов values.yaml
в зависимости от среды, в которую я продвигаюсь.Например, при продвижении релиза из промежуточного в производственный режим я бы хотел, чтобы файл values.yaml
в моем репозитории environment-xxxx-production
переопределял значения в моем репозитории проекта.
Согласно https://github.com/jenkins-x/jx/issues/1667#issuecomment-420901836 этому комментарию, это должно сработать, просто поместив переменные в репозиторий environment-xxxx-production
.
Пример deployment.yaml
файла внутри моего проекта.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "fullname" . }}
labels:
draft: {{ default "draft-app" .Values.draft }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
draft: {{ default "draft-app" .Values.draft }}
app: {{ template "fullname" . }}
{{- if .Values.podAnnotations }}
annotations:
{{ toYaml .Values.podAnnotations | indent 8 }}
{{- end }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.internalPort }}
{{/*
Here's the section in question.
*/}}
{{- if .Values.env }}
env:
{{- if .Values.prBranch }}
- name: MY_ENV
value: "some_value"
{{- else }}
{{ toYaml .Values.env | indent 10 }}
{{- end }}
{{- end }}
livenessProbe:
httpGet:
path: {{ .Values.probePath }}
port: {{ .Values.service.internalPort }}
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
successThreshold: {{ .Values.livenessProbe.successThreshold }}
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
readinessProbe:
httpGet:
path: {{ .Values.probePath }}
port: {{ .Values.service.internalPort }}
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
successThreshold: {{ .Values.readinessProbe.successThreshold }}
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
resources:
{{ toYaml .Values.resources | indent 12 }}
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
Пример проекта values.yaml
содержит это:
env:
- name: MY_ENV
value: "some_staging_value"
Пример environment-xxxx-production
values.yaml
содержит это:
env:
- name: MY_ENV
value: some_production_value
Я, конечно, могу получить предварительный просмотр и постановкупеременные среды работают.Однако когда я продвигаю приложение в производственной среде, список env
в environment-xxxx-production
не переопределяет список env
в файле values.yaml
внутри самого проекта.