เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจชเจธ เจ…เจคเฉ‡ เจŸเฉเจฐเจฟเจ•เจธ: เจธเจฅเจพเจจเจ• เจตเจฟเจ•เจพเจธ เจ…เจคเฉ‡ เจŸเฉˆเจฒเฉ€เจชเฉเจฐเฉˆเจธเฉˆเจ‚เจธ เจฌเจพเจฐเฉ‡

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจชเจธ เจ…เจคเฉ‡ เจŸเฉเจฐเจฟเจ•เจธ: เจธเจฅเจพเจจเจ• เจตเจฟเจ•เจพเจธ เจ…เจคเฉ‡ เจŸเฉˆเจฒเฉ€เจชเฉเจฐเฉˆเจธเฉˆเจ‚เจธ เจฌเจพเจฐเฉ‡

เจธเจพเจจเฉ‚เฉฐ Kubernetes เจตเจฟเฉฑเจš เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉเฉฑเจ›เจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจกเจฟเจตเฉˆเจฒเจชเจฐ, เจ–เจพเจธ เจ•เจฐเจ•เฉ‡ เจฆเฉเจญเจพเจธเจผเฉ€เจ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจฆเฉ‡, เจ†เจชเจฃเฉ‡ เจชเจธเฉฐเจฆเฉ€เจฆเจพ 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 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 secret.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

เจตเฉ‹เจ‡เจฒเจพ: เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจตเจพเจฒเจพ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจธเฉ‡เจตเจพ เจจเจพเจฎ เจจเจพเจฒ เจœเฉเฉœ เจธเจ•เจฆเจพ เจนเฉˆ (เจ•เจฒเฉฑเจธเจŸเจฐ เจคเฉฑเจ• เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจชเจนเฉเฉฐเจš เจ•เจฟเจตเฉ‡เจ‚ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจตเฉ‡, เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฆเฉฑเจธเจฟเจ† เจนเฉˆ) เจ†เจชเจฃเฉ‡ เจกเฉˆเจธเจ•เจŸเจพเจช เจคเฉ‹เจ‚ SFTP เจฐเจพเจนเฉ€เจ‚ เจ…เจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‚เฉฐ เจกเจฟเจฒเฉ€เจตเจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเฉ‹เฅค

เจ‡เจน เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเจพ เจนเฉฑเจฒ เจนเฉˆ, เจชเจฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚ เจ‡เจธเจฆเฉ‡ เจธเจชเฉฑเจธเจผเจŸ เจจเฉเจ•เจธเจพเจจ เจนเจจ:

  • เจนเฉˆเจฒเจฎ เจšเจพเจฐเจŸ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค, เจœเฉ‹ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจชเฉœเฉเจนเจจเจพ เจฎเฉเจธเจผเจ•เจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ;
  • เจธเจฟเจฐเจซเจผ เจ‰เจธ เจตเจฟเจ…เจ•เจคเฉ€ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฟเจธเจจเฉ‡ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจนเฉˆ;
  • เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจธเจฅเจพเจจเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เจฐเจจ เจฒเจˆ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ—เจฟเฉฑเจŸ เจจเจพเจฒ เจธเจฎเจฐเจชเจฟเจค เจ•เจฐเฉ‹เฅค

2. เจŸเฉˆเจฒเฉ€เจชเฉเจฐเฉ‡เจœเจผเฉˆเจ‚เจธ

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจŸเฉˆเจฒเฉ€เจชเจฐเฉ‡เจธเจจ เจ•เจพเจซเจผเฉ€ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจ…เจธเฉ€เจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจน เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจจ, "เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš เจ‡เจธ เจจเฉ‚เฉฐ เจ—เฉฐเจญเฉ€เจฐเจคเจพ เจจเจพเจฒ เจ…เจœเจผเจฎเจพเจ‰เจฃ เจฒเจˆ เจจเจนเฉ€เจ‚ เจ†เจเฅค" เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฎเฉฐเจ— เจจเฉ‡ เจ†เจชเจฃเจพ เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ…เจจเฉเจญเจต เจจเฉ‚เฉฐ เจธเจพเจ‚เจเจพ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ–เฉเจธเจผ เจนเจพเจ‚, เจœเฉ‹ เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— เจฆเฉ‡ เจชเจพเจ เจ•เจพเจ‚ เจฒเจˆ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ - เจ–เจพเจธ เจ•เจฐเจ•เฉ‡ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจนเฉฑเจฌ 'เจคเฉ‡ เจŸเฉˆเจฒเฉ€เจชเฉเจฐเฉ‡เจธเฉˆเจ‚เจธ เจฌเจพเจฐเฉ‡ เจ•เฉ‹เจˆ เจนเฉ‹เจฐ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš, เจธเจญ เจ•เฉเจ เจ‡เฉฐเจจเจพ เจกเจฐเจพเจ‰เจฃเจพ เจจเจนเฉ€เจ‚ เจธเฉ€. เจ…เจธเฉ€เจ‚ เจ‰เจน เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฐเฉฑเจ–เฉ€เจ†เจ‚ เจœเจฟเจจเฉเจนเจพเจ‚ เจฒเจˆ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ 'เจคเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจนเฉˆเจฒเจฎ เจšเจพเจฐเจŸ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš NOTES.txt. เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจธเฉ‡เจตเจพ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจกเจฟเจตเฉˆเจฒเจชเจฐ GitLab เจœเฉŒเจฌ เจฒเฉŒเจ— เจตเจฟเฉฑเจš เจธเจฅเจพเจจเจ• dev เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจฆเฉ‡เจ–เจฆเจพ เจนเฉˆ:

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

