เช เชฒเซเชเชฎเชพเช, เชนเซเช NGINX เชชเซเชฐเชตเซเชถเชจเซ เชฌเซ เชตเชฟเชถเซเชทเชคเชพเช เชตเชฟเชถเซ เชตเชพเชค เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช เชเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชเชฐเซเชฒ เชญเซเชฒ เชชเซเชทเซเช เซเชจเซ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเชตเชพ เชธเชเชฌเชเชงเชฟเชค เชเซ, เชคเซเชฎเช เชคเซเชฎเชพเช เชฐเชนเซเชฒเซ เชฎเชฐเซเชฏเชพเชฆเชพเช เช
เชจเซ เชคเซเชจเซ เชเชธเชชเชพเชธ เชเชพเชฎ เชเชฐเชตเชพเชจเซ เชฐเซเชคเซ เชตเชฟเชถเซ.
1. เชกเชฟเชซเซเชฒเซเช เชฌเซเชเชเชจเซเชก เชฌเชฆเชฒเชตเซเช
เชฎเซเชณเชญเซเชค เชฐเซเชคเซ, NGINX Ingress เชกเชฟเชซเซเชฒเซเช เชฌเซเชเชเชจเซเชกเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชเซ เช เชจเซเชฐเซเชช เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ. เชเชจเซ เช เชฐเซเชฅ เช เชเซ เชเซ เชเซเชฏเชพเชฐเซ เชเชจเซเชเซเชฐเซเชธ เชธเชเชธเชพเชงเชจเซเชฎเชพเช เชจ เชนเซเชฏ เชคเซเชตเชพ เชนเซเชธเซเชเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซเชจเซ เชเชจเซเชเซเชฐเซเชธเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ, เชคเซเชฏเชพเชฐเซ เช เชฎเชจเซ 404 เชชเซเชฐเชคเชฟเชญเชพเชต เชเซเชก เชธเชพเชฅเซ เชจเซเชเซเชจเซเช เชชเซเชทเซเช เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เชเซ:
เชเซ เชเซ, เชตเชงเซเชจเซ เชตเชงเซ เชตเชเชค เช
เชฎเชพเชฐเชพ เชเซเชฒเชพเชฏเชจเซเชเซเชธ เชชเซเชฐเชฎเชพเชฃเชญเซเชค 404 เชจเซ เชฌเชฆเชฒเซ เชคเซเชฎเชจเซเช เชชเซเชทเซเช เชเซเชฐเซเชชเซเชฐเซเช เชฒเซเชเซ เช
เชจเซ เช
เชจเซเชฏ เชธเซเชตเชฟเชงเชพเช เชธเชพเชฅเซ เชฌเชคเชพเชตเชตเชพเชจเซ เชตเชฟเชจเชเชคเซ เชธเชพเชฅเซ เชเชตเซ เชเซ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, NGINX เชเชจเซเชเซเชฐเซเชธ เชชเชพเชธเซ เชเซ default-backend-service
. เช
เชฎเซ เชธเชฎเชพเชจ เชจเชพเชฎเชจเชพ เชตเชฟเชเชฒเซเชช เชฎเชพเชเซ เชฆเชฒเซเชฒ เชคเชฐเซเชเซ เชซเซเชฐเซเชฎเซเช เชเชจเซเชเซเชฐเซ เชชเชพเชธ เชเชฐเซเช เชเซเช namespace/servicename
. เชธเซเชตเชพเชจเซเช เชชเซเชฐเซเช 80 เชนเซเชตเซเช เชเซเชเช.
เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชคเชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชธเชพเชฅเซ เชคเชฎเชพเชฐเซ เชชเซเชคเชพเชจเซ เชชเซเชก (เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเช) เช
เชจเซ เชธเซเชตเชพ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ (
เช เชนเซเช เชเช เชจเชพเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเซ:
~$ curl -i -XGET http://sadsdasdas.kube-cloud.my/
HTTP/1.1 404 Not Found
Date: Mon, 11 Mar 2019 05:38:15 GMT
Content-Type: */*
Transfer-Encoding: chunked
Connection: keep-alive
<span>The page you're looking for could not be found.</span>
เชคเซเชฅเซ เชฌเชงเชพ เชกเซเชฎเซเชจเซเชธ เชเซ เชเซ เชธเซเชชเชทเซเชเชชเชฃเซ YAML เชฆเซเชตเชพเชฐเชพ เชธเชพเชฅเซ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเชพเช เชจเชฅเซ kind: Ingress
, เชกเชฟเชซเซเชฒเซเช-เชฌเซเชเชเชจเซเชกเชฎเชพเช เชเชตเซ เชเซ. เชเชชเชฐเชจเซ เชธเซเชเชฟเชฎเชพเช, เช เชกเซเชฎเซเชจ เชฌเชจเซเชฏเซเช sadsdasdas
.
2. เชกเชฟเชซเซเชฒเซเช เชฌเซเชเชเชจเซเชกเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช HTTP เชญเซเชฒเซเชจเซเช เชธเชเชเชพเชฒเชจ เชเชฐเชตเซเช
เชฌเซเชเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เช เชเซ เชเซ HTTP เชญเซเชฒเซ (404, 500, 502...) เชฎเชพเช เชธเชฎเชพเชชเซเชค เชฅเชคเซ เช เชฐเชเซเช เชเซ เชเซ เชเชตเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชคเซ เชจเชฅเซ (เชธเชเชฌเชเชงเชฟเชค เชธเซเชเชฆเชฐ เชชเซเชทเซเช เซ เชเชจเชฐเซเช เชฅเชคเชพ เชจเชฅเซ). เช เชฌเชนเซเชตเชฟเชง เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธเชฎเชพเช เชธเชฎเชพเชจ เชญเซเชฒ เชชเซเชทเซเช เซเชจเซ เชธเซเชตเชพ เชเชชเชตเชพ เชฎเชพเชเซ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเชเชจเซ เชเชเซเชเชพเชจเซ เชเชพเชฐเชฃเซ เชชเชฃ เชนเซเช เชถเชเซ เชเซ.
เชธเชฐเซเชตเชฐ เชฌเชพเชเซ เชชเชฐ เช เชเซเชธเชจเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเชตเชพ เชฎเชพเชเซ เช เชฎเชจเซ เชเชฐเซเชฐ เชเซ:
- เชกเชฟเชซเซเชฒเซเช เชฌเซเชเชเชจเซเชก เชตเชฟเชถเซ เชซเชเชฐเชพเชฎเชพเชเชฅเซ เชเชชเชฐเชจเซ เชธเซเชเชจเชพเชเชจเซ เช เชจเซเชธเชฐเซ;
- nginx-ingress เชฐเซเชชเชฐเซเชเชพเชเชเชจ ConfigMap เชฎเชพเชเซ เชเซ เชเชฎเซเชฐเซ
custom-http-errors
, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฎเซเชฒเซเชฏ เชธเชพเชฅเซ404,503
(เชฆเซเชเซเชคเซ เชฐเซเชคเซ เชญเซเชฒ เชเซเชกเซเชธเชจเซ เช เชจเซเชฐเซเชช เชเซ เชเซ เชจเชตเชพ เชจเชฟเชฏเชฎ เชฆเซเชตเชพเชฐเชพ เชเชตเชฐเซ เชฒเซเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ).
เช เชชเซเชเซเชทเชฟเชค เชชเชฐเชฟเชฃเชพเชฎ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช เชเซ: เชเซเชฏเชพเชฐเซ เชเซเชฒเชพเชฏเชเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชพเชฒเซ เชฐเชนเซ เชนเซเชฏ เช เชจเซ 404 เช เชฅเชตเชพ 503 เชจเชพ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชเซเชก เชธเชพเชฅเซ เชญเซเชฒ เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชตเชฟเชจเชเชคเซเชจเซ เชเชชเชฎเซเชณเซ เชจเชตเชพ เชกเชฟเชซเซเชฒเซเช เชฌเซเชเชเชจเซเชก เชชเชฐ เชฐเซเชกเชพเชฏเชฐเซเชเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ...
เชเซ เชเซ, เชเซเชฏเชพเชฐเซ เชกเชฟเชซเซเชฒเซเช เชฌเซเชเชเชจเซเชก เช เชจเซ เชเชธเซเชเชฎ-http-เชญเซเชฒเซ เชฎเชพเชเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชตเชฟเชเชธเชพเชตเชคเซ เชตเชเชคเซ, เชคเชฎเชพเชฐเซ เชเช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชธเซเชตเชฟเชงเชพ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ:
!!! Important The custom backend is expected to return the correct HTTP status code instead of 200. NGINX does not change the response from the custom default backend.
เชนเชเซเชเชค เช เชเซ เชเซ เชเซเชฏเชพเชฐเซ เชตเชฟเชจเชเชคเซ เชฐเซเชกเชพเชฏเชฐเซเชเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชนเซเชกเชฐเซเชฎเชพเช เช
เชเชพเชเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชต เชเซเชก เช
เชจเซ เชตเชงเชพเชฐเชพเชจเซ เชฎเชพเชนเชฟเชคเซ เชธเชพเชฅเซ เชเชชเชฏเซเชเซ เชฎเชพเชนเชฟเชคเซ เชนเชถเซ (เชคเซเชฎเชจเซ เชธเชเชชเซเชฐเซเชฃ เชธเซเชเชฟ เชเชชเชฒเชฌเซเชง เชเซ.
เชเชจเซ เช
เชฐเซเชฅ เช เชเซ เชเซ เชคเชฎเชพเชฐเซ เชเชพเชคเซ เช เชเซเชเช เชธเชพเชเชพ เชชเซเชฐเชคเชฟเชญเชพเชต เชเซเชกเชจเซ เชเชพเชณเชเซ เชฒเซ.
เชตเชฟเชตเชฟเชง เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธเชฎเชพเช เช เชฒเช-เช เชฒเช เชกเชฟเชซเซเชฒเซเช เชฌเซเชเชเชจเซเชก เชนเซเชฏ เชเซ
เช เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเซ เชธเซเชฒเซเชฏเซเชถเชจ เชธเชฎเชเซเชฐ เชเซเชฒเชธเซเชเชฐ เชฎเชพเชเซ เชตเซเชถเซเชตเชฟเช เชจเชฅเซ, เชชเชฐเชเชคเซ เชฎเชพเชคเซเชฐ เชเซเชเซเชเชธ เชเชชเซเชฒเชฟเชเซเชถเชจเซเชจเซ เช เชฒเชพเชเซ เชชเชกเซ เชเซ, เชคเชฎเชพเชฐเซ เชชเชนเซเชฒเชพ เชเชจเซเชเซเชฐเซเชธ เชธเชเชธเซเชเชฐเชฃ เชคเชชเชพเชธเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชเซ เชคเซ เชฎเซเชณ เชเชพเชฏ เชเซ 0.23 เช เชฅเชตเชพ เชคเซเชฅเซ เชตเชงเซ, เชจเซเชเชฟเชต เชเชจเซเชเซเชฐเซเชธ เชเชจเซเชเซเชถเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซ:
- เช
เชฎเซ เชเชตเชฐเชฐเชพเชเชก เชเชฐเซ เชถเชเซเช เชเซเช
default-backend
เชฎเชพเชเซ เชฆเชฐเซเช เชชเซเชฐเชตเซเชถเชจเซเชเซเชเชพเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ ; - เช
เชฎเซ เชเชตเชฐเชฐเชพเชเชก เชเชฐเซ เชถเชเซเช เชเซเช
custom-http-errors
เชฎเชพเชเซ เชฆเชฐเซเช เชชเซเชฐเชตเซเชถเชจเซเชเซเชเชพเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ .
เชชเชฐเชฟเชฃเชพเชฎเซ, เชเชจเซเชเซเชฐเซเชธ เชธเชเชธเชพเชงเชจ เชเชเชเช เชเชจเชพ เชเซเชตเซเช เชฆเซเชเชพเชถเซ:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ .Chart.Name }}-app2
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/custom-http-errors: "404,502"
nginx.ingress.kubernetes.io/default-backend: error-pages
spec:
tls:
- hosts:
- app2.example.com
secretName: wildcard-tls
rules:
- host: app2.example.com
http:
paths:
- path: /
backend:
serviceName: {{ .Chart.Name }}-app2
servicePort: 80
เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชญเซเชฒเซ 404 เช เชจเซ 502 เชคเชฎเชพเชฎ เชเชฐเซเชฐเซ เชนเซเชกเชฐเซ เชธเชพเชฅเซ เชญเซเชฒ-เชชเซเชทเซเช เชธเซเชตเชพ เชชเชฐ เชฐเซเชกเชพเชฏเชฐเซเชเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
ะ Ingress เชจเชพ เชชเชนเซเชฒเชพเชจเชพเช เชตเชฐเซเชเชจเชฎเชพเช เช เชธเซเชตเชฟเชงเชพ เชจเชนเซเชคเซ (
เชชเซเชฐเชตเซเชถ <0.23: เชเช เช เชญเชฟเชเชฎ
เช เชตเชฟเชเชฒเซเชช เชตเชงเซ เชธเชฐเชณ เชเซ. เชเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชคเชฐเซเชเซ เชเซ เชคเซเชจเชพ เชชเซเชทเซเช เซเชจเซ เชธเซเชตเชพ เชเชชเซ เชเซ, เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชจเชฟเชฏเชฎเชฟเชค HTML เชเซ, เชเซ เชนเซเชกเชฐเซเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชเซเชตเซเช เช
เชจเซ เชธเชพเชเชพ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชเซเชกเซเชธ เชชเชฐเชค เชเชฐเชตเชพ เชคเซ เชเชพเชฃเชคเซเช เชจเชฅเซ. เชเชตเซ เชเชชเซเชฒเชฟเชเซเชถเชจ url เชฎเชพเชเชฅเซ Ingress เชธเชพเชฅเซ เชฐเซเชฒเชเชเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ /error-pages
, เช
เชจเซ เชเซเชเชฒเซเชเชฎเชพเช ws
เชชเชฐเชค เชเชฐเซเชฒ HTML เชนเชถเซ.
YAML เชฎเชพเช เชเชฟเชคเซเชฐ:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ .Chart.Name }}-app2
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/server-snippet: |
proxy_intercept_errors on;
error_page 500 501 502 503 504 @error_pages;
location @error_pages {
rewrite ^ /error-pages/other/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}
spec:
tls:
- hosts:
- app2.example.com
secretName: wildcard-tls
rules:
- host: app2.example.com
http:
paths:
- path: /
backend:
serviceName: {{ .Chart.Name }}-app2
servicePort: 80
เช เชเชฎเชพเชตเช เชฎเชพเชเซเชจเซ เชธเซเชตเชพ ClusterIP เชชเซเชฐเชเชพเชฐเชจเซ เชนเซเชตเซ เชเซเชเช.
เชคเซ เช เชธเชฎเชฏเซ, เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช เชเซเชฏเชพเช เช เชฎเซ เชญเซเชฒ เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเซเชถเซเช, เชชเซเชฐเชตเซเชถเชฎเชพเช เช เชฎเซ เชจเซเชเซเชจเซ เชธเชพเชฎเชเซเชฐเซ เชธเชพเชฅเซ เชธเชฐเซเชตเชฐ-เชธเซเชจเชฟเชชเซเช เช เชฅเชตเชพ เชเซเช เชตเชฃเซ-เชธเซเชจเชฟเชชเซเช เชเชฎเซเชฐเซเช เชเซเช:
nginx.ingress.kubernetes.io /server-snippet: |
proxy_intercept_errors on;
error_page 500 501 502 503 504 @error_pages;
location @error_pages {
rewrite ^ /error-pages/ws/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}
เชชเซเชฐเชตเซเชถ <0.23: เชฌเซเชเซ เช เชญเชฟเชเชฎ
เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ เชเช เชตเชฟเชเชฒเซเชช เชเซ เชนเซเชกเชฐเซ เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเซ เชถเชเซ เชเซ... เช เชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เช เชเช เชตเชงเซ เชธเชพเชเซ เชฐเชธเซเชคเซ เชเซ, เชเซ เชเชธเซเชเชฎ-http-เชญเซเชฒเซเชฎเชพเชเชฅเซ เชเชเซเชจเชพ เชฒเซเชงเซเชฒ เชเซ. เชคเซเชจเซ เชฎเซเชจเซเชฏเซเช เชฒเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฅเซ (เชเซเชชเซ เชเชฐเชตเซ) เชคเชฎเชจเซ เชตเซเชถเซเชตเชฟเช เชธเซเชเชฟเชเชเซเชธ เชฌเชฆเชฒเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเชถเซ เชจเชนเซเช.
เชชเชเชฒเชพเช เชจเซเชเซ เชฎเซเชเชฌ เชเซ. เช
เชฎเซ เชฌเชจเชพเชตเซเช เชเซเช
nginx.ingress.kubernetes.io /server-snippet: |
proxy_intercept_errors off;
error_page 404 = @custom_404;
error_page 503 = @custom_503;
location @custom_404 {
internal;
proxy_intercept_errors off;
proxy_set_header X-Code 404;
proxy_set_header X-Format $http_accept;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Namespace $namespace;
proxy_set_header X-Ingress-Name $ingress_name;
proxy_set_header X-Service-Name $service_name;
proxy_set_header X-Service-Port $service_port;
proxy_set_header Host $best_http_host;
rewrite ^ /error-pages/ws/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}
location @custom_503 {
internal;
proxy_intercept_errors off;
proxy_set_header X-Code 503;
proxy_set_header X-Format $http_accept;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Namespace $namespace;
proxy_set_header X-Ingress-Name $ingress_name;
proxy_set_header X-Service-Name $service_name;
proxy_set_header X-Service-Port $service_port;
proxy_set_header Host $best_http_host;
rewrite ^ /error-pages/ws/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชฆเชฐเซเช เชญเซเชฒ เชเซ เชเซเชจเซ เช
เชฎเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพ เชฎเชพเชเชเซเช เชเซเช, เชคเซเชจเชพ เชฎเชพเชเซ เช
เชฎเชพเชฐเซ เชชเซเชคเชพเชจเซเช เชธเซเชฅเชพเชจ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เชเซเชฏเชพเช "เชฎเซเชณ" เชเชเชจเซ เชเซเชฎ เชฌเชงเชพ เชเชฐเซเชฐเซ เชนเซเชกเชฐเซ เชฆเชพเชเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
PS
K8s เชเซเชชเซเชธ เช เชจเซ เชฏเซเชเซเชคเชฟเช เชถเซเชฐเซเชฃเซเชฎเชพเชเชฅเซ เช เชจเซเชฏ:
- ยซ
เชนเซเชฒเซเชฎ 2 เชฎเซเชจเซเชเชฎเซเชจเซเชเชฎเชพเช เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชเชพเชฒเชคเชพ เชธเชเชธเชพเชงเชจเซเชจเซ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชเชฐเชตเซเช ยป; - ยซ
เชตเซเชฌ เชเชชเซเชฒเชฟเชเซเชถเชจ เชชเชฐ เชจเซเชก เชซเชพเชณเชตเชฃเซ เช เชจเซ เชฒเซเชก เชตเชฟเชถเซ ยป; - ยซ
เชกเซเชต เชธเชพเชเชเซเชธเชจเซ เชเชเซเชธเซเชธ ยป; - ยซ
เชฎเซเชเชพ เชกเซเชเชพเชฌเซเชธเซเชธ เชฎเชพเชเซ เชฌเซเชเชธเซเชเซเชฐเซเชชเชจเซ เชเชกเชชเซ เชฌเชจเชพเชตเชตเซเช ยป.
เช เชฎเชพเชฐเชพ เชฌเซเชฒเซเช เชชเชฐ เชชเชฃ เชตเชพเชเชเซ:
- ยซ
Istio เชธเชพเชฅเซ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธเชฟเชธ เชชเชฐ เชชเชพเชเชพ เชเชพเช. เชญเชพเช 1 ยป; - ยซ
[เชธเชเชฟเชคเซเชฐ] เชเซเชฌเชฐเชจเซเชเซเชธเชฎเชพเช เชจเซเชเชตเชฐเซเชเชฟเชเช เชฎเชพเชเซเชจเซ เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชฟเชเชพ. เชญเชพเช 3 ยป.
เชธเซเชฐเซเชธ: www.habr.com