
рд╣рдо рддреЗрдЬреА рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдПрдВ, рдЬрд▓реНрджреА рд╕реЗ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг / рддреИрдирд╛рддреА рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ - рдмрд╕ F5 рджрдмрд╛рдХрд░ред рдФрд░ рдЬрдм рдпрд╣ рдЕрдЦрдВрдб рдЖрд╡реЗрджрди рдХреА рдмрд╛рдд рдЖрдИ, рддреЛ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ (рдбреЙрдХ, рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ ...) рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж - рддреБрд░рдВрдд рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЙрджреНрднрд╡ рдХреЗ рд╕рд╛рде, рд╕реВрдХреНрд╖реНрдордЬреАрд╡реЛрдВ рдореЗрдВ рдореЛрдиреЛрд▓рд┐рдереНрд╕ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ
рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдИрдВред рдЗрди microservices рдХреЗ рдЕрдзрд┐рдХ, рдФрд░ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВред рдлрд┐рд░ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдЙрдард╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рднреА ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рдмрд╣реБрдд рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░, рд╣рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдФрд░ рдореИрдВ рд╕рдВрдЪрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рдмрд╕ "рдмреИрд╕рд╛рдЦреА" рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред
1. рдмреИрд╕рд╛рдЦреА
рдЕрдзрд┐рдХрд╛рдВрд╢ IDE рдореЗрдВ FTP / SFTP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рддрд░реАрдХрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рд╣рдордиреЗ рддреБрд░рдВрдд рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг (рджреЗрд╡ / рд╕рдореАрдХреНрд╖рд╛) рдХреЗ рд▓рд┐рдП рдкреЙрдб рдореЗрдВ, SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ SSH рдХреБрдВрдЬреА рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз / рддреИрдирд╛рдд рдХрд░реЗрдЧрд╛ред
- Init рд╕реНрдЯреЗрдЬ рдкрд░ (
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ред 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
рд╡реЛрдЗрд▓рд╛: рдЬрд┐рд╕ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рддреИрдирд╛рддреА рд╢реБрд░реВ рдХреА рд╣реИ, рд╡рд╣ рдПрд╕рдПрдлрдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкрдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реЗ тАЛтАЛрд╕реЗрд╡рд╛ рдХреЗ рдирд╛рдо (
рд╣рдордиреЗ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣реА рдмрддрд╛ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЗрд╕рдХреЗ рд╕реНрдкрд╖реНрдЯ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:
- рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рдкрдврд╝рдиреЗ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ;
- рдХреЗрд╡рд▓ рдЬрд┐рд╕рдиреЗ рд╕реЗрд╡рд╛ рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ;
- рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдФрд░ Git рдореЗрдВ рдЗрд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
2. рдЯреЗрд▓реАрдкреНрд░рд┐рд╕реЗрд╕
рдЯреЗрд▓рд┐рдкреНрд░реЗрд╕реЗрдВрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, "рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛"ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдорд╛рдВрдЧ рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдо рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдХреГрдкрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рд╣рдм рдкрд░ рдЯреЗрд▓рд┐рдкреНрд░реЗрд╕реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рддрдХ рдХреЛрдИ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдереАред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рдерд╛ред рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ, рд╣рдордиреЗ рд╣реЗрд▓реНрдо-рдЪрд╛рд░реНрдЯ рдХреА рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
NOTES.txt
, рдЬрд┐рдиреНрд╣реЗрдВ
NOTES.txt
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрд╡рд▓рдкрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж GitL рдЬреЙрдм рд▓реЙрдЧ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦрддрд╛ рд╣реИ:
!!! , 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 рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП
рдПрдХ ServiceAccount рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ / рдЯреЛрдХрди рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд▓реНрдк
--mount=true
(рдпрд╛
--mount=/dst_path
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ Kubernetes рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд░реВрдЯ (/) рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо (рдУрдПрд╕ рдФрд░ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ "рдХреБрдВрдЬрд┐рдпреЛрдВ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдмрд╕реЗ рдмрд╣реБрдореБрдЦреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЙрдиреНрдЪ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
--docker-run
рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
-v `pwd`:/app
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдХрдВрдЯреЗрдирд░ рдореЗрдВ
/app
рдХреЛрдб
/app
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдЧрд▓рд╛:
-v /tmp/app/var/run/secrets:/var/run/secrets
- рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ / рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдВрдд рдореЗрдВ рдЙрд╕ рдЫрд╡рд┐ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
NB : рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ
CMD
рдпрд╛
ENTRYPOINT
рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛!
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ, рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 0. рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирдпрд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд
backend
рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рдеред - рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░, 2 рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрдВрдЧреЗ: рдкрд╣рд▓рд╛ - рдЯреЗрд▓реАрдкреНрд░реЗрд╢рдиреНрд╕ рдХреЗ рд╕рд╛рде (рдпрд╣ / рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛), рджреВрд╕рд░рд╛ - рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рдеред
- рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреИрдирд╛рддреА рдХреЗ рджреМрд░рд╛рди рд╣реЗрд▓реНрдо рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рд╕рднреА рдИрдПрдирд╡реА рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА, рд╕рд╛рде рд╣реА рд╕рднреА рд╕реЗрд╡рд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╡рд╣ рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрдирд╛ рд╣реИред
- рдХрд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рдЯрд░реНрдорд┐рдирд▓ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬрд╣рд╛рдВ рдЯреЗрд▓реАрдкреНрд░реЗрдВрд╕ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (Ctrl + C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ), рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдбреЙрдХ рдХрдВрдЯреЗрдирд░ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рдмрдХреБрдЫ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЕрдкрдиреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдЬреЛ рдХреБрдЫ рднреА рд░рд╣рддрд╛ рд╣реИ рд╡рд╣ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ, рдПрдордЖрд░ рдЬрд╛рд░реА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ / рдорд░реНрдЬ рдХрд░реЗрдВ / ... (рдЖрдкрдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХреЗ рдЖрдзрд╛рд░ рдкрд░)ред
рдпрджрд┐ рд╣рдо рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ PHP рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ Go рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рднреА рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ - Telepresence рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реЛрдЧрд╛:
telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name }}:backend --mount=true
рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди Kubernetes API рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ
рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ:
proot -b $TELEPRESENCE_ROOT/var/run/secrets/:/var/run/secrets bash
--docker-run
рдХреЛ
--docker-run
рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд┐рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореМрдЬреВрджрд╛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
NB : рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди op_cache, apc рдФрд░ рдЕрдиреНрдп рддреНрд╡рд░рдХ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ - рдЕрдиреНрдпрдерд╛ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕ рдордВрдЪ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдмрдврд╝ рд░рд╣реА рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ (рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ) рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬреЛ рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рдВрдмреА рджреВрд░реА рдкрд░ рдЦреБрдж рдХреЛ рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рди рдХреЗрд╡рд▓ рдЕрдм рдФрд░ рди рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдзрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВ, рдФрд░ рдЯреЗрд▓реАрдкреНрд░реИрд╕реЗрдВрд╕ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ (рд╡реИрд╕реЗ, Google рд╕реЗ рдЕрднреА рднреА рдПрдХ
рд╕реНрдХреЗрдлреЛрд▓реНрдб рд╣реИ)ред рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡ рдЗрддрдирд╛ рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ" рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рджреЗрддрд╛ рд╣реИ - рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ!
рдкреБрдирд╢реНрдЪ
K8s рдЯрд┐рдкреНрд╕ рдПрдВрдб рдЯреНрд░рд┐рдХреНрд╕ рдЪрдХреНрд░ рд╕реЗ рдЕрдиреНрдп: