เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดจเตเดฑเตเด™เตเด™เตเด•เดณเตเด‚ เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเด‚: เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดตเดฟเด•เดธเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดŸเต†เดฒเดฟเดชเตเดฐเต†เดธเตปเดธเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดจเตเดฑเตเด™เตเด™เตเด•เดณเตเด‚ เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเด‚: เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดตเดฟเด•เดธเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดŸเต†เดฒเดฟเดชเตเดฐเต†เดธเตปเดธเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚

Kubernetes-เตฝ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเด™เตเด™เดณเต‹เดŸเต เด•เต‚เดŸเตเดคเดฒเดพเดฏเดฟ เดšเต‹เดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เดตเตเดฏเดพเด–เตเดฏเดพเดจเดฟเดšเตเดš เดญเดพเดทเด•เตพ, เด…เดตเดฐเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ IDE-เดฏเดฟเดฒเต† เด•เต‹เดกเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดถเดฐเดฟเดฏเดพเด•เตเด•เดพเดจเตเด‚ เดฌเดฟเตฝเดกเต/เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเต† เดซเดฒเด‚ เด•เดพเดฃเดพเดจเตเด‚ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต - F5 เด…เดฎเตผเดคเตเดคเดฟเด•เตเด•เตŠเดฃเตเดŸเต. เด’เดฐเต เดฎเต‹เดฃเต‹เดฒเดฟเดคเตเดคเดฟเด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เด•เดพเดฐเตเดฏเด‚ เดตเดฐเตเดฎเตเดชเต‹เตพ, เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด’เดฐเต เดตเต†เดฌเต เดธเต†เตผเดตเดฑเตเด‚ (เดกเต‹เด•เตเด•เดฑเดฟเตฝ, เดตเต†เตผเดšเตเดตเตฝเดฌเต‹เด•เตเดธเดฟเตฝ...) เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดพเตฝ เดฎเดคเดฟเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด‰เดŸเตป เดคเดจเตเดจเต† เดตเดฟเด•เดธเดจเด‚ เด†เดธเตเดตเดฆเดฟเด•เตเด•เต‚. เดฎเต‹เดฃเต‹เดฒเดฟเดคเตเดคเตเด•เตพ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเดพเด•เตเด•เดฟ เดฎเตเดฑเดฟเดšเตเดšเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เดตเดฐเดตเต‹เดŸเต†, เดชเดฐเดธเตเดชเดฐเด‚ เด†เดถเตเดฐเดฟเดคเดคเตเดตเด‚ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต‹เดŸเต†, เดŽเดฒเตเดฒเดพเด‚ เด…เดคเต เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฏเดฟ. เดˆ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เด•เต‚เดŸเตเดคเตฝ, เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ. เดตเดฟเด•เดธเดจเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด†เดธเตเดตเดฆเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เด’เดจเตเดจเต‹ เดฐเดฃเตเดŸเต‹ เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด‰เดฏเตผเดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดšเดฟเดฒเดชเตเดชเต‹เตพ เด’เดฐเต เดกเดธเดจเดฟเดฒเดงเดฟเด•เด‚... เดชเตŠเดคเตเดตเต‡, เด‡เดคเดฟเดจเต†เดฒเตเดฒเดพเด‚ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเด‚, เด•เดพเดฐเดฃเด‚ เด‡เดคเต เด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. .

เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเดฎเดฏเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเต. เด•เตเดฎเดฟเดžเตเดžเตเด•เต‚เดŸเดฟเดฏ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด•เตเดฐเดšเตเดšเตเด•เตพ" เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเดพเตป เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚.

1. เดŠเดจเตเดจเตเดตเดŸเดฟเด•เตพ

