ืืืฆื Dailymotion ืืฉืชืืฉ ื-Kubernetes: ืคืจืืกืช ืืืฉืืืื
ืื ืื ื ื-Dailymotion ืืชืืื ื ืืืฉืชืืฉ ื-Kubernetes ืืืืฆืืจ ืืคื ื 3 ืฉื ืื. ืืื ืคืจืืกืช ืืืฉืืืื ืขื ืคื ื ืืฉืืืืืช ืืจืืืื ืืื ืืื ื, ืื ืืืืื ืืฉื ืื ืืืืจืื ืืช ื ืืกืื ื ืืฉืคืจ ืืช ืืืืื ืืืจืืืืช ืืขืืืื ืฉืื ื.
ืืืืคื ืื ืืชืืื
ืืื ื ืกืงืืจ ืืืฆื ืื ื ืคืืจืกืื ืืช ืืืืฉืืืื ืฉืื ื ืขื ืคื ื ืืฉืืืืืช Kubernetes ืืจืืืื ืืจืืื ืืขืืื.
ืืื ืืคืจืืก ืืกืคืจ ืืืืืืงืืื ืฉื Kubernetes ืื-ืืื ืืช, ืื ื ืืฉืชืืฉืื
ืืชืื ื ืื ืกืงืจืืคื Python ืงืื ืขื ืืื Helm ืืื ืืืฆืข ืืืืงืืช, ืืืฆืืจ ืชืจืฉืืืื, ืืืืกืืฃ ืกืืืืช ืืืคืจืืก ืืืฉืืืื. ืื ืืืฉืืืืช ืืืื ืืืืฆืขืืช ืขื ืคืืืคืืจืืช CI ืืจืืืืช ืืืืฆืขืืช ืชืืื ืช docker.
ืืืื ื ืืืข ืื ืงืืื.
ืืขืจื. ืืืื ืฉืืชื ืงืืจืืื ืืช ืื, ืืืืขืื ืืจืืฉืื ืืฉืืจืืจ ืฉื Helm 3 ืืืจ ืืืืจื. ืืืจืกื ืืจืืฉืืช ืืืืื ืฉืืจื ืฉืืื ืฉื ืฉืืคืืจืื ืืื ืืืคื ืืืืง ืืืืขืืืช ืฉื ืชืงืื ื ืืื ืืขืืจ.
ืืจืืืช ืขืืืื ืืคืืชืื ืชืจืฉืื
ืื ื ืืฉืชืืฉืื ืืืกืชืขืคืืช ืขืืืจ ืืืฉืืืื, ืืืืืื ื ืืืืฉื ืืช ืืืชื ืืืฉื ืืชืจืฉืืืื.
- ืขื ืฃ dev ืืฉืืฉ ืืืฆืืจืช ืชืจืฉืืืื ืฉืืืืื ื ืขื ืืฉืืืืืช ืคืืชืื.
- ืืืฉืจ ืืืืฉืช ืืงืฉืช ืืฉืืื ื ืื, ืื ื ืืืงืื ืืืืืื.
- ืืืกืืฃ, ืื ื ืืืฆืจืื ืืงืฉืช ืืฉืืื ืืืืฆืืข ืืฉืื ืืืื ืืกื ืืฃ ืึฐืึทืจืึผึตื ืืืืืฉื ืืืชื ืืืืฆืืจ.
ืืื ืกืืืื ืืฉ ืืืืจ ืคืจืื ืืฉืื ืืืืืกื ืืช ืืชืจืฉืืืื ืฉืื ื, ืืื ืื ื ืืฉืชืืฉืื
ืืืืจื ืชืจืฉืืืื ืืกืืืืืช ืฉืื ืืช
ืจืืื ืืฆืืื ืฉืืืฉืจ ืืคืชืืื ืืืืคืื ืขื ืฃ ืืคืชืืื, ืืจืกื ืฉื ืืชืจืฉืื ืฉืืื ื ืืืคืช ืืืืืืืืช ื-dev Chartmuseum. ืืคืืื, ืื ืืืคืชืืื ืืฉืชืืฉืื ืืืืชื ืืืืจ ืืคืชืืื, ืืืชื ืฆืจืื ืืฆืืื ืืืืืจืืช ืืช ืืืจืกื ืฉืื ืฉื ืืชืจืฉืื ืืื ืื ืืืฉืชืืฉ ืืืขืืช ืืฉืื ืืืื ืฉื ืืืฉืื ืืืจ.
ืืชืจ ืขื ืื, ืกืงืจืืคื Python ืืงืื ืฉืื ื ืืืืช ืืืืืืงืื Kubernetes ืืื ืืคืจืื Kubernetes OpenAPI ืืืืฆืขืืช
ืชืืืืจ ืืืื ืฉื ืืจืืืช ืืขืืืื ืืคืืชืื ืืชืจืฉืื
- ืืืืจืช ืืฉืืืืช ืฆืื ืืจ ืืคื ืืคืจื
gazr.io ืืืงืจืช ืืืืืช (ืืื, ืืืืงืช ืืืืื). - ืืืืคื ืฉื ืชืืื ืช docker ืขื ืืื Python ืืคืืจืกืื ืืช ืืืืฉืืืื ืฉืื ื.
- ืืืืจืช ืืกืืืื ืืคื ืฉื ืืกื ืืฃ.
- ืืืืืช ืงืืฆื Kubernetes yaml ืืืืฆืขืืช Kubeval.
- ืืืื ืืืืืืืืช ืืช ืืืจืกื ืฉื ืชืจืฉืื ืืืช ืชืจืฉืืื ืืื ืฉืื (ืชืจืฉืืืื ืืชืืืืื ืืชืจืฉืื ืืืฉืชื ื).
- ืืืฉืช ืชืจืฉืื ืืืืืืืื ืชืจืฉืื ืืชืืื ืืช ืกืืืืชื
ื ืืืื ืืืืืื ืืื ืืฉืืืืืช
ืืคืืจืฆืื ืฉื ืืฉืืืืืช
ืืืืชื ืชืงืืคื ืฉืืฉืชืืฉื ื
ืืื ืืคืชืืจ ืืช ืืืขืื, ืืชืืื ื ืื ืื ืืช ืืืฉืืืืืช ืืืืคื ืขืฆืืื, ืื ืฉืคืฉื ืืืื ืืช ืืชืืืื (ืืฉืชืืฉื ื ืืืจืกื ืืจืืฉืื ื ืฉื ืืคืืจืฆืื; ืืืื ืืฉืื ืืฉืชื ื ืืฉื ืืื).
ืคืืืคืืจืื ืืืคืฆื ืืืืืืจืคืืช
ืืคืืืคืืจืื ืฉืื ื ืืคืืืจืช ืืืื ืขื ืคื ื 6 ืืืืจืื - 3 ืืงืืืืช ื-3 ืืขื ื.
ืขืจืื ืืื ืืืืืืืื
4 ืขืจืื Helm ืืืืืืืื ืืืคืฉืจืื ืื ืืืืืช ืืืืืื ืืื ืืฉืืืืืช. ืืื ืืชืจืฉืืืื ืฉืื ื ืืฉ ืขืจืื ืืื ืืืื ืืจืืจืช ืืืื.
global:
cloud: True
env: staging
region: us-central1
clusterName: staging-us-central1
ืขืจืืื ืืืืืืืื
ืขืจืืื ืืื ืขืืืจืื ืืืืืืจ ืืช ืืืงืฉืจ ืขืืืจ ืืืืฉืืืื ืฉืื ื ืืืฉืืฉืื ืืืืจืืช ืฉืื ืืช: ื ืืืืจ, ืืขืงื, ืจืืฉืื, ืืืฆืืข ืฉืืืืช ืืืฆืื ืืืช, ืงื ื ืืืื ืืื'.
- "ืขื ื": ืืฉ ืื ื ืคืืืคืืจืืช Kubernetes ืืืืจืืืืช. ืืืืืื, ื-API ืฉืื ื ื ืคืจืก ืืืืืจื GCP ืืืืจืืื ืื ืชืื ืื ืฉืื ื.
- "env": ืขืจืืื ืืกืืืืื ืขืฉืืืื ืืืฉืชื ืืช ืขืืืจ ืกืืืืืช ืฉืืื ื ืืืฆืืจ. ืืืืืื, ืืืืจืืช ืืฉืืืื ืืชืฆืืจืืช ืงื ื ืืืื ืืืืืืื.
- "ืืืืจ": ืืืืข ืื ืขืืืจ ืืงืืืข ืืช ืืืงืืื ืฉื ืืืฉืืื ืื ืืชื ืืืฉืชืืฉ ืื ืืื ืืงืืืข ื ืงืืืืช ืงืฆื ืงืจืืืืช ืขืืืจ ืฉืืจืืชืื ืืืฆืื ืืื.
- "clusterName": ืื ืืืืฉืจ ืื ื ืจืืฆืื ืืืืืืจ ืขืจื ืขืืืจ ืืฉืืื ืืืื.
ืื ื ืืืืื ืกืคืฆืืคืืช:
{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}
ืืืืื ืืชืื ืืช ืืื
ืืืืืืื ืืื ืืืืืจ ืืชืื ืืช ืขืืืจืช ืืื ืืื ืืข ืขืืืก ืฉื Kubernetes YAML.
ืืืืขืช ืืงืฉื
ืืื ืืคืจืืกื ืฉืื ื ืืืืกืกืื ืขื ืืกืคืจ ืงืืืฆื YAML. ืืืื ืืืืื ืืืืคื ืฉืื ืื ื ืืืจืืืื ืขื ืฉืืจืืช ืืืืคืืืืืืืช ืงื ื ืืืืื ืฉืื (ืืกืคืจ ืืขืชืงืื) ืืืฉืืื.
releases:
- foo.world
foo.world: # Release name
services: # List of dailymotion's apps/projects
foobar:
chart_name: foo-foobar
repo: [email protected]:dailymotion/foobar
contexts:
prod-europe-west1:
deployments:
- name: foo-bar-baz
replicas: 18
- name: another-deployment
replicas: 3
ืืืืจืช ืฉืืจืืช
ืืื ืืชืืื ืฉื ืื ืืฉืืืื ืืืืืืจืื ืืช ืืจืืืช ืืขืืืื ืฉื ืืคืจืืกื ืฉืื ื. ืืฉืื ืืืืจืื ืคืืจืก ืืช ืืืคืืืงืฆืื ืืืฉืืืืืช ืขืืืืื ืืจืืืื ืื ืืื ืืช.
ืฉืืื ืืคืจืืกื ืฉื ื'ื ืงืื ืก
ืื ืขื ืกืืืืช?
ืื ืืืข ืืืืืื, ืื ื ืขืืงืืื ืืืจ ืื ืืกืืืืช ืืืงืืืืช ืฉืื ืื ืืืืืกื ืื ืืืชื ืืืกืคืช ืืืืืืืช
ืืื ืืคืจืืกื ืฉืื ื ืืืืฆืื ืขืจืืื ืกืืืืื ื-Vault, ืืืืฉืจ ืืืืข ืืื ืืคืจืืกื, ืืื ืก ืืืชื ืืชืื Helm.
ืืฉื ืื, ืืืืจื ื ืืืคืื ืืื ืืกืืืืช ื-Vault ืืืื ืืกืืืืช ืฉืืืคืืืงืฆืืืช ืฉืื ื ืืงืืงืืช ืืื:
secrets:
- secret_id: "stack1-app1-password"
contexts:
- name: "default"
vaultPath: "/kv/dev/stack1/app1/test"
vaultKey: "password"
- name: "cluster1"
vaultPath: "/kv/dev/stack1/app1/test"
vaultKey: "password"
- ืืืืจื ื ืืืืื ืืืืืื ืฉืืฉ ืืคืขืื ืืคืืื ืืขืช ืืงืืืช ืกืืืืช ืืืกืคืช.
- ืื ืืกืื ืื ืืืงืฉืจ ืื ืืฉืืื ืกืคืฆืืคื, ืขืืื ืืืืกืืฃ ืขืจื ืกืคืฆืืคื. (ืืื ืืืฉืืื ืืืงืฉืจ1 ืืฉ ืขืจื ืืฉืื ืขืืืจ ืืกืืกืื ืืกืืืืช ืืืกื ืืช-ืืคืืืงืฆืื1).
- ืืืจืช ืืขืจื ืืฉืืฉ ืืืจืืจืช ืืืื.
- ืขืืืจ ืื ืคืจืื ืืจืฉืืื ืื ื ืกืื ืงืืืจื ืืก ืืืื ืก ืืื ืืคืชื-ืขืจื. ืืื, ืืชืื ืืช ืืกืืืืช ืืชืจืฉืืืื ืฉืื ื ืืื ืคืฉืืื ืืืื.
apiVersion: v1
data:
{{- range $key,$value := .Values.secrets }}
{{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
kind: Secret
metadata:
name: "{{ .Chart.Name }}"
labels:
chartVersion: "{{ .Chart.Version }}"
tillerVersion: "{{ .Capabilities.TillerVersion.SemVer }}"
type: Opaque
ืืขืืืช ืืืืืืืช
ืขืืืื ืขื ืืกืคืจ ืืืืจืื
ืืขืช ืื ื ืืคืจืืืื ืืื ืคืืชืื ืชืจืฉืืืื ืืืืฉืืืื. ืืืฉืืขืืช ืืื ืฉืืคืชืืื ืฆืจืืืื ืืขืืื ืืฉื ื ืืืืจื git: ืืื ืขืืืจ ืืืคืืืงืฆืื, ืืืื ืขืืืจ ืืืืจืช ืืคืจืืกื ืฉืื ื-Kubernetes. 2 ืืืืจื git ืคืืจืืฉื 2 ืืจืืืืช ืขืืืื, ืืงื ืืืชืืืืื ืืืชืืืื.
ื ืืืื ืชืจืฉืืืื ืืืืืื ืืื ืืจืื
ืืคื ืฉืืืจ ืืืจื ื, ืชืจืฉืืืื ืื ืจืืื ืฉืืืืฉืืื ืืืื ืืืืืื ืชืืืช ืืคืจืืกื ืืืืจื ืฉื ืืกืคืจ ืืืฉืืืื. ืืื ืื ืื ื ืืฉืชืืฉืื --reuse-values
ืืื ืืืืื ืข ืืืขืืจืช ืื ืืขืจืืื ืืื ืคืขื ืฉืื ื ืคืืจืกืื ืืคืืืงืฆืื ืฉืืื ืืืง ืืืชืจืฉืื ืืืืื ืืื.
ืืืจืืืช ืขืืืื ืจืฆืืคื ืฉื ืืฉืืื, ืืฉ ืื ื ืจืง ืฉื ื ืขืจืืื ืืืฉืชื ืื ืืืืคื ืงืืืข: ืืกืคืจ ืืืขืชืงืื ืืชื ืืชืืื ื (ืืจืกื). ืขืจืืื ืืืจืื ืืืฆืืืื ืืืชืจ ืืฉืชื ืื ืืืืคื ืืื ื, ืืื ืื ืงืฉื. ืืชืจื ืืื, ืืขืืช ืืืช ืืคืจืืกืช ืชืจืฉืื ืืืื ืขืืืื ืืืืืื ืืืฉืืื ืืืืจืื, ืืคื ืฉืจืืื ื ืื ืืกืืื ื ื.
ืขืืืื ืงืืืฆื ืชืฆืืจื ืืจืืืื
ืืืฉืจ ืืคืชื ืืืกืืฃ ืืคืืืงืฆืื ืืืฉื, ืขืืื ืืฉื ืืช ืืกืคืจ ืงืืฆืื: ืืฆืืจืช ืืืคืืืงืฆืื, ืจืฉืืืช ืืกืืืืช, ืืืกืคืช ืืืคืืืงืฆืื ืืชืืืช ืื ืืื ื ืืืืช ืืชืจืฉืื ืืืืื.
ืืืจืฉืืืช ืฉื ื'ื ืงืื ืก ืืืจืืืืช ืืื ืืืกืคืช
ืขืืฉืื ืืฉ ืื ื ืืื
ืชืืืื ืืืืจื ืืืืืจ ืืื ื ืืืืืืื
ืืื ืืืืืจ ืืืืจื, ืืชื ืฆืจืื ืืืคืขืื ืืช ืืคืงืืื ืขื ืืกืคืจ ืืฉืืืืืช, ืืื ืืจืื ืืฉืืืืืช. ืื ื ืืืฆืขืื ืคืขืืื ืื ืืืืคื ืืื ื ืืื ืืืืืื ืฉืืืื ืืืจืกื ืื ืืื ืฆืืื.
ืื ืื ื ืืชืงืืืื ืืขืืจ GitOps
ืืืืจื ืฉืื ื
ืื ื ืจืืฆืื ืืืืืืจ ืืช ืืชืจืฉืื ืืืืืจ ืืืคืืืงืฆืื ืฉืืื ืคืืจืก.
ืืจืืืช ืืขืืืื ืชืืื ืืื ืืื ืฉื ืืคืืชืื. ืืืืืื, ืืืฉืจ ืขื ืฃ ื ืืืฃ ืืืืกืืจ, ืืคืจืืกื ืชืืคืขื ืืืืืืืืช. ืืืืื ืืขืืงืจื ืืื ืืืฉื ืื ืืืจืืืช ืืขืืืื ืื ืืืืืช ืืืื ืื ืืื ืื ืืื ื-git (ืืืคืืืงืฆืื ืขืฆืื ืืืืคื ืคืจืืกืชื ื-Kubernetes).
ืืฉื ื ืืกืคืจ ืืชืจืื ืืช:
- ืืจืื ืืืชืจ ืืืชืจ ืืจืืจ ืขืืืจ ืืืื. ืงื ืืืชืจ ืืืืื ืืืฆื ืืืืื ืฉืื ืืืื ืืชืจืฉืื ืืงืืื.
- ื ืืชื ืืฆืืื ืืช ืืืืจืช ืคืจืืกืช ืืฉืืจืืช ืืืชื ืืงืื ืืื ืืงืื ืฉืืจืืช.
- ื ืืืื ืืกืจืช ืชืจืฉืืืื ืืืืืื. ืืฉืืจืืช ืืืื ืืืืืจืช Helm ืืฉืื. ืื ืืืคืฉืจ ืื ืื ืื ืืช ืืืืืจ ืืืืื ืฉื ืืืคืืืงืฆืื (ืืืืจื, ืฉืืจืื) ืืจืื ืืงืื ื ืืืืชืจ, ืืื ืื ืืืฉืคืืข ืขื ืฉืืจืืชืื ืืืจืื.
- ืืืชืจืื ืืช ืฉื git ืื ืืืื ืชืจืฉืื: ืืื ืฉืื ืืืื, ืืืื ืืืงืืจืช ืืื'. ืื ืืชื ืฆืจืื ืืืื ืฉืื ืื ืืชืจืฉืื, ืืชื ืืืื ืืขืฉืืช ืืืช ืืืืฆืขืืช git. ืืคืจืืกื ืืชืืืื ืืืืคื ืืืืืืื.
- ืืืื ืชืฉืงืื ืืฉืคืจ ืืช ืืจืืืช ืืขืืืื ืืคืืชืื ืฉืื ืขื ืืืื ืืื ืกืงืคืืื, ืฉืืืชื ืืคืชืืื ืืืืืื ืืืืืง ืฉืื ืืืื ืืืงืฉืจ ืงืจืื ืืืืฆืืจ.
ืืืืจื ืื-ืฉืืืืช
ืืืคืชืืื ืฉืื ื ืืฉืชืืฉืื ืืืจืืืช ืืขืืืื ืืื ืืืจ ืฉื ืชืืื, ืื ืื ืื ื ืจืืฆืื ืฉืืืืืจื ืชืืื ืืื ืฉืืืชืจ ืืื ืืืืื. ืืื ืืืืื ื ืืืืกืืฃ ืฉืื ืืื ืืื ืืืจื ืืืืจื.
ืืฉืื ืืจืืฉืื ืืื ืคืฉืื:
- ืื ื ืฉืืืจืื ืขื ืืื ื ืืืื ืืืืืจืช ืคืจืืกืช ืืืฉืืืื, ืื ืืืืืืืงื ืืืื ืืฉื DailymotionRelease.
apiVersion: "v1"
kind: "DailymotionRelease"
metadata:
name: "app1.ns1"
environment: "dev"
branch: "mybranch"
spec:
slack_channel: "#admin"
chart_name: "app1"
scaling:
- context: "dev-us-central1-0"
replicas:
- name: "hermes"
count: 2
- context: "dev-europe-west1-0"
replicas:
- name: "app1-deploy"
count: 2
secrets:
- secret_id: "app1"
contexts:
- name: "default"
vaultPath: "/kv/dev/ns1/app1/test"
vaultKey: "password"
- name: "dev-europe-west1-0"
vaultPath: "/kv/dev/ns1/app1/test"
vaultKey: "password"
- ืืจืกื ืืืช ืืื ืืคืืืงืฆืื (ืืื ืชืจืฉืืืื ืืืืืื).
- ืชืจืฉืืืื ืืืืืจ git ืฉื ืืืคืืืงืฆืื.
ืืืืจื ื ืขื ืื ืืืคืชืืื, ืื ืชืืืื ืืืืืจื ืืืจ ืืื. ืืฉืื ืืจืืฉืื ืขืืืื ื ืฉืื ืืืืฆืขืืช ืคืืืคืืจืืช CI. ืืงืจืื ืืืชืื ืคืืกื ื ืืกืฃ ืขื ืฉืื ืฉื ื: ืืื ืขืืจื ื ืืืจืืืช ืขืืืื ืฉื GitOps ืขื
ืืื ื ืืกืื ื ืืชืืจ ืืช ืืืชืงืืืืช ืฉืื ื ืืืจืืืช ืืขืืืื ืฉื ืคืจืืกืช ืืืคืืืงืฆืืืช ืืืืื ืืฉื ืื ืืืืจืื ืืช, ืื ืฉืืืืื ืืืืฉืืืช ืขื ืืืฉืช GitOps. ืขืื ืื ืืืขื ื ืืืขื ืื ืืืื ืขื ืืชืืฆืืืช, ืืื ืขืืฉืื ืื ืื ื ืืฉืืื ืขืื ืฉืขืฉืื ื ืืช ืืืืจ ืื ืืื ืืฉืืืืื ื ืืคืฉื ืืื ืืืงืจื ืืืชื ืืืจืืืื ืฉื ืืืคืชืืื.
ืืงืืจ: www.habr.com