рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕: рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЯреЗрд▓реАрдкреНрд░реЗрдЬрд╝реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕: рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЯреЗрд▓реАрдкреНрд░реЗрдЬрд╝реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╕реЗ рддреЗрдЬреА рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ, рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЛрдб рдХреЛ рддреБрд░рдВрдд рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдг/рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ F5 рджрдмрд╛рдХрд░ред рдФрд░ рдЬрдм рдпрд╣ рдПрдХ рдЕрдЦрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ (рдбреЙрдХрд░, рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ ... рдореЗрдВ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рдФрд░ рдлрд┐рд░ рддреБрд░рдВрдд рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред рдореЛрдиреЛрд▓рд┐рде рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдореЗрдВ рдХрд╛рдЯрдиреЗ рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛. рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ, рдЙрддрдиреА рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВред рдлрд┐рд░ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдПрдХ рджрд░реНрдЬрди рд╕реЗ рднреА рдЕрдзрд┐рдХ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рд╕рдм рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ .

рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рд╣рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдЖрдЬрд╝рдорд╛рдПред рдФрд░ рдореИрдВ рд╕рдВрдЪрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рдмрд╕ "рдмреИрд╕рд╛рдЦреА" рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реВрдВрдЧрд╛ред

1. рдмреИрд╕рд╛рдЦреА

рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдлрд╝рдЯреАрдкреА/рдПрд╕рдПрдлрдЯреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд░рд╛рд╕реНрддрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рд╣рдордиреЗ рддреБрд░рдВрдд рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

  1. рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ (рдбреЗрд╡/рд░рд┐рд╡реНрдпреВ) рдХреЗ рдкреЙрдб рдореЗрдВ, рдПрд╕рдПрд╕рдПрдЪ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз/рддреИрдирд╛рдд рдХрд░реЗрдЧрд╛ред
  2. рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ (рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░)ред prepare-app) рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ emptyDirрдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рдФрд░ рдПрд╕рдПрд╕рдПрдЪ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕: рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЯреЗрд▓реАрдкреНрд░реЗрдЬрд╝реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рддрдХрдиреАрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ 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. рдЧреБрдкреНрдд.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

рд╡реЛрдЗрд▓рд╛: рддреИрдирд╛рддреА рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрд╡рд▓рдкрд░ рд╕реЗрд╡рд╛ рдирд╛рдо рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддрд╛ рд╣реИ (рдХреНрд▓рд╕реНрдЯрд░ рддрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╣реБрдВрдЪ рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдмрддрд╛ рдЪреБрдХреЗ рд╣реИрдВ) рдЕрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реЗ тАЛтАЛтАЛтАЛрдПрд╕рдПрдлрдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдбрд┐рд▓реАрд╡рд░ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЗрд╕рдХреЗ рд╕реНрдкрд╖реНрдЯ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:

  • рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛, рдЬрд┐рд╕рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рдПрдЧрд╛;
  • рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд╣реА рд╡реНрдпрдХреНрддрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рд╕реЗрд╡рд╛ рддреИрдирд╛рдд рдХреА рд╣реИ;
  • рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ Git рдкрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВред

2. рджреВрд░рджрд░реНрд╢рд┐рддрд╛

рдкрд░рд┐рдпреЛрдЬрдирд╛ telepresence рдпрд╣ рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, "рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЗрд╕реЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реБрдПред" рд╣рд╛рд▓рд╛рдБрдХрд┐, рдорд╛рдВрдЧ рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдм рдкрд░ рдЯреЗрд▓реАрдкреНрд░реЗрдЬреЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рддрдХ рдХреЛрдИ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдЖрдИ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ред рд╣рдордиреЗ рдЙрди рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреА рдУрд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ 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
#########################################################################

рд╣рдо рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрд░рдгреЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ... рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рдЯреЗрд▓реАрдкреНрд░реЗрдЬрд╝реЗрдВрд╕ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

