ืืืจ ืืขื ืขื ืื ืงืจืืกืื ืืื ืืขืคืจืขืื ืืืขืื ืืขืืืขืืึธืคึผืื ื ืืืงืจืึธ ืืึทืืื ืื ืืก ืืื Kubernetes. ืืขืืืขืืึธืคึผืขืจืก, ืกืคึผืขืฆืืขื ืื ืืขืจืคึผืจืึทืืึทื ืฉืคึผืจืึทืื, ืืืืื ืฆื ืืขืฉืืืื ื ืจืืืืืง ืงืึธื ืืื ืืืืขืจ ืืึทืืืืกืืข IDE ืืื ืืขื ืื ืจืขืืืืืึทื ืึธื ืืืืจืื ืคึฟืึทืจ ืืืืขื / ืืืคึผืืืืืึทื ื - ืคืฉืื ืืจืื ืืืขื F5. ืืื ืืืขื ืขืก ืืขืงืืืขื ืฆื ืึท ืืึทื ืึทืืืืืง ืึทืคึผืืึทืงืืืฉืึทื, ืขืก ืืื ืืขื ืื ืฆื ืืึธืืงืึทืื ืื ืกืืึทืืืจื ืึท ืืึทืืึทืืืืก ืืื ืึท ืืืขื ืกืขืจืืืขืจ (ืืื ืืึธืงืงืขืจ, ืืืืจืืืึทืืืึธืงืก ...), ืืื ืืขืืึธืื ืืืืื ืื ืื ืึทื ืืืืืงืืื ื. ืืื ืื ืงืึทืืื ื ืคืื ืืึทื ืึทืืืืก ืืื ืืืงืจืึธืกืขืจืืืืกืขืก ืืื ืื ืึธื ืงืืืขื ืคืื ืงืืืขืจื ืขืืขืก, ืืื ืื ืืืืกืืขื ืคืื ืืืคึผืขื ืืึทื ืกืื ืืืืฃ ืืขืืขืจ ืื ืืขืจืขืจ, โโืึทืืฅ
ืืื ืคืึทืจืฉืืืขื ืข ืฆืืื ืืืจ ืืขืคืจืืืื ืคืึทืจืฉืืืขื ืข ืกืึทืืืฉืึทื ื ืฆื ืืขื ืคึผืจืึธืืืขื. ืืื ืืื ืืืขื ืึธื ืืืืื ืืื ืื ืึทืงืืืืืึทืืืืืื ืืืึธืจืงืึทืจืึธืื ืืก ืึธืืขืจ ืคืฉืื "ืงืจืึทืืฉืื".
1. ืงืจืึทืืฉืื
ืจืืึฟ IDEs ืืึธืื ืื ืคืืืืงืืื ืฆื ืจืขืืึทืืืจื ืงืึธื ืืืืึทื ืืืืฃ ืื ืกืขืจืืืขืจ ื ืืฆื FTP / SFTP. ืืขืจ ืืืขื ืืื ืืืืขืจ ืงืืึธืจ ืืื ืืขืจ ืืึธื ืืื ืืืจ ืืื ืืึทืฉืืึธืกื ืฆื ื ืืฆื ืขืก. ืืืึทื ืขืกืึทื ืก ืืืืื ืึทืจืึธืคึผ ืฆื ืื ืคืืืืขื ืืข:
- ืืื ืื ืคึผืึธื ืคืื ืึทื ืืืืืงืืื ื ืื ืืืืืจืึทื ืืึทื ืฅ (ืืขืื / ืึธืคึผืฉืึทืฆืื ื), ืึทื ื ืึธื ืงืึทื ืืืื ืขืจ ืืื ืืึธื ืืฉื ืืื SSH ืึทืงืกืขืก ืืื ืคืึธืจืืืขืจืืื ื ืื ืขืคื ืืืขื SSH ืฉืืืกื ืคืื ืื ืืขืืืขืืึธืคึผืขืจ ืืืึธืก ืืืขื ืืืขื / ืฆืขืืืืงืืขื ืื ืึทืคึผืืึทืงืืืฉืึทื.
- ืืื ืืขืจ ืขืจืฉืืขืจ ืืื ืข (ืืื ืืขื ืงืึทื ืืืื ืขืจ
prepare-app
) ืึทืจืืืขืจืคืืจื ืื ืงืึธื ืฆืemptyDir
ืฆื ืืึธืื ืึทืงืกืขืก ืฆื ืื ืงืึธื ืคึฟืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืึทื ืืืื ืขืจื ืืื ืื SSH ืกืขืจืืืขืจ.
ืฆื ืืขืกืขืจ ืคึฟืึทืจืฉืืืื ืื ืืขืื ืืฉ ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืึทืืึท ืึท ืกืืขืืข, ืืื ืืืขื ืฆืืฉืืขืื ืคืจืึทืืืึทื ืฅ ืคืื ืื ืื ืืืึทืืืื YAML ืงืึทื ืคืืืืขืจืืืฉืึทื ื ืืื Kubernetes.
ืงืึธื ืคืืืืจืึทืืืึธื ืก
1.1. ืืืึทืืืขืก.ืืึทืื
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. ืกืื.ืืึทืื
{{ 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
. ืืืื, ื ืึธื ืืืคึผืืืืื ื ืื ืกืขืจืืืืก ืฆื 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
#########################################################################
ืืืจ ืืืขืื ื ืืฉื ืืืืื ืขื ืืื ืืขืืึทื ืืืืฃ ืื ืกืืขืคึผืก ืืืกืงืจืืืื ืืื ืืขื ืืืืขื ... ืืื ืึท ืืืกื ืขื ืคืื ืื ืืขืฆืืข. ืืืึธืก ืืึทืคึผืึทื ื ืืขืฉืึทืก ืื ืงืึทืืขืจ ืคืื ืืขืืขืคึผืจืขืกืขื ืกืข?
ืึทืจืืขื ืืื ืืขืืขืคึผืจืขืกืขื ืกืข
ืืื ืกืืึทืจืืึทืคึผ (ื ืืฆื ืื ืืขืฆืืข ืืึทืคึฟืขื ืกืคึผืขืกืืคืืขื ืืื ืื ืื ืกืืจืึทืงืฉืึทื ื ืืืืื), ืืืจ ืฉืืขืื:
- ื ืึทืืขืกืคึผืึทืกืข ืืื ืืืึธืก ืื ืืืงืจืึธืกืขืจืืืืก ืืื ืคืืืกื ืืืง;
- ื ืขืืขื ืคืื ืื ืืืคึผืืืืืึทื ื ืืื ืงืึทื ืืืื ืขืจ ืืืึธืก ืืืจ ืืืืื ืฆื ืืืจืื ืขืืขื.
ืื ืจืืขื ืืขื ืืช ืืขื ืขื ืึทืคึผืฉืึทื ืึทื. ืืืื ืืื ืืืขืจ ืืื ืกื ืื ืืขืจืึทืงืฅ ืืื ืืื ืคึฟืึทืจ ืื Kubernetes API --mount=true
(ืึธืืขืจ --mount=/dst_path
), ืืืึธืก ืืืขื ืึธื ืงืืึทืคึผื ืื ืืืึธืจืฆื (/) ืคืื ืื Kubernetes ืงืึทื ืืืื ืขืจ ืฆื ืืื ืืืขืจ ืืขืกืงืืึทืคึผ. ื ืึธื ืืขื, ืืืจ ืงืขื ืขื (ืืืคึผืขื ืืื ื ืืืืฃ ืื ืึทืก ืืื ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืึธื ืืฉื) ื ืืฆื ืื "ืงืื" ืคึฟืื ืืขื ืงื ืืื.
ืขืจืฉืืขืจ, ืืึธืืืจ ืืขื ืื ืืขืจืกื ืื ืืืืขืจืกืึทื ืึธืคึผืฆืืข ืคึฟืึทืจ ืคืืืกื ืืืง ืึท ืึทืคึผืืึทืงืืืฉืึทื - ืืื ืึท ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจ. ืฆื ืืึธื ืืึธืก ืืืจ ืืืขืื ื ืืฆื ืื ืฉืืืกื --docker-run
ืืื ืึธื ืงืืึทืคึผื ืื ืืืขืืืืืึทืืขืจ ืืื ืื ืงืึธื ืืื ืืขื ืงืึทื ืืืื ืขืจ: -v `pwd`:/app
ืืืืข ืืึธื ืึทื ืืึธืก ืึทืกืืื ืคืืืกื ืืืง ืคึฟืื ืื ืคึผืจืืืขืงื ืืืขืืืืืึทืืขืจ. ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืึธื ืืืขื ืืืื ืืึธืื ืืขื ืืื ืื ืืืขืืืืืึทืืขืจ /app
ืืื ืึท ืงืึทื ืืืื ืขืจ.
ืืืืึทืืขืจ: -v /tmp/app/var/run/secrets:/var/run/secrets
- ืฆื ืึธื ืงืืึทืคึผื ืื ืืืขืืืืืึทืืขืจ ืืื ืื ืืึทืืืืึทืื / ืกืืืขื ืืื ืึท ืงืึทื ืืืื ืขืจ.
ืืขื ืึธืคึผืฆืืข ืืื ืืขืกืึธืฃ ื ืืืืขืืื ืืขื ืืืจื ืื ืืืื ืืื ืืืึธืก ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืขื ืืืืคื. NB: ืืืขื ืืืจ ืืืืขื ืึท ืืืื, ืืืจ ืืืื ืกืคึผืขืฆืืคืืฆืืจื CMD
ืึธืืขืจ ENTRYPOINT
!
ืืืึธืก ืคึผืื ืงื ืืืขื ืคึผืึทืกืืจื ืืืืึทืืขืจ?
- ืืื Kubernetes, ืคึฟืึทืจ ืื ืกืคึผืขืกืืคืืขื ืืืคึผืืืืืึทื ื, ืื ื ืืืขืจ ืคืื ืจืขืคึผืืึทืงืึทื ืืืขื ืืืื ืืขืืืื ืฆื 0. ืึทื ืฉืืึธื, ืึท ื ืืึท ืืืคึผืืืืืึทื ื ืืืขื ืืืื ืืึธื ืืฉื - ืืื ืึท ืคืึทืจืืจืขืืขืจ ืงืึทื ืืืื ืขืจ.
backend
. - 2 ืงืึทื ืืืื ืขืจื ืืืขื ืงืึทืืขืจ ืืืืฃ ืื ืืขืกืงืืึทืคึผ: ืืขืจ ืขืจืฉืืขืจ ืืื ืืขืืขืคึผืจืขืกืขื ืกืข (ืขืก ืืืขื ืคึผืจืึทืงืกื ืจืืงืืืขืก ืคืื / ืฆื Kubernetes), ืื ืจืืข ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืขืืืขืืึธืคึผืขื.
- ืืืื ืืืจ ืขืงืกืึทืงืืจื ืืื ืืขื ืงืึทื ืืืื ืขืจ ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื, ืึทืืข ืื ENV ืืืขืจืืึทืืึทืื ืืจืึทื ืกืคืขืจื ืืืจื ืืขืื ืืขืฉืึทืก ืืืคึผืืืืืึทื ื ืืืขื ืืืื ืืืจืขืืืืื ืฆื ืืื ืื, ืืื ืึทืืข ืกืขืจืืืืกืขืก ืืืขืื ืืืื ืืืื ืืืจืขืืืืื. ืึทืืข ืืืึธืก ืืืืืื ืืื ืฆื ืจืขืืึทืืืจื ืื ืงืึธื ืืื ืืืื ืืึทืืืืกืืข IDE ืืื ืื ืื ืื ืจืขืืืืืึทื.
- ืืื ืื ืกืืฃ ืคืื ืื ืึทืจืืขื, ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ืคืึทืจืืึทืื ืืขื ืืืึธืงืืึทื ืืื ืืืึธืก ืืขืืขืคึผืจืขืกืขื ืกืข ืืื ืคืืืกื ืืืง (ืขื ืืืงื ืื ืกืขืกืืข ืืื ืงืืจื + C) - ืืึธืงืขืจ ืงืึทื ืืืื ืขืจื ืืืขื ืืึทืืื ืืืืฃ ืื ืืขืกืงืืึทืคึผ, ืืื ืืื Kubernetes ืึทืืฅ ืืืขื ืฆืืจืืงืงืืืขื ืฆื ืืืื ืขืจืฉื ืฉืืึทื. ืึทืืข ืืืึธืก ืืืืืื ืืื ืฆื ืืืขืจืืขืื, ืึทืจืืืกืืขืื ืื ืืจ ืืื ืึทืจืืืขืจืคืืจื ืขืก ืฆื ืึธืคึผืฉืึทืฆืื ื / ืฆืื ืืืคืืืกื / ... (ืืืคึผืขื ืืื ื ืืืืฃ ืืืื ืืืึธืจืงืคืืึธืื).
ืืืื ืืืจ ืืึธื ื ืืฉื ืืืขืื ืฆื ืืืืคื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึท ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจ - ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืจ ืึทื ืืืืืงืืขื ื ืืฉื ืืื PHP, ืึธืืขืจ ืืื Go, ืืื ื ืึธื ืืืืขื ืขืก ืืึธืืงืึทืื - ืื ืงืึทืืขืจ ืคืื ืืขืืขืคึผืจืขืกืขื ืกืข ืืืขื ืืืื ืืคืืื ืกืืืคึผืืขืจ:
telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name }}:backend --mount=true
ืืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืึทืงืกืขืก ืื Kubernetes API, ืืืจ ืืึทืจืคึฟื ืฆื ืึธื ืงืืึทืคึผื ืื ืฉืืืกื ืืืขืืืืืึทืืขืจ (https://www.telepresence.io/howto/volumes). ืขืก ืืื ืึท ื ืืฆื ืคึฟืึทืจ ืืื ืืงืก
proot -b $TELEPRESENCE_ROOT/var/run/secrets/:/var/run/secrets bash
ื ืึธื ืืึธื ืืฉืื ื ืืขืืขืคึผืจืขืกืขื ืกืข ืึธื ืื ืึธืคึผืฆืืข --docker-run
ืึทืืข ืื ืืืืืจืึทื ืืขื ืึทื ืืืขืจืืึทืืึทืื ืืืขื ืืืื ืืืจืขืืืืื ืืื ืืขื ืงืจืึทื ื ืืืึธืงืืึทื, ืึทืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืื ืืืื ืืึธื ืืฉื ืืื ืขืก.
NB: ืืืขื ืืืจ ื ืืฆื, ืคึฟืึทืจ ืืืึทืฉืคึผืื, PHP, ืืืจ ืืืื ืืขืืขื ืงืขื ืฆื ืืืกืืืืึทื ืคืึทืจืฉืืื ืึธืคึผ_ืงืึทืืฉืข, ืึทืคึผืง ืืื ืื ืืขืจืข ืึทืงืกืขืืขืจืืืืขืจื ืคึฟืึทืจ ืึทื ืืืืืงืืื ื - ืึทื ืืขืจืฉ ืขืืืืื ื ืื ืงืึธื ืืืขื ื ืืฉื ืคืืจื ืฆื ืืขืจ ืืขืืืืื ืจืขืืืืืึทื.
ืจืขืืืืืึทืื ืคืื
ืืืงืืืข ืึทื ืืืืืงืืื ื ืืื Kubernetes ืืื ืึท ืคึผืจืึธืืืขื ืืืขืืขื ืก ืืืืืื ื ืืื ืืจืึธืืื ื ืืื ืคึผืจืึธืคึผืึธืจืฆืืข ืฆื ืื ืคืึทืจืฉืคึผืจืืืื ืคืื ืืขื ืคึผืืึทืืคืึธืจืืข. ืืืงืืืขื ืืึทืืืึทืืืง ืจืืงืืืขืก ืคืื ืืขืืืขืืึธืคึผืขืจืก (ืคืื ืืื ืืืขืจ ืงืืืืึทื ืฅ), ืืืจ ืื ืืขืืืืื ืฆื ืกืึธืืืืข ืืื ืืื ืื ืขืจืฉืืขืจ ืื ืืืฆื ืืืืืขื, ืืืึธืก, ืึธืืขืจ, ื ืืฉื ืืึทืืืืึทืื ืืื ืืืืขืจ ืื ืืึทื ื-ืืขืจืืื. ืฆืื ืืืืง, ืืึธืก ืืื ืงืืึธืจ ืืื ืืขืจ ืืึธื ื ืื ื ืึธืจ ืืืฆื ืืื ื ืื ื ืึธืจ ืคึฟืึทืจ ืืื ืื, ืึทืืื ืขืก ืืขื ืขื ืฉืืื ืืขืจ ืคึผืึทืกืืง ืืืืืขื ืืื ืืขืจ ืืืขืื, ืืื ืืขืืขืคึผืจืขืกืขื ืกืข ืืื ืื ืืขืจืกื ืืึทืจืืื ืคืื ืืื (ืืื, ืขืก ืืื ืืืื
ืคึผืก
ืื ืืขืจืข ืคืื โโืื K8s ืขืฆืืช ืืื ืืจืืงืก ืกืขืจืืข:
- ยซ
ืขืฆืืช ืืื ืืจืืงืก ืคืื ืงืืืขืจื ืขืืขืก: ืื ืื ืืขืืช ืืืขืืขืจ ืืื NGINX Ingress "; - ยซ
ืืจืึทื ืกืคืขืจืื ื ืจืขืกืืจืกื ืคืืืกื ืืืง ืืื ืึท ืงื ืืื ืฆื ืืขืื 2 ืคืึทืจืืืึทืืืื ื "; - ยซ
ืืืขืื ื ืึธืืข ืึทืืึทืงืืืฉืึทื ืืื ืืึธืืื ืืืืฃ ืึท ืืืขื ืึทืคึผืืึทืงืืืฉืึทื "; - ยซ
ืึทืงืกืขืก ืฆื ืืขืื ืืืืืืขื "; - ยซ
ืคืึทืจืืืืขืจื ืืึธืึธืืกืืจืึทืคึผ ืคึฟืึทืจ ืืจืืืก ืืึทืืึทืืืืกืื '.
ืืงืืจ: www.habr.com