ืคืจื•ืก ื™ื™ืฉื•ืžื™ื ืขืœ ืคื ื™ ืืฉื›ื•ืœื•ืช Kubernetes ืžืจื•ื‘ื™ื ืขื Helm

ื›ื™ืฆื“ Dailymotion ืžืฉืชืžืฉ ื‘-Kubernetes: ืคืจื™ืกืช ื™ื™ืฉื•ืžื™ื

ืื ื—ื ื• ื‘-Dailymotion ื”ืชื—ืœื ื• ืœื”ืฉืชืžืฉ ื‘-Kubernetes ื‘ื™ื™ืฆื•ืจ ืœืคื ื™ 3 ืฉื ื™ื. ืื‘ืœ ืคืจื™ืกืช ื™ื™ืฉื•ืžื™ื ืขืœ ืคื ื™ ืืฉื›ื•ืœื•ืช ืžืจื•ื‘ื™ื ื”ื™ื ืžื”ื ื”, ืื– ื‘ืžื”ืœืš ื”ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช ื ื™ืกื™ื ื• ืœืฉืคืจ ืืช ื”ื›ืœื™ื ื•ื–ืจื™ืžื•ืช ื”ืขื‘ื•ื“ื” ืฉืœื ื•.

ืžืื™ืคื” ื–ื” ื”ืชื—ื™ืœ

ื›ืืŸ ื ืกืงื•ืจ ื›ื™ืฆื“ ืื ื• ืคื•ืจืกื™ื ืืช ื”ื™ื™ืฉื•ืžื™ื ืฉืœื ื• ืขืœ ืคื ื™ ืืฉื›ื•ืœื•ืช Kubernetes ืžืจื•ื‘ื™ื ื‘ืจื—ื‘ื™ ื”ืขื•ืœื.

ื›ื“ื™ ืœืคืจื•ืก ืžืกืคืจ ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ Kubernetes ื‘ื•-ื–ืžื ื™ืช, ืื ื• ืžืฉืชืžืฉื™ื ื”ื’ื”, ื•ื›ืœ ื”ืชืจืฉื™ืžื™ื ืฉืœื ื• ืžืื•ื—ืกื ื™ื ื‘ืžืื’ืจ git ืื—ื“. ื›ื“ื™ ืœืคืจื•ืก ืขืจื™ืžืช ื™ื™ืฉื•ืžื™ื ืžืœืื” ืžืžืกืคืจ ืฉื™ืจื•ืชื™ื, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืชืจืฉื™ื ื”ืกื™ื›ื•ื ืฉื ืงืจื. ื‘ืขื™ืงืจื• ืฉืœ ื“ื‘ืจ, ื–ื”ื• ืชืจืฉื™ื ืฉืžืฆื”ื™ืจ ืขืœ ืชืœื•ืช ื•ืžืืคืฉืจ ืœืš ืœืืชื—ืœ ืืช ื”-API ื•ื”ืฉื™ืจื•ืชื™ื ืฉืœื• ื‘ืคืงื•ื“ื” ืื—ืช.

ื›ืชื‘ื ื• ื’ื ืกืงืจื™ืคื˜ Python ืงื˜ืŸ ืขืœ ื’ื‘ื™ Helm ื›ื“ื™ ืœื‘ืฆืข ื‘ื“ื™ืงื•ืช, ืœื™ืฆื•ืจ ืชืจืฉื™ืžื™ื, ืœื”ื•ืกื™ืฃ ืกื•ื“ื•ืช ื•ืœืคืจื•ืก ื™ื™ืฉื•ืžื™ื. ื›ืœ ื”ืžืฉื™ืžื•ืช ื”ืœืœื• ืžื‘ื•ืฆืขื•ืช ืขืœ ืคืœื˜ืคื•ืจืžืช CI ืžืจื›ื–ื™ืช ื‘ืืžืฆืขื•ืช ืชืžื•ื ืช docker.

ื‘ื•ืื• ื ื’ื™ืข ืœื ืงื•ื“ื”.

ื”ืขืจื”. ื‘ื–ืžืŸ ืฉืืชื ืงื•ืจืื™ื ืืช ื–ื”, ื”ืžื•ืขืžื“ ื”ืจืืฉื•ืŸ ืœืฉื—ืจื•ืจ ืฉืœ Helm 3 ื›ื‘ืจ ื”ื•ื›ืจื–. ื”ื’ืจืกื” ื”ืจืืฉื™ืช ืžื›ื™ืœื” ืฉื•ืจื” ืฉืœืžื” ืฉืœ ืฉื™ืคื•ืจื™ื ื›ื“ื™ ืœื˜ืคืœ ื‘ื—ืœืง ืžื”ื‘ืขื™ื•ืช ืฉื ืชืงืœื ื• ื‘ื”ืŸ ื‘ืขื‘ืจ.

ื–ืจื™ืžืช ืขื‘ื•ื“ื” ืœืคื™ืชื•ื— ืชืจืฉื™ื

ืื ื• ืžืฉืชืžืฉื™ื ื‘ื”ืกืชืขืคื•ืช ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ื, ื•ื”ื—ืœื˜ื ื• ืœื™ื™ืฉื ืืช ืื•ืชื” ื’ื™ืฉื” ืœืชืจืฉื™ืžื™ื.

  • ืขื ืฃ dev ืžืฉืžืฉ ืœื™ืฆื™ืจืช ืชืจืฉื™ืžื™ื ืฉื™ื™ื‘ื—ื ื• ืขืœ ืืฉื›ื•ืœื•ืช ืคื™ืชื•ื—.
  • ื›ืืฉืจ ืžื•ื’ืฉืช ื‘ืงืฉืช ืžืฉื™ื›ื” ืœ ืื‘, ื”ื ื ื‘ื“ืงื™ื ื‘ื‘ื™ืžื•ื™.
  • ืœื‘ืกื•ืฃ, ืื ื• ื™ื•ืฆืจื™ื ื‘ืงืฉืช ืžืฉื™ื›ื” ืœื‘ื™ืฆื•ืข ื”ืฉื™ื ื•ื™ื™ื ื‘ืกื ื™ืฃ ืœึฐื“ึทืจื‘ึผึตืŸ ื•ืœื™ื™ืฉื ืื•ืชื ื‘ื™ื™ืฆื•ืจ.

ืœื›ืœ ืกื‘ื™ื‘ื” ื™ืฉ ืžืื’ืจ ืคืจื˜ื™ ืžืฉืœื” ื”ืžืื—ืกืŸ ืืช ื”ืชืจืฉื™ืžื™ื ืฉืœื ื•, ื•ืื ื—ื ื• ืžืฉืชืžืฉื™ื ืžื•ื–ื™ืื•ืŸ ืชืจืฉื™ื ืขื ืžืžืฉืงื™ API ืฉื™ืžื•ืฉื™ื™ื ืžืื•ื“. ื‘ื“ืจืš ื–ื• ืื ื• ืžื‘ื˜ื™ื—ื™ื ื‘ื™ื“ื•ื“ ืงืคื“ื ื™ ื‘ื™ืŸ ืกื‘ื™ื‘ื•ืช ื•ื‘ื“ื™ืงื•ืช ื‘ืขื•ืœื ื”ืืžื™ืชื™ ืฉืœ ืชืจืฉื™ืžื™ื ืœืคื ื™ ื”ืฉื™ืžื•ืฉ ื‘ื”ื ื‘ื™ื™ืฆื•ืจ.

ืžืื’ืจื™ ืชืจืฉื™ืžื™ื ื‘ืกื‘ื™ื‘ื•ืช ืฉื•ื ื•ืช

ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉื›ืืฉืจ ืžืคืชื—ื™ื ื“ื•ื—ืคื™ื ืขื ืฃ ืžืคืชื—ื™ื, ื’ืจืกื” ืฉืœ ื”ืชืจืฉื™ื ืฉืœื”ื ื ื“ื—ืคืช ืื•ื˜ื•ืžื˜ื™ืช ืœ-dev Chartmuseum. ืœืคื™ื›ืš, ื›ืœ ื”ืžืคืชื—ื™ื ืžืฉืชืžืฉื™ื ื‘ืื•ืชื• ืžืื’ืจ ืžืคืชื—ื™ื, ื•ืืชื” ืฆืจื™ืš ืœืฆื™ื™ืŸ ื‘ื–ื”ื™ืจื•ืช ืืช ื”ื’ืจืกื” ืฉืœืš ืฉืœ ื”ืชืจืฉื™ื ื›ื“ื™ ืœื ืœื”ืฉืชืžืฉ ื‘ื˜ืขื•ืช ื‘ืฉื™ื ื•ื™ื™ื ืฉืœ ืžื™ืฉื”ื• ืื—ืจ.

