Kubernetes ááœáẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬áž áá±á¬áºáá±á¬ááºááŒááºážá¡ááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· ááá¯ážááá±ážáá¬áá«áááºá á¡áá°ážáááŒáá·áº á¡áááá¹áá¬ááºááŒááºááá¯áá¬ážáá±á¬ áá¬áá¬á
áá¬ážáá»á¬ážá developer áá»á¬ážááẠF5 ááá¯ááŸáááºáá¯á¶ááŒáá·áº áááºážááá¯á·á
áááºááŒáá¯áẠIDE ááœáẠáá¯ááºááᯠá¡ááŒááºááŒááºááŒá®áž ááááºááᯠááŒááºááá¯ááẠá monolithic á¡ááá®áá±ážááŸááºážáá
áºáá¯ááá¯á·áá±á¬ááºáá¬áá±á¬á¡áá«á áá±áá¬áá±á·á
áºááŸáá·áºáááºáá¬áᬠ(Dockerá VirtualBox ... ááœááº) ááá¯á
ááºááœááºážááœááºááá·áºááœááºážáááºáá¯á¶áá±á¬ááºáááºá ááá¯á·áá±á¬ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááá¯áá»ááºáá»ááºážáá¶á
á¬ážááá¯ááºáááºá Monoliths áá»á¬ážááᯠmicroservices áá»á¬ážáá²ááá¯á· ááŒááºáá±á¬ááºááŒá®áž Kubernetes áá±á¬ááºááŸááá¬ááŒááºážááŸáá·áºá¡áá°á áá
áºáá¯ááŸáá·áºáá
áºáᯠááŸá®ááá¯ááŸá¯á¡ááœááºá¡ááŒááºááŒáá·áº á¡áá¬á¡á¬ážáá¯á¶ážá
ááá°áá®áá±á¬á¡áá»áááºáá»á¬ážááœáẠáá»áœááºá¯ááºááá¯á·ááẠááŒá¿áá¬á¡ááœáẠááá°áá®áá±á¬á¡ááŒá±áá»á¬ážááᯠááŒáá¯ážá á¬ážáá²á·áááºá á á¯áá±á¬ááºážáá¬ážáá±á¬ ááŒá±ááŸááºážáááºážáá»á¬áž ááá¯á·ááá¯áẠááá¯ážááá¯áž "áá»áá¯ááºážáá±á¬ááº" ááŒáá·áº á áááºáá«áááºá
áááá»áá¯ááºážáá±á¬ááº
IDE á¡áá»á¬ážá á¯ááẠFTP/SFTP ááᯠââá¡áá¯á¶ážááŒá¯á áá¬áá¬áá±á«áºááœáẠáá¯ááºááᯠááá¯ááºááá¯ááºáááºážááŒááºááá¯ááºá áœááºážááŸááááºá á€áááºážááŒá±á¬ááºážááẠá¡ááœááºáááºááŸá¬ážááŒá®áž áááºážááá¯á¡áá¯á¶ážááŒá¯ááẠáá»áœááºá¯ááºááá¯á· áá»ááºáá»ááºážáá¯á¶ážááŒááºáá²á·áááºá áááºážá á¡ááŸá áºáá¬áááẠá¡á±á¬ááºáá«á¡ááá¯ááºáž ááŒá¯ááºááœá¬ážááẠá
- ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áááºáááºážáá»ááºáá»á¬áž (dev/review) ááœáẠSSH á¡áá¯á¶ážááŒá¯ááœáá·áºááŒáá·áº á¡ááá¯ááœááºááááºáá¬áá áºáá¯ááᯠá áááºááá¯ááºááŒá®áž á¡ááá®áá±ážááŸááºážááᯠáá»á°ážááœááº/á¡áá¯á¶ážáá»ááá·áº developer á á¡áá»á¬ážáá°ááŸá¬ SSH áá±á¬á·ááᯠáááºááá·áºáá±ážááá¯á·áá«áááºá
- init á¡ááá·áºááœáẠ(ááœááºááááºáá¬á¡ááœááºáž
prepare-app
) áá¯ááºááá¯ááœáŸá²ááŒá±á¬ááºážáá«áemptyDir
á¡ááá®áá±ážááŸááºáž ááœááºááááºáá¬áá»á¬ážááŸáá·áº SSH áá¬áá¬áá»á¬ážá០áá¯ááºááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯áááºá
ááá¯áá²á·ááá¯á·áá±á¬ á¡á
á®á¡á
ááºá áááºážááá¬ááá¯ááºážááá¯ááºáᬠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááá¯ááá¯áá±á¬ááºážááœááºá
áœá¬ áá¬ážáááºááẠKubernetes ááœáẠáá«áááºáá±á¬ YAML ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶áá»á¬ážá á¡ááá¯ááºážá¡á
áá»á¬ážááᯠáá»áœááºá¯ááºáá±ážáá«áááºá
ááœá²á·á ááºážááŸá¯
á.áá values.yaml
ssh_pub_key:
vasya.pupkin: <ssh public key in base64>
áá«áá¬ááŒá
áºáá«ááẠvasya.pupkin
variable ááááºááá¯ážááŒá
áºáááºá ${GITLAB_USER_LOGIN}
.
á.áá 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"]
...
á.áá 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 }}
áá±á¬ááºáá¯á¶ážáá
á¡á²áá«ááŒá®ážááẠááœáŸá²ááŒá±á¬ááºážááá¯á· áá»ááºáá±ážáááºá
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- á¡áá¯á¶ážáá»ááŸá¯ááᯠá
áááºááá·áº developer ááẠáááºáá±á¬ááºááŸá¯á¡áááºááŒáá·áº áá»áááºáááºááá¯ááºááẠ(á¡á
á¯á¡áá±ážááá¯á· áá¯á¶áá¯á¶ááŒá¯á¶ááŒá¯á¶áááºáá±á¬ááºááœáá·áºááᯠáááºááá¯á·ááœáá·áºááŒá¯áááºážá
áááºážááẠáá¯á¶ážáá¡áá¯ááºáááŒá áºááá·áº ááŒá±ááŸááºážáá»ááºááŒá áºáá±á¬áºáááºáž áááºááœá±á·á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ ááŸá¯áá±á¬áá·áºááŸááŒáá·áºáá»áŸáẠáááºážááœáẠáááá¬áááºááŸá¬ážáá±á¬ á¡á¬ážáááºážáá»ááºáá»á¬ážááŸááááºá
- á¡áá¬áááºááœáẠáááºáááºáááºáá²á á±ááá·áº Helm ááá¬ážááᯠááŒááºáááºááŒááºáááºááẠááá¯á¡ááºááŒááºážá
- áááºáá±á¬ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áá°ááŸáá¬áá»áŸáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- ááá¯á·áá±á¬áẠáááºážááᯠlocal directory ááŸáá·áº synchronize áá¯ááºááẠááŸááºáá¬ážáá¬ážááẠááá¯á¡ááºááŒá®áž áááºážááᯠGit ááá¯á· á¡ááºááŸá¶áá«á
2. Telepresence
á
á®áá¶ááááºážá
ááá¯ááá¯ááŒá±á¬ááááºáá±á¬á· á¡áá¬á¡á¬ážáá¯á¶ážáᬠááááºááŒá±á¬ááºá
áá¬ááá¯ááºáááᯠááŒá
áºááœá¬ážáááºá áá±á¬á·ááºáá²áá±ážáá¬ážáá°áááºá០á¡áá±á¬ááºá¡áááºáá±á¬áºááẠááá¯á¡ááºááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠHelm chart text file ááœáẠááá·áºááœááºážáá¬ážáá«áááºá NOTES.txt
. ááá¯á·ááŒá±á¬áá·áºá áááºáá±á¬ááºááŸá¯ááᯠKubernetes ááá¯á· á¡áá¯á¶ážáá»ááŒá®ážáá±á¬ááºá áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬ááẠGitLab á¡áá¯ááºááŸááºáááºážááœáẠáá±ááᶠdev áááºáááºážáá»ááºááᯠá
áááºááẠááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááœá±á·áááº-
!!! РазÑабПÑка ÑеÑвОÑа лПкалÑМП, в ÑПÑÑаве 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 ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá
á áááºáá»áááºááœáẠ(á¡áááºáá«ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááœááºáá±á¬áºááŒáá¬ážáá±á¬áá±á¬ááºáá¯á¶ážá¡áááá·áºááá¯á¡áá¯á¶ážááŒá¯á) áá»áœááºá¯ááºááá¯á·áááºááŸááºáá¬ážáááº-
- microservice áááºáááºáá±ááá·áº namespaceá
- áá»áœááºá¯ááºááá¯á· ááá¯ážáá±á¬ááºááá¯áá±á¬ ááŒáá·áºáá»ááºááŸá¯ááŸáá·áº ááœááºááááºáá¬á¡áááºáá»á¬ážá
áá»ááºáá±á¬ á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááẠá
áááºááŒáá¯ááºááœá±ážáá»ááºááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááááºáá±á¬ááºááŸá¯ááẠKubernetes API ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºáá«á --mount=true
(ááá¯á·ááá¯áẠ--mount=/dst_path
) Kubernetes container á០root (/) ááᯠáá»áœááºá¯ááºááá¯á· desktop ááá¯á· áááºáááºáá«áááºá áááºážáá±á¬ááºááœááºá áá»áœááºá¯ááºááá¯á· (OS ááŸáá·áº á¡ááºááºááᯠá
áááºá¡áá¯á¶ážááŒá¯áá¯á¶áá±á«áºáá°áááºá) á¡á
á¯á¡áá±ážá០"áá±á¬á·áá»á¬áž" ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
áŠážá
áœá¬á Docker ááœááºááááºáá¬ááœáẠá¡ááºááá®áá±ážááŸááºážáá
áºáá¯áááºáááºáááºá¡ááœáẠá¡áá»ááºááŒáá·áºáá¯á¶ážááœá±ážáá»ááºááŸá¯ááᯠááŒáá·áºááŒáá«á
áá¯á·á áá«ááá¯áá¯ááºááá¯á· áá±á¬á·ááá¯áá¯á¶ážáá«áááºá --docker-run
ááœááºááááºáá¬áá²ááá¯á· áá¯ááºááŒáá·áº áááºážááœáŸááºááᯠáááºáááºáá«- -v `pwd`:/app
áááºážááẠááá±á¬áá»ááºáááºážááœáŸááºá០áá¯ááºáá±á¬ááºáá±áááºáᯠáááááŒá¯áá«á á¡ááá®áá±ážááŸááºážáá¯ááºááᯠáááºážááœáŸááºááœáẠááá·áºááœááºážáá«áááºá /app
ááœááºááááºáá¬áá
áºáá¯áá²ááŸá¬á
áá±á¬ááºáá
áºáá¯: -v /tmp/app/var/run/secrets:/var/run/secrets
- áááºááŸááº/ááá¯áááºááŒáá·áº áááºážááœáŸááºááᯠááœááºááááºáá¬áá
áºáá¯áá²ááá¯á· ááá·áºááœááºážáááºá
á€ááœá±ážáá»ááºááŸá¯ááᯠáá±á¬ááºáá¯á¶ážááœáẠá¡ááá®áá±ážááŸááºážáááºáááºááá·áºáá¯á¶ááŒáá·áº ááá¯ááºáá¬áááºá NB: áá¯á¶áá
áºáá¯áááºáá±á¬ááºááá·áºá¡áá«á áááºáááºááŸááºááá«áááºá CMD
ááá¯á·ááá¯áẠENTRYPOINT
!
á¡ááá¡áá»áá¬ááœá±áááºááŒá áºáŠážááá²á
- Kubernetes ááœááºá áááºááŸááºáá¬ážáá±á¬ ááŒáá·áºáá»ááºááŸá¯á¡ááœááºá áá¯á¶áá°áá»á¬áž á¡áá±á¡ááœááºááᯠ0 ááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáá«áááºá áááºážá¡á
á¬ážá á¡áá¯á¶ážáá»ááŸá¯á¡áá
áºááᯠá
áááºáááá·áºááẠ- á¡á
á¬ážááá¯ážááœááºááááºáá¬ááŒáá·áº
backend
. - ááœááºááááºáᬠ2 áá¯ááẠáááºá áºáá±á¬á·áá±á«áºááœáẠááœáŸáá·áºáááºáá«áááº- áááááŸá¬ Telepresence ááŒáá·áº (áááºážááẠááá±á¬ááºá á®ááŸ/ Kubernetes á០áá±á¬ááºážááá¯ááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá«áááº)á áá¯áááááŸá¬ á¡ááá®áá±ážááŸááºážááᯠáá®ááœááºáá±áá«áááºá
- á¡áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááŒáá·áº ááœááºááááºáá¬áá²ááá¯á· á á®áá¶áá±á¬ááºááœááºáá«áá ááŒáá·áºáá»ááºá ááºá¡ááœááºáž Helm á០ááœáŸá²ááŒá±á¬ááºážáá±ážáá±á¬ ENV variable áá»á¬ážá¡á¬ážáá¯á¶ážááẠáá»áœááºá¯ááºááá¯á·áᶠáááá¯ááºáááºááŒá áºááŒá®áž áááºáá±á¬ááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááá¯áááºáž áááŸáááá¯ááºáá«áááºá áá»ááºáá¬á¡á¬ážáá¯á¶ážá áááºá¡ááŒáá¯ááºáá¯á¶áž IDE áá¯ááºááᯠáááºážááŒááºááŒá®áž ááááºááᯠáá¶á á¬ážááá¯ááºáá«á
- á¡áá¯ááºáá¡áá¯á¶ážááœááºá Telepresence áááºáááºáá±ááá·áº terminal ááᯠáááºááááºááẠááá¯á¡ááºááẠ(á ááºááŸááºááᯠCtrl+C ááŒáá·áº á¡áá¯á¶ážáááºáááº) - Docker containers áá»á¬ážááẠdesktop áá±á«áºááœáẠáááºááœá¬ážáááºááŒá áºááŒá®áž 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
áááºáááºážáá»áẠááŒá±á¬ááºážáá²ááŸá¯á¡á¬ážáá¯á¶ážááᯠáááºááŸá terminal ááœáẠáááá¯ááºáááºááŒá
áºááŒá®ážá ááá¯á·ááŒá±á¬áá·áº á¡ááá®áá±ážááŸááºážááᯠáááºážááœáẠá
áááºááá«áááºá
NBá¥ááá¬á PHP ááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡áá«á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœáẠop_cacheá apc ááŸáá·áº á¡ááŒá¬ážáá±á¬ accelerator á¡áá»áá¯ážáá»áá¯ážááᯠááááºááẠááŸááºáá¬ážáá¬ážááá«ááẠ- ááá¯ááºáá«á áá¯ááºááᯠáááºážááŒááºááŒááºážááẠááá¯áá»ááºáá±á¬ááááºááá¯á· áŠážáááºáááºááá¯ááºáá«á
ááááºáá»á¬ážááá¯
Kubernetes ááŒáá·áº áá±áááá¯ááºáᬠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááẠá€ááááºáá±á¬ááºážá áá»á¶á·ááŸá¶á·ááŸá¯ááŸáá·áº á¡áá»áá¯ážá¡á
á¬ážá¡ááá¯áẠááŒá®ážááœá¬ážáá¬áá±áá±á¬ ááŒá¿áá¬áá
áºáá¯ááŒá
áºáááºá áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬áž (áá»áœááºá¯ááºááá¯á·ááá±á¬ááºáááºáá»á¬ážáá¶ááŸ) áááºááá¯ááºáá¬áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºáá¶áááŸáááŒá®áž áááºážááá¯á·ááᯠááááá¯á¶ážáááŸáááá¯ááºááá·áº áááºážáááºážáá»á¬ážááŒáá·áº ááŒá±ááŸááºážááá¯ááºáá²á·áá±á¬áºáááºáž áá±ááŸááºááœáẠáááºážááá¯á·ááá¯ááºááá¯áẠáááºáá±áááŒááá¯ááºáá²á·áá«á áá¶áá±á¬ááºážáá±á¬ááºáá
áœá¬á á€á¡áá¬ááẠááá¯áá¬áá áá»áœááºá¯ááºááá¯á·á¡ááœááºáá¬áááá² áááºááŸá¬ážáá±á«áºááœááºáá¬ááŒá®ááŒá
áºáá±á¬ááŒá±á¬áá·áº ááá¯ááá¯ááá·áºáá»á±á¬áºáá±á¬áááºážáááºážáá»á¬ážááẠááá¹áá¬áá±á«áºááœáẠáááºááŸá¬ážáá±ááŒá®ááŒá
áºááŒá®áž Telepresence ááẠáááºážááá¯á·á¡áááºá០á¡áá»á±á¬áºááŒá¬ážáá¯á¶ážááŒá
áºááẠ(á
áá¬ážáá
ááºá
PS
K8s á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááŸáá·áº ááŸáá·áºááœááºá á®ážáá®ážáá»á¬ážá០á¡ááŒá¬áž-
- «
Kubernetes á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááŸáá·áº ááŸáá·áºááœááºáá»á¬áž- NGINX Ingress ááŸá á áááºááŒáá¯ááºá¡ááŸá¬ážá á¬áá»ááºááŸá¬áá»á¬áž "; - «
Helm 2 á ááááºážáá»á¯ááºááŸá¯á¡á±á¬ááºááŸá á¡á á¯á¡áá±ážááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠááœáŸá²ááŒá±á¬ááºážááŒááºážá "; - «
node áá»á¬ážááœá²áá±ááŒááºážááŸáá·áº áááºá¡ááá®áá±ážááŸááºážáá±á«áºááŸá load áá»á¬ážá¡ááŒá±á¬ááºáž "; - «
dev ááá¯ááºáá»á¬ážááá¯á· áááºáá±á¬ááºááœáá·áº "; - «
ááŒá®ážáá¬ážáá±á¬áá±áá¬áá±á·á áºáá»á¬ážá¡ááœáẠbootstrap ááá¯á¡ááŸáááºááŒáŸáá·áºááŒááºážá "á
source: www.habr.com