рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╕реЗ рддреЗрдЬреА рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ, рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЛрдб рдХреЛ рддреБрд░рдВрдд рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдг/рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ F5 рджрдмрд╛рдХрд░ред рдФрд░ рдЬрдм рдпрд╣ рдПрдХ рдЕрдЦрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ (рдбреЙрдХрд░, рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ ... рдореЗрдВ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рдФрд░ рдлрд┐рд░ рддреБрд░рдВрдд рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред рдореЛрдиреЛрд▓рд┐рде рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдореЗрдВ рдХрд╛рдЯрдиреЗ рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ
рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рд╣рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдЖрдЬрд╝рдорд╛рдПред рдФрд░ рдореИрдВ рд╕рдВрдЪрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рдмрд╕ "рдмреИрд╕рд╛рдЦреА" рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реВрдВрдЧрд╛ред
1. рдмреИрд╕рд╛рдЦреА
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдлрд╝рдЯреАрдкреА/рдПрд╕рдПрдлрдЯреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд░рд╛рд╕реНрддрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рд╣рдордиреЗ рддреБрд░рдВрдд рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
- рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ (рдбреЗрд╡/рд░рд┐рд╡реНрдпреВ) рдХреЗ рдкреЙрдб рдореЗрдВ, рдПрд╕рдПрд╕рдПрдЪ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз/рддреИрдирд╛рдд рдХрд░реЗрдЧрд╛ред
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ (рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░)ред
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 }}
рдЕрдВрддрд┐рдо рдкрд░рд┐рд╖реНрдХрд░рдг
рдЙрд╕рдХреЗ рдмрд╛рдж рд╕рд┐рд░реНрдл рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдирд╛ рд╣реА рдмрд╛рдХреА рд░рд╣ рдЬрд╛рддрд╛ рд╣реИ
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
. рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрд╡рд▓рдкрд░ 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 рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЕрдиреНрдп:
- ┬л
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдпреБрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рдпреБрдХреНрддрд┐рдпрд╛рдБ: рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдЗрдирдЧреНрд░реЗрд╕ рдореЗрдВ рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда "; - ┬л
рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣реЗрд▓реНрдо 2 рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ "; - ┬л
рдиреЛрдбреНрд╕ рдХреЗ рдЖрд╡рдВрдЯрди рдФрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд▓реЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "; - ┬л
рджреЗрд╡ рд╕рд╛рдЗрдЯреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ "; - ┬л
рдмрдбрд╝реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЛ рддреЗрдЬрд╝ рдХрд░рдирд╛ '.
рд╕реНрд░реЛрдд: www.habr.com