ื™ืชืจ ืขืœ ื›ืŸ, ืกืงืจื™ืคื˜ Python ื”ืงื˜ืŸ ืฉืœื ื• ืžืืžืช ืื•ื‘ื™ื™ืงื˜ื™ Kubernetes ืžื•ืœ ืžืคืจื˜ื™ Kubernetes OpenAPI ื‘ืืžืฆืขื•ืช ืงื•ื‘ื‘ืœ, ืœืคื ื™ ืคืจืกื•ืžื ื‘-Chartmusem.

ืชื™ืื•ืจ ื›ืœืœื™ ืฉืœ ื–ืจื™ืžืช ื”ืขื‘ื•ื“ื” ืœืคื™ืชื•ื— ื”ืชืจืฉื™ื

  1. ื”ื’ื“ืจืช ืžืฉื™ืžื•ืช ืฆื™ื ื•ืจ ืœืคื™ ืžืคืจื˜ gazr.io ืœื‘ืงืจืช ืื™ื›ื•ืช (ืžื•ืš, ื‘ื“ื™ืงืช ื™ื—ื™ื“ื”).
  2. ื“ื—ื™ืคื” ืฉืœ ืชืžื•ื ืช docker ืขื ื›ืœื™ Python ื”ืคื•ืจืกื™ื ืืช ื”ื™ื™ืฉื•ืžื™ื ืฉืœื ื•.
  3. ื”ื’ื“ืจืช ื”ืกื‘ื™ื‘ื” ืœืคื™ ืฉื ื”ืกื ื™ืฃ.
  4. ืื™ืžื•ืช ืงื‘ืฆื™ Kubernetes yaml ื‘ืืžืฆืขื•ืช Kubeval.
  5. ื”ื’ื“ืœ ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ื’ืจืกื” ืฉืœ ืชืจืฉื™ื ื•ืืช ืชืจืฉื™ืžื™ ื”ืื‘ ืฉืœื• (ืชืจืฉื™ืžื™ื ื”ืชืœื•ื™ื™ื ื‘ืชืจืฉื™ื ื”ืžืฉืชื ื”).
  6. ื”ื’ืฉืช ืชืจืฉื™ื ืœืžื•ื–ื™ืื•ืŸ ืชืจืฉื™ื ื”ืชื•ืื ืืช ืกื‘ื™ื‘ืชื•

ื ื™ื”ื•ืœ ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ืืฉื›ื•ืœื•ืช

ื”ืคื“ืจืฆื™ื” ืฉืœ ืืฉื›ื•ืœื•ืช

ื”ื™ื™ืชื” ืชืงื•ืคื” ืฉื”ืฉืชืžืฉื ื• ื”ืคื“ืจืฆื™ื” ืฉืœ ืืฉื›ื•ืœื•ืช Kubernetes, ืฉื‘ื• ื ื™ืชืŸ ืœื”ื›ืจื™ื– ืขืœ ืื•ื‘ื™ื™ืงื˜ื™ Kubernetes ืžื ืงื•ื“ืช ืงืฆื” ืื—ืช ืฉืœ API. ืื‘ืœ ื”ืชืขื•ืจืจื• ื‘ืขื™ื•ืช. ืœื“ื•ื’ืžื”, ืœื ื ื™ืชืŸ ืœื™ืฆื•ืจ ื—ืœืง ืžืื•ื‘ื™ื™ืงื˜ื™ Kubernetes ื‘ื ืงื•ื“ืช ื”ืงืฆื” ืฉืœ ื”ืคื“ืจืฆื™ื”, ืžื” ืฉืžืงืฉื” ืขืœ ืชื—ื–ื•ืงืช ืื•ื‘ื™ื™ืงื˜ื™ื ืžืื•ื—ื“ื™ื ื•ืื•ื‘ื™ื™ืงื˜ื™ื ืื—ืจื™ื ืขื‘ื•ืจ ืืฉื›ื•ืœื•ืช ื‘ื•ื“ื“ื™ื.

ื›ื“ื™ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื”, ื”ืชื—ืœื ื• ืœื ื”ืœ ืืช ื”ืืฉื›ื•ืœื•ืช ื‘ืื•ืคืŸ ืขืฆืžืื™, ืžื” ืฉืคืฉื˜ ืžืื•ื“ ืืช ื”ืชื”ืœื™ืš (ื”ืฉืชืžืฉื ื• ื‘ื’ืจืกื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืคื“ืจืฆื™ื”; ืื•ืœื™ ืžืฉื”ื• ื”ืฉืชื ื” ื‘ืฉื ื™ื™ื”).

ืคืœื˜ืคื•ืจืžื” ื‘ื”ืคืฆื” ื’ื™ืื•ื’ืจืคื™ืช

ื”ืคืœื˜ืคื•ืจืžื” ืฉืœื ื• ืžืคื•ื–ืจืช ื›ื™ื•ื ืขืœ ืคื ื™ 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ื›ื“ื™ ืœื”ื™ืžื ืข ืžื”ืขื‘ืจืช ื›ืœ ื”ืขืจื›ื™ื ื‘ื›ืœ ืคืขื ืฉืื ื• ืคื•ืจืกื™ื ืืคืœื™ืงืฆื™ื” ืฉื”ื™ื ื—ืœืง ืžื”ืชืจืฉื™ื ื”ื›ืœืœื™ ื”ื–ื”.

ื‘ื–ืจื™ืžืช ืขื‘ื•ื“ื” ืจืฆื™ืคื” ืฉืœ ืžืฉืœื•ื—, ื™ืฉ ืœื ื• ืจืง ืฉื ื™ ืขืจื›ื™ื ื”ืžืฉืชื ื™ื ื‘ืื•ืคืŸ ืงื‘ื•ืข: ืžืกืคืจ ื”ื”ืขืชืงื™ื ื•ืชื’ ื”ืชืžื•ื ื” (ื’ืจืกื”). ืขืจื›ื™ื ืื—ืจื™ื ื•ื™ืฆื™ื‘ื™ื ื™ื•ืชืจ ืžืฉืชื ื™ื ื‘ืื•ืคืŸ ื™ื“ื ื™, ื•ื–ื” ื“ื™ ืงืฉื”. ื™ืชืจื” ืžื›ืš, ื˜ืขื•ืช ืื—ืช ื‘ืคืจื™ืกืช ืชืจืฉื™ื ื›ืœืœื™ ืขืœื•ืœื” ืœื”ื•ื‘ื™ืœ ืœื›ืฉืœื™ื ื—ืžื•ืจื™ื, ื›ืคื™ ืฉืจืื™ื ื• ืžื ื™ืกื™ื•ื ื ื•.

ืขื“ื›ื•ืŸ ืงื•ื‘ืฆื™ ืชืฆื•ืจื” ืžืจื•ื‘ื™ื

ื›ืืฉืจ ืžืคืชื— ืžื•ืกื™ืฃ ืืคืœื™ืงืฆื™ื” ื—ื“ืฉื”, ืขืœื™ื• ืœืฉื ื•ืช ืžืกืคืจ ืงื‘ืฆื™ื: ื”ืฆื”ืจืช ื”ืืคืœื™ืงืฆื™ื”, ืจืฉื™ืžืช ื”ืกื•ื“ื•ืช, ื”ื•ืกืคืช ื”ืืคืœื™ืงืฆื™ื” ื›ืชืœื•ืช ืื ื”ื™ื ื ื›ืœืœืช ื‘ืชืจืฉื™ื ื”ื›ืœืœื™.

ื”ื”ืจืฉืื•ืช ืฉืœ ื’'ื ืงื™ื ืก ืžื•ืจื—ื‘ื•ืช ืžื“ื™ ื‘ื›ืกืคืช

ืขื›ืฉื™ื• ื™ืฉ ืœื ื• ืื—ื“ AppRole, ืฉืงื•ืจื ืืช ื›ืœ ื”ืกื•ื“ื•ืช ืžื”ื›ืกืคืช.

ืชื”ืœื™ืš ื”ื—ื–ืจื” ืœืื—ื•ืจ ืื™ื ื• ืื•ื˜ื•ืžื˜ื™

ื›ื“ื™ ืœื—ื–ื•ืจ ืื—ื•ืจื”, ืืชื” ืฆืจื™ืš ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” ืขืœ ืžืกืคืจ ืืฉื›ื•ืœื•ืช, ื•ื–ื” ื›ืจื•ืš ื‘ืฉื’ื™ืื•ืช. ืื ื• ืžื‘ืฆืขื™ื ืคืขื•ืœื” ื–ื• ื‘ืื•ืคืŸ ื™ื“ื ื™ ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉืžื–ื”ื” ื”ื’ืจืกื” ื”ื ื›ื•ืŸ ืฆื•ื™ืŸ.

ืื ื—ื ื• ืžืชืงื“ืžื™ื ืœืขื‘ืจ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”