Kubernetes-แƒ˜แƒก แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜: แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒšแƒ”แƒงแƒแƒคแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

Kubernetes-แƒ˜แƒก แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜: แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒšแƒ”แƒงแƒแƒคแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒฉแƒ•แƒ”แƒœ แƒกแƒฃแƒš แƒฃแƒคแƒ แƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ’แƒ•แƒ”แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜แƒแƒœ Kubernetes-แƒจแƒ˜ แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒœแƒขแƒ”แƒ แƒžแƒ แƒ”แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ”แƒœแƒ”แƒ‘แƒ˜แƒก, แƒกแƒฃแƒ แƒ— แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒจแƒ”แƒแƒกแƒฌแƒแƒ แƒแƒœ แƒ™แƒแƒ“แƒ˜ แƒ›แƒแƒ— แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒš IDE-แƒจแƒ˜ แƒ“แƒ แƒœแƒแƒฎแƒแƒœ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ build/deployment-แƒ˜แƒก แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” - แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ F5-แƒ–แƒ” แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—. แƒ“แƒ แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒšแƒ˜แƒ—แƒฃแƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก, แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒงแƒ แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒแƒ“ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ“แƒ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ (Docker-แƒจแƒ˜, VirtualBox...) แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ˜แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒแƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒแƒœแƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒแƒ“ แƒ“แƒแƒญแƒ แƒ˜แƒ— แƒ“แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ›แƒแƒกแƒ•แƒšแƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ–แƒ” แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒ—, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒชแƒแƒขแƒ แƒ’แƒแƒ แƒ—แƒฃแƒšแƒ“แƒ. แƒ แƒแƒช แƒ›แƒ”แƒขแƒ˜แƒ แƒ”แƒก แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜, แƒ›แƒ˜แƒ— แƒ›แƒ”แƒขแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ. แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ”แƒ แƒ— แƒแƒœ แƒแƒ แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒแƒฌแƒ”แƒ•แƒ, แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒ™แƒ˜ แƒแƒ—แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜... แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒแƒก แƒแƒกแƒ”แƒ•แƒ” แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ. .

แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ“แƒ แƒแƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ“แƒ˜แƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒแƒก. แƒ“แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘ แƒ“แƒแƒ’แƒ แƒแƒ•แƒ˜แƒšแƒ˜ แƒ’แƒแƒ“แƒแƒญแƒ แƒ˜แƒ— แƒแƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ "แƒงแƒแƒ•แƒแƒ แƒฏแƒœแƒ”แƒ‘แƒ˜แƒ—".

1. แƒฎแƒ”แƒšแƒฏแƒแƒฎแƒ”แƒ‘แƒ˜

IDE-แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒแƒก แƒแƒฅแƒ•แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒœ แƒ™แƒแƒ“แƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” FTP/SFTP แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ”แƒก แƒ’แƒ–แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒแƒจแƒ™แƒแƒ แƒแƒ แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ›แƒ˜แƒกแƒ˜ แƒแƒ แƒกแƒ˜ แƒ”แƒ›แƒงแƒแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒก:

  1. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ (แƒ“แƒ”แƒ•/แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ) แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ SSH แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ— แƒ“แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ SSH แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก/แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒก.
  2. แƒกแƒแƒฌแƒงแƒ˜แƒก แƒ”แƒขแƒแƒžแƒ–แƒ” (แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— prepare-app) แƒ’แƒแƒ“แƒแƒ˜แƒขแƒแƒœแƒ”แƒ— แƒ™แƒแƒ“แƒ˜ emptyDirแƒ แƒแƒ› แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ™แƒแƒ“แƒ–แƒ” แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ“แƒ SSH แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ.

Kubernetes-แƒ˜แƒก แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜: แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒšแƒ”แƒงแƒแƒคแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒฃแƒ™แƒ”แƒ— แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒ›แƒ” แƒจแƒ”แƒ›แƒแƒ’แƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒ— แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜ YAML แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก Kubernetes-แƒจแƒ˜.

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜

1.1. แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜.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

