เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซ€เชชเซเชธ เช…เชจเซ‡ เชฏเซเช•เซเชคเชฟเช“: เชธเซเชฅเชพเชจเชฟเช• เชตเชฟเช•เชพเชธ เช…เชจเซ‡ เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ เชตเชฟเชถเซ‡

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซ€เชชเซเชธ เช…เชจเซ‡ เชฏเซเช•เซเชคเชฟเช“: เชธเซเชฅเชพเชจเชฟเช• เชตเชฟเช•เชพเชธ เช…เชจเซ‡ เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ เชตเชฟเชถเซ‡

เช…เชฎเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชตเชฟเช•เชธเชพเชตเชตเชพ เชตเชฟเชถเซ‡ เชตเชงเซเชจเซ‡ เชตเชงเซ เชชเซ‚เช›เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เช•เชฐเชพเชฏเซ‡เชฒ เชญเชพเชทเชพเช“เชจเชพ, เชคเซ‡เชฎเชจเชพ เชฎเชจเชชเชธเช‚เชฆ IDE เชฎเชพเช‚ เช•เซ‹เชกเชจเซ‡ เชเชกเชชเชฅเซ€ เชธเซเชงเชพเชฐเชตเชพ เช…เชจเซ‡ เชฌเชฟเชฒเซเชก/เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸเชจเซ€ เชฐเชพเชน เชœเซ‹เชฏเชพ เชตเชฟเชจเชพ เชชเชฐเชฟเชฃเชพเชฎ เชœเซ‹เชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡ - เชซเช•เซเชค F5 เชฆเชฌเชพเชตเซ€เชจเซ‡. เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‹เชจเซ‹เชฒเชฟเชฅเชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชตเชพเชค เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชจเซ‡ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเชคเซเช‚ (เชกเซ‹เช•เชฐ, เชตเชฐเซเชšเซเชฏเซเช…เชฒเชฌเซ‹เช•เซเชธเชฎเชพเช‚...), เช…เชจเซ‡ เชชเช›เซ€ เชคเชฐเชค เชœ เชตเชฟเช•เชพเชธเชจเซ‹ เช†เชจเช‚เชฆ เชฎเชพเชฃเซ‹. เชฎเซ‹เชจเซ‹เชฒเชฟเชฅเซเชธเชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชฎเชพเช‚ เช•เชพเชชเชตเชพ เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เช†เช—เชฎเชจ เชธเชพเชฅเซ‡, เชเช•เชฌเซ€เชœเชพ เชชเชฐ เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเชพ เชฆเซ‡เช–เชพเชต เชธเชพเชฅเซ‡, เชฌเชงเซเช‚ เชคเซ‡ เชฅเซ‹เชกเซเช‚ เชตเชงเชพเชฐเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชจเซเชฏเซเช‚. เช†เชฎเชพเช‚ เชœเซ‡เชŸเชฒเซ€ เชฎเชพเชˆเช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ เชตเชงเชพเชฐเซ‡ เช›เซ‡, เชคเซ‡เชŸเชฒเซ€ เชตเชงเซ เชธเชฎเชธเซเชฏเชพเช“. เชซเชฐเซ€เชฅเซ€ เชตเชฟเช•เชพเชธเชจเซ‹ เช†เชจเช‚เชฆ เชฎเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชเช• เช•เซ‡ เชฌเซ‡ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชŠเชญเชพ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชเช• เชกเชเชจเชฅเซ€ เชชเชฃ เชตเชงเซ... เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช† เชฌเชงเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชฒเชพเช—เซ€ เชถเช•เซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชจเซ‡ เช…เชฆเซเชฏเชคเชจ เชฐเชพเช–เชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เช›เซ‡. .