เดฎเดฟเด•เตเด• IDE-เด•เตพเด•เตเด•เตเด‚ FTP/SFTP เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต†เตผเดตเดฑเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เด•เต‹เดกเต เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเตเดฃเตเดŸเต. เดˆ เดชเดพเดค เดตเดณเดฐเต† เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต, เดžเด™เตเด™เตพ เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด‰เดŸเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เด…เดคเดฟเดจเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดšเตเดฐเตเด™เตเด™เตเดจเตเดจเต:

  1. เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเตเด•เดณเตเดŸเต† เดชเต‹เดกเดฟเตฝ (dev/review), SSH เด†เด•เตโ€Œเดธเดธเต เด‰เดณเตเดณ เด’เดฐเต เด…เดงเดฟเด• เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดกเต†เดตเดฒเดชเตเดชเดฑเตเดŸเต† เดชเตŠเดคเต SSH เด•เต€ เดซเต‹เตผเดตเต‡เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  2. init เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ (เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ prepare-app) เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เด•เต‹เดกเต เด•เตˆเดฎเดพเดฑเตเด• emptyDirเด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ SSH เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เด•เต‹เดกเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต.

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดจเตเดฑเตเด™เตเด™เตเด•เดณเตเด‚ เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเด‚: เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดตเดฟเด•เดธเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดŸเต†เดฒเดฟเดชเตเดฐเต†เดธเตปเดธเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚

เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเตเด•เต€เดฎเดฟเดจเตเดฑเต† เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดจเดจเตเดจเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป, เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ YAML เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เดณเตเดŸเต† เดถเด•เดฒเด™เตเด™เตพ เดžเดพเตป เดจเตฝเด•เตเด‚.

เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เตพ

1.1 เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ.yaml

ssh_pub_key:
  vasya.pupkin: <ssh public key in base64> 

เด‡เดคเต vasya.pupkin เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเดฎเดพเดฃเต ${GITLAB_USER_LOGIN}.

1.2 deployment.yaml

...
{{ if eq .Values.global.debug "yes" }}
      volumes:
      - name: ssh-pub-key
        secret:
          defaultMode: 0600
          secretName: {{ .Chart.Name }}-ssh-pub-key
      - name: app-data
        emptyDir: {}
      initContainers:
      - name: prepare-app
{{ tuple "backend" . | include "werf_container_image" | indent 8 }}
        volumeMounts:
        - name: app-data
          mountPath: /app-data
        command: ["bash", "-c", "cp -ar /app/* /app-data/" ]
{{ end }}
      containers:
{{ if eq .Values.global.debug "yes" }}
      - name: ssh
        image: corbinu/ssh-server
        volumeMounts:
        - name: ssh-pub-key
          readOnly: true
          mountPath: /root/.ssh/authorized_keys
          subPath: authorized_keys
        - name: app-data
          mountPath: /app
        ports:
        - name: ssh
          containerPort: 22
          protocol: TCP
{{ end }}
      - name: backend
        volumeMounts:
{{ if eq .Values.global.debug "yes" }}
        - name: app-data
          mountPath: /app
{{ end }}
        command: ["/usr/sbin/php-fpm7.2", "--fpm-config", "/etc/php/7.2/php-fpm.conf", "-F"]
...

1.3 เดฐเดนเดธเตเดฏเด‚.yaml

{{ if eq .Values.global.debug "yes" }}
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Chart.Name }}-ssh-pub-key
type: Opaque
data:
  authorized_keys: "{{ first (pluck .Values.global.username .Values.ssh_pub_key) }}"
{{ end }}

เด…เดจเตเดคเดฟเดฎ เดธเตโ€Œเดชเตผเดถเดจเด‚

เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต gitlab-ci.yml เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

dev:
  stage: deploy
  script:
   - type multiwerf && source <(multiwerf use 1.0 beta)
   - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
   - werf deploy
     --namespace ${CI_PROJECT_NAME}-stage
     --set "global.env=stage"
     --set "global.git_rev=${CI_COMMIT_SHA}"
     --set "global.debug=yes"
     --set "global.username=${GITLAB_USER_LOGIN}"
 tags:
   - build

Voila: เดตเดฟเดจเตเดฏเดพเดธเด‚ เด†เดฐเด‚เดญเดฟเดšเตเดš เดกเดตเดฒเดชเตเดชเตผเด•เตเด•เต เดธเต‡เดตเดจ เดจเดพเดฎเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเด‚ (เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเด™เตเด™เดจเต† เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดพเดฏเดฟ เด†เด•เตเดธเดธเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเด‚, เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดชเดฑเดžเตเดžเต) เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเต†เดธเตโ€Œเด•เตโ€ŒเดŸเต‹เดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต SFTP เดตเดดเดฟ เด•เต‹เดกเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต เดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเต† เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•.

เด‡เดคเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเดฏ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดจเดŸเดชเตเดชเดพเด•เตเด•เตฝ เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดคเดฟเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดฆเต‹เดทเด™เตเด™เดณเตเดฃเตเดŸเต:

  • เดญเดพเดตเดฟเดฏเดฟเตฝ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณ เดนเต†เตฝเด‚ เดšเดพเตผเดŸเตเดŸเต เดชเดฐเดฟเดทเตเด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดค;
  • เดธเต‡เดตเดจเด‚ เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดš เดตเตเดฏเด•เตเดคเดฟเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเต‚;
  • เด•เต‹เดกเตเดฎเดพเดฏเดฟ เดฒเต‹เด•เตเด•เตฝ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเดฎเดพเดฏเดฟ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดคเต Git-เดฒเต‡เด•เตเด•เต เดธเดฎเตผเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เตพ เด“เตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

2. เดŸเต†เดฒเดฟเดชเตเดฐเดธเตปเดธเต

เดชเดฆเตเดงเดคเดฟ เดŸเต†เดฒเดฟเดชเตเดฐเดธเตปเดธเต เดตเดณเดฐเต†เด•เตเด•เดพเดฒเดฎเดพเดฏเดฟ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด…เดตเตผ เดชเดฑเดฏเตเดจเตเดจเดคเตเดชเต‹เดฒเต†, "เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ เด‡เดคเต เด—เต—เดฐเดตเดฎเดพเดฏเดฟ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเดฏเตเดฏเดพเดฑเดพเดฏเดฟเดฒเตเดฒ." เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดกเดฟเดฎเดพเตปเดกเต เด…เดคเดฟเดจเตเดฑเต† เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดคเต, เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดญเดตเด‚ เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเดคเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต, เด‡เดคเต เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดจเตเดฑเต† เดตเดพเดฏเดจเด•เตเด•เดพเตผเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด‚ - เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ เดŸเต†เดฒเดฟเดชเตเดฐเดธเต†เตปเดธเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‡เดคเตเดตเดฐเต† เดฎเดฑเตเดฑเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเตŠเดจเตเดจเตเด‚ เดนเดฌเดฟเตฝ เด‡เดฒเตเดฒเดพเดคเดฟเดฐเตเดจเตเดจเดคเดฟเดจเดพเตฝ.

เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เดŽเดฒเตเดฒเดพเด‚ เด…เดคเตเดฐ เดญเดฏเดพเดจเด•เดฎเดฒเตเดฒเต†เดจเตเดจเต เดคเต†เดณเดฟเดžเตเดžเต. เดกเต†เดตเดฒเดชเตเดชเดฑเตเดŸเต† เดญเดพเด—เดคเตเดคเตเดจเดฟเดจเตเดจเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸ เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดžเด™เตเด™เตพ เดนเต†เตฝเด‚ เดšเดพเตผเดŸเตเดŸเต เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดซเดฏเดฒเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดšเตเดšเต NOTES.txt. เด…เด™เตเด™เดจเต†, เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต‡เด•เตเด•เต เดธเต‡เดตเดจเด‚ เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดกเต†เดตเดฒเดชเตเดชเตผ GitLab เดœเต‹เดฒเดฟ เดฒเต‹เด—เดฟเตฝ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดฆเต‡เดต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต:

!!! ะ ะฐะทั€ะฐะฑะพั‚ะบะฐ ัะตั€ะฒะธัะฐ ะปะพะบะฐะปัŒะฝะพ, ะฒ ัะพัั‚ะฐะฒะต Kubernetes !!!

