แฉแแแ แกแฃแ แฃแคแ แ แฎแจแแ แแ แแแแแแแฎแแแแแ Kubernetes-แจแ แแแแ แแกแแ แแแกแแแแก แแแแแแแแ แแแแก แจแแกแแฎแแ. แแแแแแแแแ แแแก, แแแแกแแแฃแแ แแแแ แแแขแแ แแ แแขแแ แแแฃแแ แแแแแแก, แกแฃแ แ แกแฌแ แแคแแ แจแแแกแฌแแ แแ แแแแ แแแ แกแแงแแแ แแ IDE-แจแ แแ แแแฎแแ แจแแแแแ build/deployment-แแก แแแแแแแแแก แแแ แแจแ - แฃแแ แแแแ F5-แแ แแแญแแ แแ. แแ แ แแช แจแแแฎแแแ แแแแแแแแฃแ แแแแแแแชแแแก, แกแแแแแ แแกแ แแงแ แแแแแแฃแ แแ แแแแแแกแขแแแแ แแ แแแแแชแแแแ แแแแ แแ แแแ แกแแ แแแ แ (Docker-แจแ, VirtualBox...) แแ แจแแแแแ แแแฃแงแแแแแแแแ แแกแแแแแแแแ แแแแแแแแ แแแแ. แแแแแแแแแแแก แแแแ แแกแแ แแแกแแแแ แแแญแ แแ แแ แแฃแแแ แแแขแแก แแแกแแแแกแแแ แแ แแแ, แแ แแแแแแแแ แแแแแแแแแแฃแแแแแก แแแแแฉแแแแ, แงแแแแแคแแ แ
แกแฎแแแแแกแฎแแ แแ แแก แฉแแแ แแชแแแแแแแแ แแ แแแแแแแก แกแฎแแแแแกแฎแแ แแแแแฌแงแแแขแแก. แแ แแแแแฌแงแแ แแแแ แแแแแ แแแแแญแ แแ แแ แฃแแ แแแแ "แงแแแแ แฏแแแแแ".
1. แฎแแแฏแแฎแแแ
IDE-แแแแก แฃแแแขแแกแแแแก แแฅแแก แจแแกแแซแแแแแแแ แจแแชแแแแแ แแแแ แแแ แแแแแ แกแแ แแแ แแ FTP/SFTP แแแแแงแแแแแแ. แแก แแแ แซแแแแแ แแจแแแ แแ แแ แฉแแแ แแแจแแแแ แแแแแแฌแงแแแขแแ แแแกแ แแแแแงแแแแแ. แแแกแ แแ แกแ แแแงแแ แแแ แจแแแแแแก:
- แแแแแแแแแ แฃแแ แแแ แแแแก แแแแงแแคแแแแแแจแ (แแแ/แแแแแฎแแแแ) แแฎแกแแแแ แแแแแขแแแแแ แแแแขแแแแแ แ SSH แฌแแแแแแ แแ แแแแแแแแแ แแก แกแแฏแแ แ SSH แแแกแแฆแแแแก แแแแแแแกแแแแ แแแแแ, แ แแแแแแช แแแแแฎแแ แชแแแแแแก แแแแแแแชแแแก/แแแแแแแแกแแแก.
- แกแแฌแงแแก แแขแแแแ (แแแแขแแแแแ แแก แจแแแแแ
prepare-app
) แแแแแแขแแแแ แแแแemptyDir
แ แแ แฐแฅแแแแแก แฌแแแแแ แแแแแ แแแแแชแฎแแแแก แแแแขแแแแแ แแแแแแ แแ SSH แกแแ แแแ แแแแ.
แแกแแแ แกแฅแแแแก แขแแฅแแแแฃแ แ แแแแฎแแ แชแแแแแแแก แฃแแแ แแแกแแแแแแ, แแ แจแแแแแแแแแแแแ แฉแแ แแฃแแ 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 }}
แกแแแแแแ แจแแฎแแแ
แแแแก แจแแแแแ แ แฉแแแ แแฎแแแแ แแแแแชแแแ
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: แแแแแแแแแ แก, แ แแแแแแแช แแแแฌแงแ แแแแแแแแแ, แจแแฃแซแแแ แแแฃแแแแจแแ แแแก แกแแ แแแกแแก แกแแฎแแแแ (แ แแแแ แฃแกแแคแ แแฎแแ แแแแแแญแแก แฌแแแแแ แแแแกแขแแ แแ,
แแก แแ แแก แกแ แฃแแแแ แกแแแฃแจแแ แแแแแฌแงแแแขแ, แแแแ แแ แแแแฎแแ แชแแแแแแแก แแแแแกแแแ แแกแแ แแแก แแฅแแก แแจแแแ แ แฃแแ แงแแคแแแ แแฎแแ แแแแ:
- 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 (แกแฎแแแแ แจแแ แแก, แแ แกแแแแแก แแกแแแ
PS
แกแฎแแ K8s แ แฉแแแแแแกแ แแ แฎแ แแแแแแก แกแแ แแแแแ:
- ยซ
Kubernetes-แแก แ แฉแแแแแ แแ แฎแ แแแแแ: แแแ แแแแฃแแ แจแแชแแแแแแแก แแแแ แแแแ NGINX Ingress-แจแ "; - ยซ
แแแแกแขแแ แจแ แแแจแแแแฃแแ แ แแกแฃแ แกแแแแก แแแแแชแแแ Helm 2 แแแแแฏแแแแขแแ "; - ยซ
แแแ แแแแแแแชแแแจแ แแแแแซแแแแก แแแแแฌแแแแแแกแ แแ แฉแแขแแแ แแแแก แจแแกแแฎแแ "; - ยซ
แแแแแแแแแ แแก แกแแแขแแแแ แฌแแแแแ "; - ยซ
แฉแแขแแแ แแแแก แแแฉแฅแแ แแแ แแแแ แแแแแชแแแแ แแแแแแแกแแแแก ".
แฌแงแแ แ: www.habr.com