เชœเซเชฆเชพ เชœเซเชฆเชพ เชธเชฎเชฏเซ‡ เช…เชฎเซ‡ เชธเชฎเชธเซเชฏเชพเชจเชพ เชตเชฟเชตเชฟเชง เช‰เช•เซ‡เชฒเซ‹ เช…เชœเชฎเชพเชตเซเชฏเชพ. เช…เชจเซ‡ เชนเซเช‚ เชธเช‚เชšเชฟเชค เชตเชฐเซเช•เช…เชฐเชพเช‰เชจเซเชกเซเชธ เช…เชฅเชตเชพ เชซเช•เซเชค "เช•เซเชฐเชš" เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€เชถ.

1. เช•เซเชฐเซ‡เชš

เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ IDEs เชชเชพเชธเซ‡ FTP/SFTP เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซ€เชงเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เช•เซ‹เชกเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชนเซ‹เชฏ เช›เซ‡. เช† เชฐเชธเซเชคเซ‹ เช–เซ‚เชฌ เชœ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เชคเชฐเชค เชœ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชคเซ‡เชจเซ‹ เชธเชพเชฐ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช‰เช•เชณเซ‡ เช›เซ‡:

  1. เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸเซเชธ (เชฆเซ‡เชต/เชธเชฎเซ€เช•เซเชทเชพ)เชจเชพ เชชเซ‹เชกเชฎเชพเช‚ SSH เชเช•เซเชธเซ‡เชธ เชธเชพเชฅเซ‡ เชเช• เชตเชงเชพเชฐเชพเชจเซเช‚ เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชกเซ‡เชตเชฒเชชเชฐเชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• SSH เช•เซ€เชจเซ‡ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เชฎเชฟเชŸ/เชกเชฟเชชเซเชฒเซ‹เชฏ เช•เชฐเชถเซ‡.
  2. เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชคเชฌเช•เซเช•เซ‡ (เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ prepare-app) เชชเชฐ เช•เซ‹เชก เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเซ‹ emptyDirเชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชจเซ‡ SSH เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เช•เซ‹เชกเชจเซ€ เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซ€เชชเซเชธ เช…เชจเซ‡ เชฏเซเช•เซเชคเชฟเช“: เชธเซเชฅเชพเชจเชฟเช• เชตเชฟเช•เชพเชธ เช…เชจเซ‡ เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ เชตเชฟเชถเซ‡

เช†เชตเซ€ เชฏเซ‹เชœเชจเชพเชจเชพ เชคเช•เชจเซ€เช•เซ€ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชธเชพเชฎเซ‡เชฒ YAML เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹เชจเชพ เชŸเซเช•เชกเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€เชถ.

เช•เซ‹เชจเซเชซเซ€เช—เซเชฏเซเชฐเชพเชธเซ€

1.1. values.yaml

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

เชคเซ‡ vasya.pupkin เชšเชฒเชจเซ€ เช•เชฟเช‚เชฎเชค เช›เซ‡ ${GITLAB_USER_LOGIN}.

1.2. เชœเชฎเชพเชตเชŸ.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. เช—เซเชชเซเชค.เชฏเชพเชฎเชฒ