* ะะฐัั‚ั€ะพะนะบะฐ ะพะบั€ัƒะถะตะฝะธั
* * ะ”ะพะปะถะตะฝ ะฑั‹ั‚ัŒ ะดะพัั‚ัƒะฟ ะดะพ ะบะปะฐัั‚ะตั€ะฐ ั‡ะตั€ะตะท VPN
* * ะะฐ ะปะพะบะฐะปัŒะฝะพะผ ะŸะš ัƒัั‚ะฐะฝะพะฒะปะตะฝ kubectl ( https://kubernetes.io/docs/tasks/tools/install-kubectl/ )
* * ะŸะพะปัƒั‡ะธั‚ัŒ config-ั„ะฐะนะป ะดะปั kubectl (ัะบะพะฟะธั€ะพะฒะฐั‚ัŒ ะฒ ~/.kube/config)
* * ะะฐ ะปะพะบะฐะปัŒะฝะพะผ ะŸะš ัƒัั‚ะฐะฝะพะฒะปะตะฝ telepresence ( https://www.telepresence.io/reference/install )
* * ะ”ะพะปะถะตะฝ ะฑั‹ั‚ัŒ ัƒัั‚ะฐะฝะพะฒะปะตะฝ Docker
* * ะะตะพะฑั…ะพะดะธะผ ะดะพัั‚ัƒะฟ ัƒั€ะพะฒะฝั reporter ะธะปะธ ะฒั‹ัˆะต ะบ ั€ะตะฟะพะทะธั‚ะพั€ะธัŽ https://gitlab.site.com/group/app
* * ะะตะพะฑั…ะพะดะธะผะพ ะทะฐะปะพะณะธะฝะธั‚ัั ะฒ registry ั ะปะพะณะธะฝะพะผ/ะฟะฐั€ะพะปะตะผ ะพั‚ GitLab (ะดะตะปะฐะตั‚ัั ะพะดะธะฝ ั€ะฐะท):

#########################################################################
docker login registry.site.com
#########################################################################

* ะ—ะฐะฟัƒัะบ ะพะบั€ัƒะถะตะฝะธั

#########################################################################
telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name  }}:backend --mount=/tmp/app --docker-run -v `pwd`:/app -v /tmp/app/var/run/secrets:/var/run/secrets -ti registry.site.com/group/app/backend:v8
#########################################################################

เดˆ เดจเดฟเตผเดฆเตเดฆเต‡เดถเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดธเดฟเด•เตเด•เดฟเดฒเตเดฒ ... เด…เดตเดธเดพเดจเดคเตเดคเต‡เดคเต เด’เดดเดฟเด•เต†. เดŸเต†เดฒเดฟเดชเตเดฐเดธเตปเดธเต เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต?

เดŸเต†เดฒเดฟเดชเตเดฐเดธเตปเดธเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เด†เดฐเด‚เดญเดคเตเดคเดฟเตฝ (เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เด…เดตเดธเดพเดจ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต), เดžเด™เตเด™เตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเดจเตเดจเต:

  • เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเต;
  • เดžเด™เตเด™เตพ เดคเตเดณเดšเตเดšเตเด•เดฏเดฑเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เดชเต‡เดฐเตเด•เตพ.

เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เด“เดชเตเดทเดฃเตฝ เด†เดฃเต. เดžเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจเด‚ Kubernetes API-เดฏเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต, เดžเด™เตเด™เดณเตเดŸเต† เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเดฟเตฝ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ/เดŸเต‹เด•เตเด•เดฃเตเด•เตพ เดฎเต—เดฃเตเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด“เดชเตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• --mount=true (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ --mount=/dst_path), เด‡เดคเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เดณเตเดŸเต† เดกเต†เดธเตโ€Œเด•เตโ€ŒเดŸเต‹เดชเตเดชเดฟเดฒเต‡เด•เตเด•เต เดฑเต‚เดŸเตเดŸเต (/) เดฎเต—เดฃเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚. เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ "เด•เต€เด•เตพ" เดจเดฎเตเด•เตเด•เต (OS-เดจเต†เดฏเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต†เดฏเตเด‚ เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต) เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เด†เดฆเตเดฏเด‚, เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดธเดพเตผเดตเดคเตเดฐเดฟเด• เด“เดชเตเดทเตป เดจเต‹เด•เตเด•เดพเด‚ - เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเตฝ. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด•เต€ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ --docker-run เด•เต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดฎเตŒเดฃเตเดŸเต เดšเต†เดฏเตเดฏเตเด•: -v `pwd`:/app

