เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เปเบฅเบฐ Telepresence

เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เปเบฅเบฐ Telepresence

เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบ–เบฒเบกเบซเบผเบฒเบเบ‚เบถเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ microservices เปƒเบ™ Kubernetes. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบžเบฒเบชเบฒเบ—เบตเปˆเบ–เบทเบเบ•เบตเบ„เบงเบฒเบก, เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เป„เบงเปƒเบ™ IDE เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบกเบฑเบเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ / เบ™เปเบฒเปƒเบŠเป‰ - เบžเบฝเบ‡เปเบ•เปˆเบเบปเบ”เบ›เบธเปˆเบก F5. เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบกเบฒเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ monolithic, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ (เปƒเบ™ Docker, VirtualBox ... ), เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบฑเบ™เบ—เบตเบกเบตเบ„เบงเบฒเบกเบชเบธเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ”เป‰เบงเบเบเบฒเบ™เบ•เบฑเบ”เบ‚เบญเบ‡ monoliths เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ microservices เปเบฅเบฐเบเบฒเบ™เบกเบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡ Kubernetes, เบ”เป‰เบงเบเบฎเบนเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡. เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบ. เบซเบผเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบ. เป€เบžเบทเปˆเบญเป€เบžเบตเบ”เป€เบžเบตเบ™เบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเบปเบเบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบชเบญเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต Docker, เปเบฅเบฐเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเปเปˆเบกเบตเบซเบผเบฒเบเบเบงเปˆเบฒเบญเบฒเบเปเบเบฑเบช ... เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเบฑเบเบชเบฒเปƒเบซเป‰เบ—เบฑเบ™เบชเบฐเป„เบซเบก. .

เปƒเบ™เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปเบฅเบฐเบ‚เป‰เบญเบเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบชเบฐเบชเบปเบกเบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆ "เป„เบกเป‰เบ„เป‰เบญเบ™เป€เบ—เบปเป‰เบฒ".

1. เป„เบกเป‰เบ„เป‰เบญเบ™

IDE เบชเปˆเบงเบ™เปƒเบซเบเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เป‚เบ”เบเบเบปเบ‡เปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเป‚เบ”เบเปƒเบŠเป‰ FTP/SFTP. เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡เบซเบผเบฒเบเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ™เบ—เบตเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™. เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เบกเบฑเบ™เบ•เบปเป‰เบกเบฅเบปเบ‡เป„เบ›เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เปƒเบ™เบเบฑเบเบ‚เบญเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ (dev/review), เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบกเปˆเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ”เป‰เบงเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ SSH เปเบฅเบฐเบชเบปเปˆเบ‡เบ•เปเปˆเบฅเบฐเบซเบฑเบ” SSH เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบนเป‰เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” / เบ™เปเบฒเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™.
  2. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™ init (เบžเบฒเบเปƒเบ™เบšเบฑเบ™เบˆเบธ prepare-app) เป‚เบญเบ™เบฅเบฐเบซเบฑเบ”เป„เบ› emptyDirเป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฅเบฐเบซเบฑเบ”เบˆเบฒเบเบ•เบปเบงเบšเบฑเบ™เบˆเบธเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ เปเบฅเบฐเป€เบŠเบตเบšเป€เบงเบต SSH.

เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เปเบฅเบฐ Telepresence

เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ”เบตเบ‚เบถเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบชเบฐเบซเบ™เบญเบ‡เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ YAML เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบ™ Kubernetes.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ

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

Voila: เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบนเป‰เบ—เบตเปˆเป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบŠเบทเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ (เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ cluster เบขเปˆเบฒเบ‡เบ›เบญเบ”เป„เบž, เบžเบงเบเป€เบฎเบปเบฒเบšเบญเบเปเบฅเป‰เบง) เบˆเบฒเบ desktop เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบœเปˆเบฒเบ™ SFTP เปเบฅเบฐเปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบกเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบเบธเปˆเบก.

เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ—เบตเปˆโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบชเบปเบกโ€‹เบšเบนเบ™โ€‹, เปเบ•เปˆโ€‹เบˆเบฒเบโ€‹เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบกเบฑเบ™โ€‹เบกเบตโ€‹เบ‚เปเป‰โ€‹เป€เบชเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปเบˆเป‰เบ‡โ€‹:

  • เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ Helm, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”;
  • เบชเบฒเบกเบฒเบ”เบ™เบณเปƒเบŠเป‰เป„เบ”เป‰เป‚เบ”เบเบœเบนเป‰เบ—เบตเปˆเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™;
  • เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบทเปˆเบˆเปเบฒเบ—เบตเปˆเบˆเบฐ synchronize เบกเบฑเบ™เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบเบฑเบš Git.

2. Telepresence

เป‚เบ„เบ‡เบเบฒเบ™ เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบ—เบฒเบ‡เป„เบ เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒ, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒ, "เบšเปเปˆเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”." เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ•เบปเบ™เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบเบดเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบเบฑเบšเบœเบนเป‰เบญเปˆเบฒเบ™เบ‚เบญเบ‡ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ - เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบกเบตเบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เบญเบทเปˆเบ™เป†เบเปˆเบฝเบงเบเบฑเบš Telepresence เปƒเบ™เบชเบนเบ™เบเบฒเบ‡เป€เบ—เบทเปˆเบญ.

เปƒเบ™เบชเบฑเป‰เบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบšเปเปˆเป€เบ›เบฑเบ™เบ•เบฒเบขเป‰เบฒเบ™เบซเบผเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบงเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เป„เบŸเบฅเปŒเบ‚เปเป‰เบ„เบงเบฒเบก Helm เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบงเปˆเบฒ NOTES.txt. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบเบฑเบš Kubernetes, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบซเบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก dev เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบงเบฝเบ 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
#########################################################################

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เปƒเบ™โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบ™เบตเป‰ ... เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบ‚เบญเบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹. เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง Telepresence?

เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Telepresence

เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡), เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”:

  • namespace เบ—เบตเปˆ microservice เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™;
  • เบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบฅเบฐเบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบˆเบฒเบฐ.

เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ–เป‰เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบปเบงเบžเบฑเบ™เบเบฑเบš เปเบฅเบฐเบชเปเบฒเบฅเบฑเบš Kubernetes API เบชเป‰เบฒเบ‡เบšเบฑเบ™เบŠเบตเบšเปเบฅเบดเบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰ mount เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ / tokens เปƒเบ™ desktop เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ --mount=true (เบซเบผเบท --mount=/dst_path), เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ•เบดเบ”เบฎเบฒเบ (/) เบˆเบฒเบเบ–เบฑเบ‡ Kubernetes เป„เบ›เบซเบฒ desktop เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ” (เบ‚เบถเป‰เบ™เบเบฑเบš OS เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™) เปƒเบŠเป‰ "เบเบฐเปเบˆ" เบˆเบฒเบเบเบธเปˆเบก.

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ - เปƒเบ™ Docker container. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™ --docker-run เปเบฅเบฐเบ•เบดเบ”เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เปƒเบชเปˆเปƒเบ™เบšเบฑเบ™เบˆเบธ: -v `pwd`:/app

เบเบฐโ€‹เบฅเบธโ€‹เบ™เบฒโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบงเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบชเบปเบกโ€‹เบกเบธเบ”โ€‹เบงเปˆเบฒโ€‹เปเบฅเปˆเบ™โ€‹เบˆเบฒเบโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹. เบฅเบฐเบซเบฑเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต /app เปƒเบ™เบ–เบฑเบ‡.

เบ•เปเปˆเป„เบ›: -v /tmp/app/var/run/secrets:/var/run/secrets โ€” เป€เบžเบทเปˆเบญเบ•เบดเบ”เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เป‰เบงเบเปƒเบšเบฎเบฑเบšเบฎเบญเบ‡/เป‚เบ—เป€เบ„เบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฑเบ‡.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. NB: เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ CMD เบซเบผเบท ENTRYPOINT!

เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เปเบ™เปˆเบ™เบญเบ™เบ•เปเปˆเป„เบ›?

  • เปƒเบ™ Kubernetes, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰, เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ replicas เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ 0. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เปƒเบซเบกเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบง - เบกเบตเบ•เบปเบงเบšเบฑเบ™เบˆเบธเบ—เบปเบ”เปเบ—เบ™. backend.
  • 2 containers เบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™ desktop: เบ—เปเบฒเบญเบดเบ”เบเบฑเบš Telepresence (เบกเบฑเบ™เบˆเบฐ proxy เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบ / เบเบฑเบš Kubernetes), เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ.
  • เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฑเบ‡เบ—เบตเปˆเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบปเบงเปเบ› ENV เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป‚เบญเบ™เป‚เบ”เบ Helm เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เบˆเบฐเบกเบตเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบกเบตเบขเบนเปˆ. เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เปƒเบ™ IDE เบ—เบตเปˆเบ—เปˆเบฒเบ™เบกเบฑเบเปเบฅเบฐเป€เบžเบตเบ”เป€เบžเบตเบ™เบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.
  • เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบดเบ” terminal เบ—เบตเปˆ Telepresence เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ (เบขเบธเบ”เป€เบŠเบ”เบŠเบฑเบ™เบ”เป‰เบงเบ Ctrl+C) - Docker containers เบˆเบฐเบขเบธเบ”เบขเบนเปˆเปƒเบ™ desktop, เปเบฅเบฐเปƒเบ™ Kubernetes เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเบชเบฐเบžเบฒเบšเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบกเบฑเบ™. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ, เบญเบญเบ MR เปเบฅเบฐเป‚เบญเบ™เปƒเบซเป‰เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™ / merge / ... (เบ‚เบถเป‰เบ™เบเบฑเบš workflows เบ‚เบญเบ‡เบ—เปˆเบฒเบ™).

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ Docker container - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบžเบฑเบ”เบ—เบฐเบ™เบฒเบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™ PHP, เปเบ•เปˆเปƒเบ™ Go, เปเบฅเบฐเบเบฑเบ‡เบชเป‰เบฒเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ - เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง Telepresence เบˆเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒ:

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

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบ›เบตเบ”เบ•เบปเบง Telepresence เป‚เบ”เบเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบ --docker-run เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบกเบตเบขเบนเปˆเปƒเบ™ terminal เบ›เบฐเบˆเบธเบšเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบกเบฑเบ™.

NB: เป€เบกเบทเปˆเบญเปƒเบŠเป‰, เบ•เบปเบงเบขเปˆเบฒเบ‡, PHP, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบˆเบทเปˆเบˆเปเบฒเบ—เบตเปˆเบˆเบฐเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ op_cache เบ•เปˆเบฒเบ‡เป†, apc เปเบฅเบฐเบ•เบปเบงเป€เบฅเบฑเปˆเบ‡เบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ - เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เบˆเบฐเบšเปเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบเบฑเบš Kubernetes เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเปƒเบ™เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเบ‚เบญเบ‡เป€เบงเบ—เบตเบ™เบตเป‰. เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบˆเบฒเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ (เบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ), เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเปเบเป‰เป„เบ‚เบžเบงเบเบกเบฑเบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆ, เป€เบŠเบดเปˆเบ‡, เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเปเปˆเป„เบ”เป‰เบžเบดเบชเบนเบ”เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง. เป‚เบŠเบเบ”เบต, เบ™เบตเป‰เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบฅเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เบชเบฐเบ™เบฑเป‰เบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบซเบผเบฒเบเป„เบ”เป‰เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป‚เบฅเบ, เปเบฅเบฐ Telepresence เปเบกเปˆเบ™เบกเบตเบŠเบทเปˆเบชเบฝเบ‡เบ—เบตเปˆเบชเบธเบ” (เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบเบฑเบ‡เบกเบต. skaffold เบˆเบฒเบ Google). เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบ”เบตเบซเบผเบฒเบ, เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบˆเบฐเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰ "เป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เปƒเบ™เบฎเป‰เบฒเบ™" เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ - เบฅเบญเบ‡เบกเบฑเบ™!

PS

เบญเบทเปˆเบ™เป†เบˆเบฒเบเบŠเบธเบ”เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบšเบ‚เบญเบ‡ K8s:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™