{{ 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

เชตเซ‹เชˆเชฒเชพ: เชกเซ‡เชตเชฒเชชเชฐ เชœเซ‡เชฃเซ‡ เชœเชฎเชพเชตเชŸ เชถเชฐเซ‚ เช•เชฐเซ€ เช›เซ‡ เชคเซ‡ เชธเซ‡เชตเชพเชจเชพ เชจเชพเชฎเชฅเซ€ เช•เชจเซ‡เช•เซเชŸ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ (เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชเช•เซเชธเซ‡เชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช†เชชเชตเซ€, เช…เชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชนเซเชฏเซเช‚ เช›เซ‡) เชคเชฎเชพเชฐเชพ เชกเซ‡เชธเซเช•เชŸเซ‰เชช เชชเชฐเชฅเซ€ SFTP เชฆเซเชตเชพเชฐเชพ เช…เชจเซ‡ เช•เซ‹เชกเชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชตเชฟเชคเชฐเชฟเชค เชฅเชตเชพเชจเซ€ เชฐเชพเชน เชœเซ‹เชฏเชพ เชตเชฟเชจเชพ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ‹.

เช† เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เช‰เช•เซ‡เชฒ เช›เซ‡, เชชเชฐเช‚เชคเซ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ เชคเซ‡เชจเชพ เชธเซเชชเชทเซเชŸ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ เช›เซ‡:

  • เชนเซ‡เชฒเซเชฎ เชšเชพเชฐเซเชŸเชจเซ‡ เชฐเชฟเชซเชพเช‡เชจ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค, เชœเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชตเชพเช‚เชšเชตเชพเชจเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡;
  • เชซเช•เซเชค เชคเซ‡ เชœ เชตเซเชฏเช•เซเชคเชฟ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชœเซ‡เชฃเซ‡ เชธเซ‡เชตเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡;
  • เชคเชฎเชพเชฐเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชธเชพเชฅเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช—เชฟเชŸเชฎเชพเช‚ เชฎเซ‹เช•เชฒเซ‹.

2. เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ

เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชŸเซ‡เชฒเชฟเชชเซเชฐเชฟเชจเซเชธเชจเซเชธ เชคเซ‡ เช˜เชฃเชพ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชœเชพเชฃเซ€เชคเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡, เชœเซ‡เชฎ เชคเซ‡เช“ เช•เชนเซ‡ เช›เซ‡, "เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เช—เช‚เชญเซ€เชฐเชคเชพเชฅเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชœเซเชฌเชพเชœเซ เชฎเชณเซ€ เชถเช•เซเชฏเชพ เชจเชฅเซ€." เชœเซ‹ เช•เซ‡, เชฎเชพเช‚เช—เซ‡ เชคเซ‡เชจเซเช‚ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชนเชตเซ‡ เช…เชฎเชจเซ‡ เช…เชฎเชพเชฐเซ‹ เช…เชจเซเชญเชต เชถเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชจเช‚เชฆ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช—เชจเชพ เชตเชพเชšเช•เซ‹ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ - เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชนเชฌ เชชเชฐ เชนเชœเซ เชธเซเชงเซ€ เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ เชตเชฟเชถเซ‡ เช…เชจเซเชฏ เช•เซ‹เชˆ เชธเชพเชฎเช—เซเชฐเซ€ เชจเชฅเซ€.

เชŸเซ‚เช‚เช•เชฎเชพเช‚, เชฌเชงเซเช‚ เชเชŸเชฒเซเช‚ เชกเชฐเชพเชฎเชฃเซ€ เชจ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚. เช…เชฎเซ‡ เชเชตเซ€ เชฌเชงเซ€ เช•เซเชฐเชฟเชฏเชพเช“ เชฎเซ‚เช•เซ€ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเซ‡ เชกเซ‡เชตเชฒเชชเชฐเชจเชพ เชญเชพเช— เชชเชฐ เชเช•เซเชเชฟเช•เซเชฏเซเชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เช›เซ‡ เชœเซ‡เชจเซ‡ เชนเซ‡เชฒเซเชฎ เชšเชพเชฐเซเชŸ เชŸเซ‡เช•เซเชธเซเชŸ เชซเชพเช‡เชฒ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡. NOTES.txt. เช†เชฎ, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเชฐ เชธเซ‡เชตเชพ เชœเชฎเชพเชตเซเชฏเชพ เชชเช›เซ€, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เช—เชฟเชŸเชฒเซ‡เชฌ เชœเซ‹เชฌ เชฒเซ‹เช—เชฎเชพเช‚ เชธเซเชฅเชพเชจเชฟเช• เชกเซ‡เชต เชเชจเซเชตเชพเชฐเซเชฏเชฎเซ‡เชจเซเชŸ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“ เชœเซเช เช›เซ‡:

!!! ะ ะฐะทั€ะฐะฑะพั‚ะบะฐ ัะตั€ะฒะธัะฐ ะปะพะบะฐะปัŒะฝะพ, ะฒ ัะพัั‚ะฐะฒะต 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
#########################################################################

เช…เชฎเซ‡ เช† เชธเซ‚เชšเชจเชพเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชชเช—เชฒเชพเช“ เชชเชฐ เชตเชฟเช—เชคเชตเชพเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เชถเซเช‚ เชจเชนเซ€เช‚... เช›เซ‡เชฒเซเชฒเชพ เชเช•เชจเซ‡ เชฌเชพเชฆ เช•เชฐเชคเชพเช‚. Telepresence เชจเชพ เชฒเซ‹เชจเซเชš เชฆเชฐเชฎเชฟเชฏเชพเชจ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡?

Telepresence เชธเชพเชฅเซ‡ เช•เชพเชฎ

เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชชเชฐ (เช‰เชชเชฐเชจเซ€ เชธเซ‚เชšเชจเชพเช“เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช›เซ‡เชฒเซเชฒเชพ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡), เช…เชฎเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช:

  • เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡;
  • เชœเชฎเชพเชตเชŸ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เชจเชพเชฎเซ‹ เชœเซ‡ เช…เชฎเซ‡ เชชเซเชฐเชตเซ‡เชถเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช.

เชฌเชพเช•เซ€เชจเซ€ เชฆเชฒเซ€เชฒเซ‹ เชตเซˆเช•เชฒเซเชชเชฟเช• เช›เซ‡. เชœเซ‹ เช…เชฎเชพเชฐเซ€ เชธเซ‡เชตเชพ Kubernetes API เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เชธเชฐเซเชตเชฟเชธ เชเช•เชพเช‰เชจเซเชŸ เชฌเชจเชพเชตเซเชฏเซเช‚, เช…เชฎเชพเชฐเซ‡ เช…เชฎเชพเชฐเชพ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เชชเชฐ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹/เชŸเซ‹เช•เชจเซเชธ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชตเชฟเช•เชฒเซเชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ --mount=true (เช…เชฅเชตเชพ --mount=/dst_path), เชœเซ‡ เชฐเซเชŸ (/) เชจเซ‡ Kubernetes เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚เชฅเซ€ เช…เชฎเชพเชฐเชพ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เชชเชฐ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเชถเซ‡. เช† เชชเช›เซ€, เช…เชฎเซ‡ (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 เชธเชพเชฅเซ‡ เชธเชคเซเชฐ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‹) - เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เชชเชฐ เชฌเช‚เชง เชฅเชˆ เชœเชถเซ‡, เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชฌเชงเซเช‚ เชคเซ‡เชจเซ€ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชชเชพเช›เซเช‚ เช†เชตเชถเซ‡. เชœเซ‡ เชฌเชพเช•เซ€ เช›เซ‡ เชคเซ‡ เช•เชฎเชฟเชŸ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡, MR เชœเชพเชฐเซ€ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเชฎเซ€เช•เซเชทเชพ/เชฎเชฐเซเชœ/... (เชคเชฎเชพเชฐเชพ เชตเชฐเซเช•เชซเซเชฒเซ‹ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ€เชจเซ‡) เชชเชฐ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‹.

เชœเซ‹ เช†เชชเชฃเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจ เชนเซ‹เชˆเช - เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชฎเซ‡ PHP เชฎเชพเช‚ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เช—เซ‹เชฎเชพเช‚ เชตเชฟเช•เชพเชธ เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ เชคเซ‡เชฎ เช›เชคเชพเช‚ เชคเซ‡เชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ€เช เช›เซ€เช - เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชจเซเช‚ เชตเชงเซ เชธเชฐเชณ เชนเชถเซ‡:

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

เชœเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ Kubernetes API เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เช•เซ€ เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ (https://www.telepresence.io/howto/volumes). Linux เชฎเชพเชŸเซ‡ เชเช• เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เช›เซ‡ เชฎเซ‚เชณ:

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

เชตเชฟเช•เชฒเซเชช เชตเช—เชฐ เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ เชฒเซ‹เชจเซเชš เช•เชฐเซเชฏเชพ เชชเช›เซ€ --docker-run เชคเชฎเชพเชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชตเชฐเซเชคเชฎเชพเชจ เชŸเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เชนเชถเซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชถเชฐเซ‚ เช•เชฐเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡.

NB: เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, PHP, เชคเชฎเชพเชฐเซ‡ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เชตเชฟเชตเชฟเชง op_cache, apc เช…เชจเซ‡ เช…เชจเซเชฏ เชเช•เซเชธเชฟเชฒเชฐเซ‡เชŸเชฐเซเชธเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชฏเชพเชฆ เชฐเชพเช–เชตเซเช‚ เชœเซ‹เชˆเช - เช…เชจเซเชฏเชฅเชพ เช•เซ‹เชกเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชฅเซ€ เช‡เชšเซเช›เชฟเชค เชชเชฐเชฟเชฃเชพเชฎ เชฎเชณเชถเซ‡ เชจเชนเซ€เช‚.

เชชเชฐเชฟเชฃเชพเชฎเซ‹

Kubernetes เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชตเชฟเช•เชพเชธ เช เชเช• เชธเชฎเชธเซเชฏเชพ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เช•เซ‡เชฒ เช† เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเชจเซ‡ เช…เชชเชจเชพเชตเชตเชพเชจเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชตเชงเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡. เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ (เช…เชฎเชพเชฐเชพ เช—เซเชฐเชพเชนเช•เซ‹ เชชเชพเชธเซ‡เชฅเซ€) เชธเช‚เชฌเช‚เชงเชฟเชค เชตเชฟเชจเช‚เชคเซ€เช“ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชจเซ‡, เช…เชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชชเซเชฐเชฅเชฎ เช‰เชชเชฒเชฌเซเชง เชฎเชพเชงเซเชฏเชฎเซ‹เชฅเซ€ เชนเชฒ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚, เชœเซ‡, เชœเซ‹เช•เซ‡, เชฒเชพเช‚เชฌเชพ เช…เช‚เชคเชฐ เชชเชฐ เชชเซ‹เชคเชพเชจเซ‡ เชธเชพเชฌเชฟเชค เช•เชฐเซ€ เชถเช•เซเชฏเซเช‚ เชจเชนเซ€เช‚. เชธเชฆเชญเชพเช—เซเชฏเซ‡, เช† เชซเช•เซเชค เชนเชตเซ‡ เชœ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชซเช•เซเชค เช†เชชเชฃเชพ เชฎเชพเชŸเซ‡ เชœ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชตเชงเซ เชฏเซ‹เช—เซเชฏ เชฎเชพเชงเซเชฏเชฎเซ‹ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชตเชฟเชถเซเชตเชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏเชพ เช›เซ‡, เช…เชจเซ‡ เชŸเซ‡เชฒเชฟเชชเซเชฐเซ‡เชเชจเซเชธ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชธเซŒเชฅเซ€ เชชเซเชฐเช–เซเชฏเชพเชค เช›เซ‡ (เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เชคเซเชฏเชพเช‚ เชชเชฃ เช›เซ‡. เชธเซเช•เชพเชซเซ‹เชฒเซเชก Google เชฎเชพเช‚เชฅเซ€). เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช…เชฎเชพเชฐเซ‹ เช…เชจเซเชญเชต เชนเชœเซ€ เชเชŸเชฒเซ‹ เชฎเชนเชพเชจ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เช…เชฎเชจเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช…เชฎเชพเชฐเชพ "เชฆเซเช•เชพเชจเชฎเชพเช‚ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹" เชจเซ‡ เชคเซ‡เชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ - เชคเซ‡เชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹!

PS

K8s เชŸเซ€เชชเซเชธ เช…เชจเซ‡ เชฏเซเช•เซเชคเชฟเช“ เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚เชฅเซ€ เช…เชจเซเชฏ:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