เด‡เดคเต เดชเตเดฐเตŠเดœเด•เตเดฑเตเดฑเต เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจเต เดฆเดฏเดตเดพเดฏเดฟ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดกเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ เดฎเต—เดฃเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚ /app เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเตฝ.

เด…เดŸเตเดคเตเดคเดคเต: -v /tmp/app/var/run/secrets:/var/run/secrets - เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต/เดŸเต‹เด•เตเด•เตบ เด‰เดณเตเดณ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดฎเตŒเดฃเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป.

เดˆ เด“เดชเตโ€Œเดทเตป เด’เดŸเตเดตเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฑเตบ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดšเดฟเดคเตเดฐเด‚ เดชเดฟเดจเตเดคเตเดŸเดฐเตเดจเตเดจเต. NB: เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฃเด‚ CMD เด…เดฅเดตเดพ ENTRYPOINT!

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดŽเดจเตเดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚?

  • เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ, เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดชเด•เตผเดชเตเดชเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ 0 เด†เดฏเดฟ เดฎเดพเดฑเตเดฑเตเด‚. เดชเด•เดฐเด‚, เด’เดฐเต เดชเตเดคเดฟเดฏ เดตเดฟเดจเตเดฏเดพเดธเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚ - เดชเด•เดฐเด‚ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ backend.
  • เดกเต†เดธเตโ€Œเด•เตโ€ŒเดŸเต‹เดชเตเดชเดฟเตฝ 2 เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚: เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เดŸเต†เดฒเดฟเดชเตเดฐเต†เดธเต†เตปเดธเดฟเดจเตŠเดชเตเดชเด‚ (เด‡เดคเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเด‚), เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตŠเดชเตเดชเด‚.
  • เดžเด™เตเด™เตพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเด•เตโ€Œเดธเดฟเด•เต เดšเต†เดฏเตเดฏเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดตเดฟเดจเตเดฏเดพเดธ เดธเดฎเดฏเดคเตเดคเต เดนเต†เตฝเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจ เดŽเดฒเตเดฒเดพ ENV เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดญเตเดฏเดฎเดพเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เดŽเดฒเตเดฒเดพ เดธเต‡เดตเดจเด™เตเด™เดณเตเด‚ เดฒเดญเตเดฏเดฎเดพเด•เตเด‚. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ IDE-เดฏเดฟเตฝ เด•เต‹เดกเต เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดคเต เดซเดฒเด‚ เด†เดธเตเดตเดฆเดฟเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต.
  • เดœเต‹เดฒเดฟเดฏเตเดŸเต† เด…เดตเดธเดพเดจเด‚, เดจเดฟเด™เตเด™เตพ เดŸเต†เดฒเดฟเดชเตเดฐเต†เดธเต†เตปเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดŸเต†เตผเดฎเดฟเดจเตฝ เด…เดŸเดฏเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต (Ctrl + C เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต†เดทเตป เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เตเด•) - เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเดฟเตฝ เดจเดฟเตผเดคเตเดคเตเด‚, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดพเดฐเด‚เดญ เดจเดฟเดฒเดฏเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด‚. เดชเตเดฐเดคเดฟเดœเตเดžเดพเดฌเดฆเตเดงเดค, เดŽเด‚เด†เตผ เด‡เดทเตเดฏเต‚ เดšเต†เดฏเตเดฏเตเด•, เด…เดตเดฒเต‹เด•เดจเด‚/เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•/... (เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเตผเด•เตเด•เตเดซเตเดฒเต‹เด•เดณเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต)

เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฑเตบ เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ - เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพ PHP-เดฏเดฟเตฝ เด…เดฒเตเดฒ, Go- เดฏเดฟเตฝ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดชเตเดชเต‹เดดเตเด‚ เด…เดคเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต - เดŸเต†เดฒเดฟเดชเตเดฐเดธเต†เตปเดธเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚:

telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name  }}:backend --mount=true

เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป Kubernetes API เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เด•เต€ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ (https://www.telepresence.io/howto/volumes) เดฎเต—เดฃเตเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดฒเดฟเดจเด•เตเดธเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เด‰เดฃเตเดŸเต เดชเตเดฐเต‚เดŸเตเดŸเต:

proot -b $TELEPRESENCE_ROOT/var/run/secrets/:/var/run/secrets bash

เด“เดชเตเดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดŸเต†เดฒเดฟเดชเตเดฐเต†เดธเต†เตปเดธเต เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ --docker-run เดŽเดฒเตเดฒเดพ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเต† เดŸเต†เตผเดฎเดฟเดจเดฒเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเด•เตเด‚, เด…เดคเดฟเดจเดพเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด…เดคเดฟเตฝ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเดฃเด‚.

NB: เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, PHP, เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดตเดฟเดตเดฟเดง op_cache, apc, เดฎเดฑเตเดฑเต เด†เด•เตเดธเดฟเดฒเดฑเต‡เดฑเตเดฑเดฑเตเด•เตพ เดŽเดจเตเดจเดฟเดต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด“เตผเด•เตเด•เดฃเด‚ - เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เด•เต‹เดกเต เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดซเดฒเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เดซเดฒเด™เตเด™เตพ

เดˆ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดจเตเดฑเต† เดตเตเดฏเดพเดชเดจเดคเตเดคเดฟเดจเต เด†เดจเตเดชเดพเดคเดฟเด•เดฎเดพเดฏเดฟ เดตเดณเดฐเตเดจเตเดจ เด’เดฐเต เดชเตเดฐเดถเตโ€Œเดจเดฎเดพเดฃเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเตเดฎเดพเดฏเตเดณเตเดณ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดตเดฟเด•เดธเดจเด‚. เดกเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต (เดžเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต) เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดธเตเดตเต€เด•เดฐเดฟเดšเตเดšเต, เดฒเดญเตเดฏเดฎเดพเดฏ เด†เดฆเตเดฏ เดฎเดพเตผเด—เด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด…เดต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟ, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด‡เดคเต เดฆเต€เตผเด˜เด•เดพเดฒเดคเตเดคเต‡เด•เตเด•เต เดธเตเดตเดฏเด‚ เดคเต†เดณเดฟเดฏเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดฟเดฒเตเดฒ. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เด‡เดคเต เด‡เดชเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดžเด™เตเด™เตพเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เด•เต‚เดŸเตเดคเตฝ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดฎเดพเตผเด—เด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดฒเต‹เด•เดคเตเดคเต เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต, เด•เต‚เดŸเดพเดคเต† เดŸเต†เดฒเดฟเดชเตเดฐเดธเต†เตปเดธเต เด…เดตเดฏเดฟเตฝ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเดฎเดพเดฃเต (เดตเดดเดฟเดฏเดฟเตฝ, เด‰เดฃเตเดŸเต เดธเตเด•เดพเตผเดซเต‹เตพเดกเต Google-เตฝ เดจเดฟเดจเตเดจเต). เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดญเดตเด‚ เด‡เดคเตเดตเดฐเต† เด…เดคเตเดฐ เดฎเดฟเด•เดšเตเดšเดคเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด‡เดคเต เดžเด™เตเด™เดณเตเดŸเต† โ€œเดทเต‹เดชเตเดชเดฟเดฒเต† เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เตผเด•เตเด•เตโ€ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเดพเตป เด‡เดคเดฟเดจเด•เด‚ เด•เดพเดฐเดฃเด‚ เดจเตฝเด•เตเดจเตเดจเต - เด‡เดคเต เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•!

เดชเดฟ.เดŽเดธเต

K8s เดจเตเดฑเตเด™เตเด™เตเด•เดณเตเด‚ เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเด‚ เดชเดฐเดฎเตเดชเดฐเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเดฑเตเดฑเตเดณเตเดณเดต:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•