Voila: แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ, แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— (แƒ แƒแƒ’แƒแƒ  แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ“ แƒ›แƒ˜แƒแƒœแƒ˜แƒญแƒแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ”, แƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ•แƒฃแƒ—แƒฎแƒแƒ แƒ˜แƒ—) แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ“แƒ”แƒกแƒ™แƒขแƒแƒžแƒ˜แƒ“แƒแƒœ SFTP-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ“แƒแƒแƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ— แƒ™แƒแƒ“แƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ›แƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ— แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒแƒจแƒ™แƒแƒ แƒ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ”แƒ”แƒ‘แƒ˜:

  • Helm แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ, แƒ แƒแƒช แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒก แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก;
  • แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜;
  • แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ˜แƒ›แƒแƒฎแƒกแƒแƒ•แƒ แƒแƒ—, แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒกแƒ—แƒแƒœ แƒ™แƒแƒ“แƒ˜แƒ— แƒ“แƒ แƒฉแƒแƒแƒ‘แƒแƒ แƒแƒ— แƒ˜แƒ’แƒ˜ Git-แƒ–แƒ”.

2. แƒขแƒ”แƒšแƒ”แƒแƒ แƒกแƒ”แƒ‘แƒ

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒขแƒ”แƒšแƒ”แƒžแƒ แƒ”แƒกแƒ”แƒœแƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒแƒœแƒ˜แƒ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ›แƒ‘แƒแƒ‘แƒ”แƒœ, "แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒกแƒ”แƒ แƒ˜แƒแƒ–แƒฃแƒšแƒแƒ“ แƒแƒ  แƒ’แƒแƒ›แƒแƒ’แƒ•แƒ”แƒชแƒแƒ“แƒ". แƒ—แƒฃแƒ›แƒชแƒ, แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒ› แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒกแƒแƒฅแƒ›แƒ” แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ แƒ“แƒ แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒฎแƒแƒ แƒฃแƒšแƒ˜ แƒ•แƒแƒ แƒ— แƒ’แƒแƒ’แƒ˜แƒ–แƒ˜แƒแƒ แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒงแƒแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ‘แƒšแƒแƒ’แƒ˜แƒก แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - แƒ›แƒ˜แƒ— แƒฃแƒ›แƒ”แƒขแƒ”แƒก, แƒ แƒแƒ› แƒขแƒ”แƒšแƒ”แƒžแƒ แƒ”แƒกแƒ”แƒœแƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜ แƒฏแƒ”แƒ  แƒแƒ  แƒงแƒแƒคแƒ˜แƒšแƒ แƒฐแƒแƒ‘แƒ–แƒ”.

แƒ›แƒแƒ™แƒšแƒ”แƒ“, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒ แƒช แƒ˜แƒกแƒ” แƒกแƒแƒจแƒ˜แƒœแƒ”แƒšแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ“แƒแƒœ Helm chart แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ  แƒคแƒแƒ˜แƒšแƒจแƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— NOTES.txt. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, Kubernetes-แƒ–แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒฎแƒ”แƒ“แƒแƒ•แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก 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-แƒ—แƒแƒœ

แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก (แƒ–แƒ”แƒ›แƒแƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒแƒšแƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—), แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ—:

  • แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก;
  • แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒจแƒ˜แƒช แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒจแƒ”แƒฆแƒฌแƒ”แƒ•แƒ.

แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒ—แƒ˜แƒ. แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก Kubernetes API-แƒกแƒ—แƒแƒœ แƒ“แƒ แƒ›แƒแƒกแƒ–แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒแƒ— แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜/แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒ–แƒ”. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ --mount=true (แƒแƒœ --mount=/dst_path), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒก แƒคแƒ”แƒกแƒ•แƒก (/) Kubernetes แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒ–แƒ”. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ (แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ OS-แƒ“แƒแƒœ แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜) แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒ“แƒแƒœ โ€žแƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜โ€œ.

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฃแƒœแƒ˜แƒ•แƒ”แƒ แƒกแƒแƒšแƒฃแƒ  แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒก - Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒก --docker-run แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒ— แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜: -v `pwd`:/app

แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒ”แƒก แƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒ“แƒแƒœ. แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ“แƒ”แƒ‘แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ /app แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜: -v /tmp/app/var/run/secrets:/var/run/secrets โ€” แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก/แƒŸแƒ”แƒขแƒแƒœแƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒฉแƒแƒกแƒแƒ แƒ—แƒแƒ•แƒแƒ“.

แƒแƒ› แƒแƒคแƒชแƒ˜แƒแƒก แƒ‘แƒแƒšแƒแƒก แƒ›แƒแƒฐแƒงแƒ•แƒ”แƒ‘แƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. NB: แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— CMD แƒแƒœ ENTRYPOINT!

แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒแƒ“ แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’?

  • Kubernetes-แƒจแƒ˜, แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒกแƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ 0-แƒ›แƒ“แƒ”. แƒแƒ›แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ“แƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ Deployment - แƒจแƒ”แƒ›แƒชแƒ•แƒšแƒ”แƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒ—. backend.
  • แƒ“แƒ”แƒกแƒ™แƒขแƒแƒžแƒ–แƒ” 2 แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ“แƒ”แƒ‘แƒ: แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ Telepresence-แƒ˜แƒ— (แƒ˜แƒก แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒ˜แƒ“แƒแƒœ/แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒžแƒ แƒแƒฅแƒกแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒ—), แƒ›แƒ”แƒแƒ แƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒ—.
  • แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก, แƒ›แƒแƒจแƒ˜แƒœ Helm-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ ENV แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜. แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒแƒ“แƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒš IDE-แƒจแƒ˜ แƒ“แƒ แƒ˜แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ— แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒ—.
  • แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฎแƒฃแƒ แƒแƒ— แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช Telepresence แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก (แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ— แƒกแƒ”แƒกแƒ˜แƒ Ctrl+C-แƒ˜แƒ—) - Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ’แƒแƒฉแƒ”แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒ–แƒ”, แƒฎแƒแƒšแƒ Kubernetes-แƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒกแƒแƒฌแƒงแƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒแƒก. แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฉแƒแƒ“แƒ”แƒœแƒ, MR-แƒ˜แƒก แƒ’แƒแƒชแƒ”แƒ›แƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒก/แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก/โ€ฆ (แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ).

แƒ—แƒฃ แƒแƒ  แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ - แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ˜แƒ— แƒแƒ แƒ 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 แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒกแƒจแƒ˜ แƒฃแƒœแƒ“แƒ แƒแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ“แƒ”แƒก.

NB: แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, PHP-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ op_cache, apc แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒแƒ›แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒจแƒ”แƒ“แƒ”แƒ’แƒก.

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ Kubernetes-แƒ—แƒแƒœ แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒแƒช แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒ› แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ˜แƒก แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒžแƒแƒ แƒชแƒ˜แƒฃแƒšแƒแƒ“. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ (แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ) แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒญแƒ แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒช, แƒ—แƒฃแƒ›แƒชแƒ, แƒ’แƒ แƒซแƒ”แƒšแƒ•แƒแƒ“แƒ˜แƒแƒœ แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒแƒจแƒ˜ แƒแƒ  แƒ“แƒแƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ. แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, แƒ”แƒก แƒแƒจแƒ™แƒแƒ แƒ แƒ’แƒแƒฎแƒ“แƒ แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒฎแƒšแƒ แƒ“แƒ แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒกแƒแƒคแƒšแƒ˜แƒแƒจแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ แƒฃแƒคแƒ แƒ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ—แƒ’แƒแƒœ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ Telepresence (แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒแƒกแƒ”แƒ•แƒ” แƒฎแƒแƒ แƒแƒฉแƒ Google-แƒ˜แƒกแƒ’แƒแƒœ). แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒฏแƒ”แƒ  แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ“แƒ˜แƒ“แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฃแƒ™แƒ•แƒ” แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒก, แƒ แƒแƒ› แƒ•แƒฃแƒ แƒฉแƒ˜แƒแƒ— แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒก "แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒแƒจแƒ˜ แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒก" - แƒกแƒชแƒแƒ“แƒ”แƒ—!

PS

แƒกแƒฎแƒ•แƒ K8s แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒ˜แƒ“แƒแƒœ:

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