рдЯреЗрд▓реАрдкреНрд░реЗрдЬреЗрдВрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ (рдКрдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рд╣рдо рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:

  • рд╡рд╣ рдирд╛рдорд╕реНрдерд╛рди рдЬрд┐рд╕рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдЪрд▓ рд░рд╣рд╛ рд╣реИ;
  • рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдирд╛рдо рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рднреЗрджрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╢реЗрд╖ рддрд░реНрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ. рдпрджрд┐ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддреА рд╣реИ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░/рдЯреЛрдХрди рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ --mount=true (рдпрд╛ --mount=/dst_path), рдЬреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд░реВрдЯ (/) рдХреЛ рд╣рдорд╛рд░реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо (рдУрдПрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ "рдХреБрдВрдЬреА" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВ - рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ --docker-run рдФрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ: -v `pwd`:/app

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ /app рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ.

рдЕрдЧрд▓рд╛: -v /tmp/app/var/run/secrets:/var/run/secrets тАФ рдкреНрд░рдорд╛рдгрдкрддреНрд░/рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рдж рдЕрдВрддрддрдГ рд╡рд╣ рдЫрд╡рд┐ рдЖрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓реЗрдЧрд╛ред NB: рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ CMD рдпрд╛ ENTRYPOINT!

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

  • рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 0 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирдпрд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдПрдХ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде backend.
  • 2 рдХрдВрдЯреЗрдирд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рд▓реЙрдиреНрдЪ рд╣реЛрдВрдЧреЗ: рдкрд╣рд▓рд╛ рдЯреЗрд▓реАрдкреНрд░реЗрдЬрд╝реЗрдВрд╕ рдХреЗ рд╕рд╛рде (рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ/рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛), рджреВрд╕рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рдеред
  • рдпрджрд┐ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддреИрдирд╛рддреА рдХреЗ рджреМрд░рд╛рди рд╣реЗрд▓реНрдо рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рд╕рднреА рдИрдПрдирд╡реА рдЪрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ, рдФрд░ рд╕рднреА рд╕реЗрд╡рд╛рдПрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреАред рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрдирд╛ред
  • рдХрд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдмрд╕ рдЙрд╕ рдЯрд░реНрдорд┐рдирд▓ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЯреЗрд▓реАрдкреНрд░реЗрдЬрд╝реЗрдВрд╕ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рд╕рддреНрд░ рдХреЛ Ctrl+C рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ) - рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рд░реБрдХ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рдЙрд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдирд╛, рдПрдордЖрд░ рдЬрд╛рд░реА рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕рдореАрдХреНрд╖рд╛/рд╡рд┐рд▓рдп/тАж (рдЖрдкрдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред

рдпрджрд┐ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо PHP рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЧреЛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рднреА рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ - рдЯреЗрд▓реАрдкреНрд░реЗрдЬрд╝реЗрдВрд╕ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реЛрдЧрд╛:

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

рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреБрдВрдЬреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (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 рдФрд░ рдЕрдиреНрдп рддреНрд╡рд░рдХ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЕрдиреНрдпрдерд╛ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ (рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ) рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреБрдж рдХреЛ рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рди рдХреЗрд╡рд▓ рдЕрдм рдФрд░ рди рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдзрди рдкрд╣рд▓реЗ рд╣реА рд╕рд╛рдордиреЗ рдЖ рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЯреЗрд▓реАрдкреНрд░реЗрдЬреЗрдВрд╕ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ (рд╡реИрд╕реЗ, рд╡рд╣рд╛рдБ рднреА рд╣реИ) рдордЪрд╛рди рдЧреВрдЧрд▓ рд╕реЗ)ред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡ рдЕрднреА рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ "рджреБрдХрд╛рди рдХреЗ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ" рдХреЛ рдЗрд╕рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рджреЗрддрд╛ рд╣реИ - рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБ!

рдкреБрдирд╢реНрдЪ

K8s рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЕрдиреНрдп:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