рддрдкрд╛рдИрдВ рд╣реЗрд▓реНрдордлрд╛рдЗрд▓ рдЖрдлреИрдВ рд░ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдмрд╛рд░реЗ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рд╣рд╛рдореА рд╣реЗрд▓реНрдордлрд╛рдЗрд▓рдорд╛ рд░рд┐рд▓реАрдЬрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрди рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рддрд░рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдиреЗрдЫреМрдВ
рдорд╛рдиреМрдВ рд╣рд╛рдореАрд╕рдБрдЧ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВрдХреЛ рдкреНрдпрд╛рдХ рдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рд░ рдХреЗрд╣реА рдмреНрдпрд╛рдХрдПрдиреНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрдиреМрдВ) рд░ рдзреЗрд░реИ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВ (рдзреЗрд░реИ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ, рдзреЗрд░реИ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ, рд╡рд╛ рджреБрдмреИ рдордзреНрдпреЗ рдзреЗрд░реИ)ред рд╣рд╛рдореА рд╣реЗрд▓реНрдордлрд╛рдЗрд▓ рд▓рд┐рдиреНрдЫреМрдВ, рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдкрдвреНрдЫреМрдВ рд░ рд╣рд╛рдореНрд░реЛ рд╡рд╛рддрд╛рд╡рд░рдг рд░ рд░рд┐рд▓реАрдЬрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрди рдерд╛рд▓реНрдЫреМрдВ:
.
тФЬтФАтФА envs
тФВ тФЬтФАтФА devel
тФВ тФВ тФФтФАтФА values
тФВ тФВ тФЬтФАтФА backend.yaml
тФВ тФВ тФФтФАтФА postgres.yaml
тФВ тФФтФАтФА production
тФВ тФФтФАтФА values
тФВ тФЬтФАтФА backend.yaml
тФВ тФФтФАтФА postgres.yaml
тФФтФАтФА helmfile.yaml
helmfile.yaml
environments:
devel:
production:
releases:
- name: postgres
labels:
app: postgres
wait: true
chart: stable/postgresql
version: 8.4.0
values:
- envs/{{ .Environment.Name }}/values/postgres.yaml
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
version: 1.0.5
needs:
- postgres
values:
- envs/{{ .Environment.Name }}/values/backend.yaml
рд╣рд╛рдореАрд▓реЗ 2 рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдВрдЧ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдпреМрдВ: рд╡рд┐рдХрд╛рд╕, рдЙрддреНрдкрд╛рджрди - рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рд╣реЗрдо рд░рд┐рд▓реАрдЬ рдЪрд╛рд░реНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреИ рдорд╛рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдпрд╕рд░реА рддреИрдирд╛рдд рдЧрд░реНрдиреЗрдЫреМрдВ:
helmfile -n <namespace> -e <env> apply
рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ
рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдмреНрдпрд╛рдХрдПрдиреНрдбрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВрдорд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ? рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХрд╕рд░реА рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╛рдЗрдЬ рдЧрд░реНрдиреЗ? рдорд╛рд░реНрдлрдд рдЙрдкрд▓рдмреНрдз рд╡рд╛рддрд╛рд╡рд░рдгреАрдп рдореВрд▓реНрдпрд╣рд░реВ {{ .Values }}
helmfile.yaml
environments:
devel:
+ values:
+ - charts:
+ versions:
+ backend: 1.1.0
production:
+ values:
+ - charts:
+ versions:
+ backend: 1.0.5
...
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
- version: 1.0.5
+ version: {{ .Values.charts.versions.backend }}
...
рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯ
рд░рд╛рдореНрд░реЛ, рддрд░ рдХреЗ рдпрджрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рднрдиреЗ production
рдкреЛрд╖реНрдЯрдЧреНрд░реЗрд╕ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓рд╛рдИ k8s рдорд╛ рдкреБрд╢ рдЧрд░реНрдиреБрдкрд░реНрджреИрди рд░ рдмрд┐рдХреНрд░реАрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдПрдХ рдЕрджреНрднреБрдд рдЫреБрдЯреНрдЯреИ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЫ? рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╣рд╛рдореАрд╕рдБрдЧ рд▓реЗрдмрд▓рд╣рд░реВ рдЫрдиреН
helmfile -n <namespace> -e devel apply
helmfile -n <namespace> -e production -l app=backend apply
рдпреЛ рд░рд╛рдореНрд░реЛ рдЫ, рддрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛ рдо рдХреБрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд▓рдиреНрдЪ рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрди, рддрд░ рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд╡рд░реНрдгрдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрди рд░реБрдЪрд╛рдЙрдБрдЫреБред рдХреЗ рдЧрд░реНрдиреЗ? рддрдкрд╛рдИрдВрд▓реЗ рд░рд┐рд▓реАрдЬ рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдЫреБрдЯреНрдЯреИ рдлреЛрд▓реНрдбрд░рдорд╛ рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛рддрд╛рд╡рд░рдг рд╡рд┐рд╡рд░рдгрдорд╛ рдЖрд╡рд╢реНрдпрдХ рд░рд┐рд▓реАрдЬрд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдмрд╛рдБрдХреАрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрджреИ рдЖрд╡рд╢реНрдпрдХ рд░рд┐рд▓реАрдЬрд╣рд░реВ рдорд╛рддреНрд░ "рдкрд┐рдХ рдЕрдк" рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
.
тФЬтФАтФА envs
тФВ тФЬтФАтФА devel
тФВ тФВ тФФтФАтФА values
тФВ тФВ тФЬтФАтФА backend.yaml
тФВ тФВ тФФтФАтФА postgres.yaml
тФВ тФФтФАтФА production
тФВ тФФтФАтФА values
тФВ тФЬтФАтФА backend.yaml
тФВ тФФтФАтФА postgres.yaml
+ тФЬтФАтФА releases
+ тФВ тФЬтФАтФА backend.yaml
+ тФВ тФФтФАтФА postgres.yaml
тФФтФАтФА helmfile.yaml
helmfile.yaml
environments:
devel:
values:
- charts:
versions:
backend: 1.1.0
- apps:
- postgres
- backend
production:
values:
- charts:
versions:
backend: 1.0.5
- apps:
- backend
- releases:
- - name: postgres
- labels:
- app: postgres
- wait: true
- chart: stable/postgresql
- version: 8.4.0
- values:
- - envs/{{ .Environment.Name }}/values/postgres.yaml
- - name: backend
- labels:
- app: backend
- wait: true
- chart: private-helm-repo/backend
- version: {{ .Values.charts.versions.backend }}
- needs:
- - postgres
- values:
- - envs/{{ .Environment.Name }}/values/backend.yaml
+ ---
+ bases:
+ {{- range .Values.apps }}
+ - releases/{{ . }}.yaml
+ {{- end }}
releases/postgres.yaml
releases:
- name: postgres
labels:
app: postgres
wait: true
chart: stable/postgresql
version: 8.4.0
values:
- envs/{{ .Environment.Name }}/values/postgres.yaml
releases/backend.yaml
releases:
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
version: {{ .Values.charts.versions.backend }}
needs:
- postgres
values:
- envs/{{ .Environment.Name }}/values/backend.yaml
рдиреЛрдЯ
рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ bases:
рдпреЛ yaml рд╡рд┐рднрд╛рдЬрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ ---
, рддрд╛рдХрд┐ рддрдкрд╛рдИрдВ рд╡рд╛рддрд╛рд╡рд░рдгрдмрд╛рдЯ рдорд╛рдирд╣рд░реВ рд╕рд╣рд┐рдд рд░рд┐рд▓рд┐рдЬрд╣рд░реВ (рд░ рдЕрдиреНрдп рднрд╛рдЧрд╣рд░реВ, рдЬрд╕реНрддреИ helmDefaults) рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рд░рд┐рд▓реАрдЬ рдкрдирд┐ рдЙрддреНрдкрд╛рджрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╡рд░рдгрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдиреЗ рдЫреИрдиред рдзреЗрд░реИ рд╕рд╣рдЬ!
рд╡рд┐рдореЛрдЪрдирдХрд╛ рд▓рд╛рдЧрд┐ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдорд╛рдирд╣рд░реВ
рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпреЛ рд░рд╛рдореНрд░реЛ рдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рд╣рд╛рдореА рдЪрд╛рд╣рдиреНрдЫреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдмреИрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рд╕реЗрдЯ рдЧрд░реНрдиред affinity
, рддрд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЪрд╛рд░реНрдЯрд╣рд░реВрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдиреМрдВ, рдЬреБрди рд╢рд▓рдЬрдордорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред
рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓реЗ рдорд╛рдирд╣рд░реВ рд╕рд╣рд┐рдд 2 рдлрд╛рдЗрд▓рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ: рдкрд╣рд┐рд▓реЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ, рдЬрд╕рд▓реЗ рдЪрд╛рд░реНрдЯрдХреЛ рдорд╛рдирд╣рд░реВ рдЖрдлреИрдВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиреЗрдЫ, рд░ рджреЛрд╕реНрд░реЛ рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдирд╣рд░реВ, рдЬрд╕рд▓реЗ рдмрд╛рд░реАрдорд╛ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрдиреЗрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рддрд╣рд░реВред
.
тФЬтФАтФА envs
+ тФВ тФЬтФАтФА default
+ тФВ тФВ тФФтФАтФА values
+ тФВ тФВ тФЬтФАтФА backend.yaml
+ тФВ тФВ тФФтФАтФА postgres.yaml
тФВ тФЬтФАтФА devel
тФВ тФВ тФФтФАтФА values
тФВ тФВ тФЬтФАтФА backend.yaml
тФВ тФВ тФФтФАтФА postgres.yaml
тФВ тФФтФАтФА production
тФВ тФФтФАтФА values
тФВ тФЬтФАтФА backend.yaml
тФВ тФФтФАтФА postgres.yaml
тФЬтФАтФА releases
тФВ тФЬтФАтФА backend.yaml
тФВ тФФтФАтФА postgres.yaml
тФФтФАтФА helmfile.yaml
releases/backend.yaml
releases:
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
version: {{ .Values.charts.versions.backend }}
needs:
- postgres
values:
+ - envs/default/values/backend.yaml
- envs/{{ .Environment.Name }}/values/backend.yaml
envs/default/values/backend.yaml
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- backend
topologyKey: "kubernetes.io/hostname"
рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрддрд░рдорд╛ рд╕рдмреИ рд░рд┐рд▓реАрдЬрд╣рд░реВрдХреЛ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдорд╛рдирд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджреИ
рдорд╛рдиреМрдВ рд╣рд╛рдореА рдзреЗрд░реИ рд░рд┐рд▓реАрдЬрд╣рд░реВрдорд╛ рдзреЗрд░реИ рдкреНрд░рд╡реЗрд╢рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ - рд╣рд╛рдореА рдкреНрд░рддреНрдпреЗрдХ рдЪрд╛рд░реНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ hosts:
, рддрд░ рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛ рдбреЛрдореЗрди рдЙрд╕реНрддреИ рдЫ, рддреНрдпрд╕реЛрднрдП рдХрд┐рди рдпрд╕рд▓рд╛рдИ рдХреЗрд╣рд┐ рдЧреНрд▓реЛрдмрд▓ рдЪрд░рдорд╛ рд░рд╛рдЦреНрдиреБ рд╣реБрдБрджреИрди рд░ рдХреЗрд╡рд▓ рдЪрд╛рд░реНрдЯрд╣рд░реВрдорд╛ рдпрд╕рдХреЛ рдореВрд▓реНрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реЛрд╕реН? рдпреЛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╛рдЗрдЬ рдЧрд░реНрди рдЪрд╛рд╣рдиреЗ рдорд╛рдирд╣рд░реВ рднрдПрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реБрдиреБрдкрд░реНрдЫ .gotmpl
, рддрд╛рдХрд┐ рд╣реЗрд▓реНрдордлрд╛рдЗрд▓рд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдпреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдиреНрдЬрд┐рди рдорд╛рд░реНрдлрдд рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред
.
тФЬтФАтФА envs
тФВ тФЬтФАтФА default
тФВ тФВ тФФтФАтФА values
- тФВ тФВ тФЬтФАтФА backend.yaml
- тФВ тФВ тФЬтФАтФА postgres.yaml
+ тФВ тФВ тФЬтФАтФА backend.yaml.gotmpl
+ тФВ тФВ тФФтФАтФА postgres.yaml.gotmpl
тФВ тФЬтФАтФА devel
тФВ тФВ тФФтФАтФА values
тФВ тФВ тФЬтФАтФА backend.yaml
тФВ тФВ тФФтФАтФА postgres.yaml
тФВ тФФтФАтФА production
тФВ тФФтФАтФА values
тФВ тФЬтФАтФА backend.yaml
тФВ тФФтФАтФА postgres.yaml
тФЬтФАтФА releases
тФВ тФЬтФАтФА backend.yaml
тФВ тФФтФАтФА postgres.yaml
тФФтФАтФА helmfile.yaml
helmfile.yaml
environments:
devel:
values:
- charts:
versions:
backend: 1.1.0
- apps:
- postgres
- backend
+ - global:
+ ingressDomain: k8s.devel.domain
production:
values:
- charts:
versions:
backend: 1.0.5
- apps:
- backend
+ - global:
+ ingressDomain: production.domain
---
bases:
{{- range .Values.apps }}
- releases/{{ . }}.yaml
{{- end }}
envs/default/values/backend.yaml.gotmpl
ingress:
enabled: true
paths:
- /api
hosts:
- {{ .Values.global.ingressDomain }}
envs/default/values/postgres.yaml.gotmpl
ingress:
enabled: true
paths:
- /
hosts:
- postgres.{{ .Values.global.ingressDomain }}
рдиреЛрдЯ
рдЬрд╛рд╣рд┐рд░ рдЫ, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдЪрд╛рд░реНрдЯрдорд╛ рдкреНрд░рд╡реЗрд╢ рдПрдХрджрдореИ рд╕рдВрджрд┐рдЧреНрдз рдХреБрд░рд╛ рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд▓реЗрдЦ рдЦрд╛рд▓реА рдард╛рдЙрдБрдорд╛ рдЧреЛрд▓рд╛рдХрд╛рд░ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдорд╛рддреНрд░ рджрд┐рдЗрдПрдХреЛ рдЫ рд░ рд▓реЗрдЦрдорд╛ рдХреЗрд╣реА рдирдпрд╛рдБ рд╡рд┐рдореЛрдЪрди рдкреЗрд╢ рдирдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдЗрдирдЧреНрд░реЗрд╕ рд╡рд░реНрдгрди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ред
рд╡рд╛рддрд╛рд╡рд░рдгреАрдп рдореВрд▓реНрдпрд╣рд░реВрдмрд╛рдЯ рд░рд╣рд╕реНрдпрд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджреИ
рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЧ рд╕рдорд╛рдирддрд╛ рджреНрд╡рд╛рд░рд╛, рддрдкрд╛рдЗрдБ рдИрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
.
тФЬтФАтФА envs
тФВ тФЬтФАтФА default
тФВ тФВ тФФтФАтФА values
тФВ тФВ тФЬтФАтФА backend.yaml
тФВ тФВ тФФтФАтФА postgres.yaml
тФВ тФЬтФАтФА devel
тФВ тФВ тФЬтФАтФА values
тФВ тФВ тФВ тФЬтФАтФА backend.yaml
тФВ тФВ тФВ тФФтФАтФА postgres.yaml
+ тФВ тФВ тФФтФАтФА secrets.yaml
тФВ тФФтФАтФА production
тФВ тФЬтФАтФА values
тФВ тФВ тФЬтФАтФА backend.yaml
тФВ тФВ тФФтФАтФА postgres.yaml
+ тФВ тФФтФАтФА secrets.yaml
тФЬтФАтФА releases
тФВ тФЬтФАтФА backend.yaml
тФВ тФФтФАтФА postgres.yaml
тФФтФАтФА helmfile.yaml
helmfile.yaml
environments:
devel:
values:
- charts:
versions:
backend: 1.1.0
- apps:
- postgres
- backend
- global:
ingressDomain: k8s.devel.domain
+ secrets:
+ - envs/devel/secrets.yaml
production:
values:
- charts:
versions:
backend: 1.0.5
- apps:
- backend
- global:
ingressDomain: production.domain
+ secrets:
+ - envs/production/secrets.yaml
---
bases:
{{- range .Values.apps }}
- releases/{{ . }}.yaml
{{- end }}
envs/devel/secrets.yaml
secrets:
elastic:
password: ENC[AES256_GCM,data:hjCB,iv:Z1P6/6xBJgJoKLJ0UUVfqZ80o4L84jvZfM+uH9gBelc=,tag:dGqQlCZnLdRAGoJSj63rBQ==,type:int]
...
envs/production/secrets.yaml
secrets:
elastic:
password: ENC[AES256_GCM,data:ZB/VpTFk8f0=,iv:EA//oT1Cb5wNFigTDOz3nA80qD9UwTjK5cpUwLnEXjs=,tag:hMdIUaqLRA8zuFBd82bz6A==,type:str]
...
envs/default/values/backend.yaml.gotmpl
elasticsearch:
host: elasticsearch
port: 9200
password: {{ .Values | getOrNil "secrets.elastic.password" | default "password" }}
envs/devel/values/backend.yaml
elasticsearch:
host: elastic-0.devel.domain
envs/production/values/backend.yaml
elasticsearch:
host: elastic-0.production.domain
рдиреЛрдЯ
рд╡реИрд╕реЗ, getOrNil
- рд╣реЗрд▓реНрдордлрд╛рдЗрд▓рдорд╛ рдЧреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░реНрдп, рдЬреБрди, рдпрджрд┐ рднрдП рдкрдирд┐ .Values.secrets
рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрдиреЗрдЫреИрди, рддреНрд░реБрдЯрд┐ рдлрд╛рд▓реНрдиреЗ рдЫреИрди, рддрд░ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд░рд┐рдгрд╛рдорд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ default
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рдЪреАрдЬрд╣рд░реВ рдПрдХрджрдо рд╕реНрдкрд╖реНрдЯ рджреЗрдЦрд┐рдиреНрдЫрдиреН, рддрд░ рд╣реЗрд▓реНрдордлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдзреЗрд░реИ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд╡рд░рдгрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдзреЗрд░реИ рджреБрд░реНрд▓рдн рдЫ, рд░ рдо IaC (рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░-рдПрдЬ-рдХреЛрдб) рд▓рд╛рдИ рдорд╛рдпрд╛ рдЧрд░реНрдЫреБ рд░ рддреИрдирд╛рддреА рдЕрд╡рд╕реНрдерд╛рдХреЛ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡рд░рдг рдкрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБред
рдЕрдиреНрддрдорд╛, рдо рдердкреНрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдЪрд░рд╣рд░реВ, рдмрджрд▓реЗрдорд╛, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдзрд╛рд╡рдХрдХреЛ рдУрдПрд╕рдХреЛ рд╡рд╛рддрд╛рд╡рд░рдгреАрдп рдЪрд░рд╣рд░реВрд╕рдБрдЧ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╛рдЗрдЬ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬрд╣рд╛рдБрдмрд╛рдЯ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рд╕реБрд░реБ рд╣реБрдиреЗрдЫ, рд░ рдпрд╕рд░реА рдЧрддрд┐рд╢реАрд▓ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
helmfile.yaml
environments:
default:
values:
- global:
clusterDomain: {{ env "CLUSTER_DOMAIN" | default "cluster.local" }}
ingressDomain: {{ env "INGRESS_DOMAIN" }}
рд╕реНрд░реЛрдд: www.habr.com