เจธเจผเฉเจฐเฉ‚เจ†เจค 'เจคเฉ‡ (เจ‰เจชเจฐเฉ‹เจ•เจค เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจตเจฟเฉฑเจš เจฆเฉฑเจธเฉ€ เจ—เจˆ เจ†เจ–เจฐเฉ€ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ), เจ…เจธเฉ€เจ‚ เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

  • เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจฐเจตเจฟเจธ เจšเฉฑเจฒ เจฐเจนเฉ€ เจนเฉˆ;
  • เจคเฉˆเจจเจพเจคเฉ€ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ‡ เจจเจพเจฎ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจตเฉ‡เจธเจผ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจฌเจพเจ•เฉ€ เจฆเจฒเฉ€เจฒเจพเจ‚ เจตเจฟเจ•เจฒเจชเจฟเจ• เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจธเจพเจกเฉ€ เจธเฉ‡เจตเจพ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ 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 เจจเจพเจฒ เจธเจฎเจพเจชเจค เจ•เจฐเฉ‹) - เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจกเฉˆเจธเจ•เจŸเฉŒเจช 'เจคเฉ‡ เจฐเฉเจ• เจœเจพเจฃเจ—เฉ‡, เจ…เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจธเจญ เจ•เฉเจ เจ†เจชเจฃเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจœเฉ‹ เจ•เฉเจ เจฌเจšเจฟเจ† เจนเฉˆ เจ‰เจน เจนเฉˆ เจชเฉเจฐเจคเฉ€เจฌเฉฑเจง เจ•เจฐเจจเจพ, MR เจœเจพเจฐเฉ€ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฎเฉ€เจ–เจฟเจ†/เจ…เจญเฉ‡เจฆ/โ€ฆ (เจคเฉเจนเจพเจกเฉ‡ เจตเจฐเจ•เจซเจฒเฉ‹ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ) เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เจฐเจจเจพเฅค

เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ - เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ PHP เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚, เจชเจฐ Go เจตเจฟเฉฑเจš เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจซเจฟเจฐ เจตเฉ€ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ - Telepresence เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ เจนเฉ‹เจฐ เจตเฉ€ เจ†เจธเจพเจจ เจนเฉ‹เจตเฉ‡เจ—เจพ:

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

เจœเฉ‡เจ•เจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ 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 เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจเจ•เจธเจฒเฉ‡เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฏเฉ‹เจ— เจ•เจฐเจจเจพ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ - เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจ เจจเจพเจฒ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจจเจคเฉ€เจœเจพ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเฉ‡เจ—เจพเฅค

เจจเจคเฉ€เจœเฉ‡

Kubernetes เจฆเฉ‡ เจจเจพเจฒ เจธเจฅเจพเจจเจ• เจตเจฟเจ•เจพเจธ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ เจœเจฟเจธเจฆเจพ เจนเฉฑเจฒ เจ‡เจธ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฆเฉ‡ เจซเฉˆเจฒเจฃ เจฆเฉ‡ เจ…เจจเฉเจชเจพเจค เจตเจฟเฉฑเจš เจตเจง เจฐเจฟเจนเจพ เจนเฉˆ. เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ (เจธเจพเจกเฉ‡ เจ—เจพเจนเจ•เจพเจ‚ เจคเฉ‹เจ‚) เจคเฉ‹เจ‚ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเฉ‡ เจ‰เจชเจฒเจฌเจง เจธเจพเจงเจจเจพเจ‚ เจจเจพเจฒ เจนเฉฑเจฒ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ, เจœเฉ‹ เจ•เจฟ, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจธเจพเจฌเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เฉ‡เฅค เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ‡เจน เจจเจพ เจธเจฟเจฐเจซ เจนเฉเจฃ เจ…เจคเฉ‡ เจจเจพ เจธเจฟเจฐเจซ เจธเจพเจกเฉ‡ เจฒเจˆ เจธเจชเฉฑเจธเจผเจŸ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจนเฉ‹เจฐ เจขเฉเจ•เจตเฉ‡เจ‚ เจธเจพเจงเจจ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฆเฉเจจเฉ€เจ† เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹ เจšเฉเฉฑเจ•เฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจŸเฉˆเจฒเฉ€เจชเฉเจฐเฉ‡เจธเฉˆเจ‚เจธ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจฎเจธเจผเจนเฉ‚เจฐ เจนเฉˆ (เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจ‰เฉฑเจฅเฉ‡ เจตเฉ€ เจนเฉˆ. เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจ—เฉ‚เจ—เจฒ เจคเฉ‹เจ‚). เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจธเจพเจกเจพ เจคเจœเจฐเจฌเจพ เจ…เจœเฉ‡ เจ‡เฉฐเจจเจพ เจตเจงเฉ€เจ† เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เจน เจธเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ "เจฆเฉเจ•เจพเจจ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจธเจพเจฅเฉ€เจ†เจ‚" เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจธเจฟเจซเจผเจพเจฐเจธเจผ เจ•เจฐเจจ เจฆเจพ เจ•เจพเจฐเจจ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ - เจ‡เจธเจจเฉ‚เฉฐ เจ…เจœเจผเจฎเจพเจ“!

PS

K8s เจŸเจฟเจชเจธ เจ…เจคเฉ‡ เจŸเฉเจฐเจฟเจ•เจธ เจธเฉ€เจฐเฉ€เจœเจผ เจคเฉ‹เจ‚ เจนเฉ‹เจฐ:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