Istio ืืื ืืื ื ืื ืืืืืืจ, ืืืืื ืื ืืืืจ ืืคืืืงืฆืืืช ืืืืืจืืช. Istio ืืฉืชืืฉืช ืืืืืื ืืื ืืืืืืืช ืืื ืืืคืขืื ืืื ืื ืชืืื ืืช ืืงื ื ืืืื, ืืืื ืงืื ืืืื ืจืื ืืืจืืืช ืงืื ืืืฉืืืื ืืชืืืช ืืคืจืืกื, ื-Kubernetes ืื ืืืื ืงืื ืืืื ืจืื ืืื. ืืื, ืืื ืืขืืื ืขื Istio ืขืืื ืืืขืช ืืืฆื ืคืืขืืช ืืคืืืงืฆืื ืขื ืืกืคืจ ืฉืืจืืชืื ืืืืืกืกืื ืขื ืืื ืืืืืืืช ืืื ะฑะตะท ืืืกืืื. ืื ืืืืื ืืืืืฉืืื ืืืื ืืืจ ืืืืจืื ืื, ืืชื ืืืืื ืืืื ืขื ืืืจืื ืื ืืืขืืืจ ืืฉืจ ืืกืขืืฃ
ืืื ืืืจืื ืฉืื ืืืจ ืฉืื ืฉืื ื ืขืืืจ ืขื ืื ืืชืืืื ืืงืื ืืืงืืจ ืืขื ืืืืื GKE ืื ืฉืชืงืื ืืื ื ืืกืืกืืช ืฉื ืืืื ืืืืืืืช ืืืื ืขื ืืืืื. ืชืืืื ืื ืืจืืืช ืืืฆื Istio ืืื ืคืช ืืช ืืืื ืฉื ืืืื ืืืืืืืช ืืืื. ืื ืืื ืื ืฉืืชื ืื ืืืืข ืืืื ืขื ืงืื ืืืื ืจืื, Kubernetes, ืจืฉืชืืช ืฉืืจืืช ืื Istio.
ืืฉืืืืช
ืืืืจืื ืื, ืชืฉืืื ืืช ืืืฉืืืืช ืืืืืช:
- ืืืืื ืืคืืืงืฆืืืช ืฉืืื ืขืืื ืคืฉืืื ืขื ืืกืคืจ ืฉืืจืืชืื.
- ืืคืขื ืืช ืืืืฉืื ืืงืื ืืืงืืจ.
- ืืจืืืช ืืืคืืืงืฆืื ืืืืืืื.
- ืืฆืืจืช ืืฉืืื Kubernetes.
- ืคืจืืกืช ืืืืืืช ืืืฉืืื.
ืืคื ื ืฉืืชื ืืชืืื
ืืฆืข ืืช ืืืืจืืืช ืืื ืืืคืขืื ืืช Kubernetes Engine API:
- ืื ืื
ืืฃ Kubernetes Engine ืืืกืืฃ Google Cloud Platform. - ืฆืืจ ืื ืืืจ ืคืจืืืงื.
- ืืืชื ืขื ืฉื-API ืืืฉืืจืืชืื ืื ืืืืื ืืืคืขืื. ืื ืืืื ืืงืืช ืืื ืืงืืช.
- ืืื ืฉืืืืื ืืืืืจ ืขืืืจ ืคืจืืืงื Google Cloud Platform ืฉืื.
ืืื ืืืฆื ืืืคืขืื ืืืื .
ืืืืจืื ืื, ืืชื ืืืื ืืืฉืชืืฉ ื-Cloud Shell, ืืืืื ืืช ืืืืื ื ืืืืจืืืืืืช
ืืคืฉืจืืช ื': ืฉืืืืฉ ื-Cloud Shell
ืืชืจืื ืืช ืืฉืืืืฉ ื-Cloud Shell:
- ืกืืืืืช ืคืืชืื Python 2 ื- Python 3 (ืืืื ืืืจืืืืื) ืืืืืจืื ืืืืืื.
- ืืืื ืฉื ืฉืืจืช ืืคืงืืื gcloud, ืกึทืึธืจ, ืกืืืื ะธ ืงืืืงืื, ืฉืืื ื ืฉืชืืฉ ืืืจ ืืืชืงื ืื.
- ืืฉ ืื ืืื ืืืืืจื
ืขืืจืื ืืงืกื :ืขืืจื ืงืื , ืฉื ืคืชื ืขื ืกืื ืืขืจืืื ืืืืง ืืขืืืื ืฉื ืืืื ื-Cloud Shell.- Emacs, Vim ืื Nano, ืื ืคืชืืื ืืฉืืจืช ืืคืงืืื ื-Cloud Shell.
ืืืฉืชืืฉ
- ืขืืืจ ืื ืืกืืฃ GCP.
- ืืืฅ ืขื ืืืคืชืืจ ืืคืขื ืืช ื-Cloud Shell (ืืคืขื Cloud Shell) ืืืืง ืืขืืืื ืฉื ืืืื ืืกืืฃ GCP.
ืืืืง ืืชืืชืื
ืืคืฉืจืืช ื': ืฉืืืืฉ ืืืื ืฉืืจืช ืืคืงืืื ืืืืคื ืืงืืื
ืื ืืชื ืชืขืืื ืขื ืืืฉื ืขื ืืื ืืงืก ืื macOS, ืชืฆืืจื ืืืืืืจ ืืืืชืงืื ืืช ืืจืืืืื ืืืืื:
-
ืืชืืื ืืืฉืืช
ืกืืืืช ืคืืชืื Python 3 ื- Python 2 . -
ืืชืงื Cloud SDK ืขื ืืื ืฉืืจืช ืืคืงืืื gcloud. -
ืืืชืงืื ืงืืืงืื - ืืื ืฉืืจืช ืคืงืืื ืืขืืืื ืืืชื
ืงืืืจื ื .gcloud components install kubectl
-
ืืืชืงืื
Docker Community Edition (CE) . ืืชื ืชืฉืชืืฉ ืืืื ืฉืืจืช ืืคืงืืื ืกึทืึธืจืืื ืืืฆืืจ ืชืืื ืืช ืืืื ืขืืืจ ืืืืฉืื ืืืืืื. -
ืืชืงื ืืช ืืืื
ืืงืจืช ืืจืกืืืช ืฉื Git ืืื ืืงืื ืืช ืืืืฉืื ืืืืืื ื- GitHub.
ืืืจื ืงืื ืืืืืื
-
ืืืจื ืืช ืงืื ืืืงืืจ ืฉืืื ืฉืจืช:
git clone https://github.com/GoogleCloudPlatform/istio-samples
-
ืขืืืจ ืื ืกืคืจืืืช ืืงืื ืืืืืื:
cd istio-samples/sample-apps/helloserver
ืืงืจ ืืคืืืงืฆืื ืขื ืืกืคืจ ืฉืืจืืชืื
ืืืืฉืื ืืืืืื ืืชืื ื-Python ืืืืจืื ืืฉื ื ืจืืืืื ืืืงืืืืื ืืื ืืจืืงืฆืื ืืืืฆืขืืช
- ืฉืจืช: ืฉืจืช ืคืฉืื ืขื ื ืงืืืช ืงืฆื ืืืช ืืงืื, /, ืฉืืืคืืก "ืฉืืื ืขืืื" ืืงืื ืกืืื.
- loadgen: ืกืงืจืืคื ืฉืฉืืื ืชื ืืขื ืื ืฉืจืช, ืขื ืืกืคืจ ื ืืชื ืืืืืจื ืฉื ืืงืฉืืช ืืฉื ืืื.
ืืคืขืืช ืืคืืืงืฆืื ืืงืื ืืืงืืจ
ืืื ืืืงืืจ ืืช ืืืืฉืื ืืืืืื, ืืคืขื ืืืชื ื-Cloud Shell ืื ืืืืฉื ืฉืื.
1) ืืงืืืื istio-samples/sample-apps/helloserver ืึธืจืึผืฅ ืฉืจืช:
python3 server/server.py
ืืฉืืชื ืจืฅ ืฉืจืช ืืืฆืืื ืืืืจืื ืืืืื:
INFO:root:Starting server...
2) ืคืชื ืืืื ืืจืืื ื ื ืืกืฃ ืืื ืืฉืืื ืืืื ืืงืฉืืช ืฉืจืช. ืื ืืชื ืืฉืชืืฉ ื-Cloud Shell, ืืืฅ ืขื ืกืื ืืืืกืคื ืืื ืืคืชืื ืืคืขืื ื ืืกืคืช.
3) ืฉืื ืืงืฉื ื ืฉืจืช:
curl http://localhost:8080
ืฉืจืช ืขืื ื:
Hello World!
4) ืืืกืคืจืืื ืฉืื ืืืจืืช ืืช ืืงืื ืืืืืื, ืขืืืจ ืืกืคืจืืื ืฉืืืืื loadgen:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
5) ืฆืืจ ืืช ืืฉืชื ื ืืกืืืื ืืืืื:
export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=5
6) ืืฉืงื ืืืจืืืืื:
virtualenv --python python3 env
7) ืืคืขื ืืช ืืกืืืื ืืืืจืืืืืืช:
source env/bin/activate
8) ืืืืจ ืืจืืฉืืช ืขืืืจ loadgen:
pip3 install -r requirements.txt
9) ืืฉืงื loadgen:
python3 loadgen.py
ืืฉืืชื ืจืฅ loadgen ืืฆืื ืืฉืื ืืื ืืืืืขื ืืืื:
Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080
ืืืืื ืืจืืื ื ืืืจ ืฉืจืช ืืคืื ืืช ืืืืืขืืช ืืืืืช ืืืกืืฃ:
127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET request,
Path: /
Headers:
Host: localhost:8080
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*
ืื ืงืืืช ืืื ืฉื ืจืฉืช, ืืืคืืืงืฆืื ืืืื ืคืืขืืช ืขื ืืืจื ืืืื (ืืืฉื ืืงืืื ืื ืืืื ื ืืืจืืืืืืช ืฉื Cloud Shell). ืืื ืืชื ืืืื ืืืฉืชืืฉ localhostืืฉืืื ืืงืฉืืช ืืืื ืฉืจืช.
10) ืืขืฆืืจ loadgen ะธ ืฉืจืช, ืืืืื ืก Ctrl-c ืืื ืืืื ืืกืืฃ.
11) ืืืืื ืืืจืืื ื loadgen ืืฉืืช ืืช ืืกืืืื ืืืืจืืืืืืช:
deactivate
ืืจืืืช ืืคืืืงืฆืื ืืืืืืื
ืืื ืืืคืขืื ืืช ืืืืฉืื ื-GKE, ืขืืื ืืืจืื ืืช ืืืืฉืื ืืืืืื - ืฉืจืช ะธ loadgen - ืคื ืืื
ืืื ืืืจืื ืืืฉืื ืืชืื ืืืื, ืืชื ืฆืจืื ืืืงืจืคืื. ืืืงืจืคืื ืืื ืงืืืฅ ืืงืกื ืืืืืืจ ืคืงืืืืช ืืื ืืืช ืงืื ืืืงืืจ ืฉื ืืืืฉืื ืืืชืืืช ืฉืื
ืืืืืื ืืืจ ืงืืืืช ืืืงืจืคืื ืขืืืจ ืฉืจืช ะธ loadgen ืขื ืื ืืคืงืืืืช ืืืจืืฉืืช ืืืืกืืฃ ืชืืื ืืช. ืืืื - ืืืงืจืคืื ืขืืืจ ืฉืจืช:
FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
g++
&& rm -rf /var/lib/apt/lists/*
# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
wget
WORKDIR /helloserver
# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/
# Add the application
COPY . .
EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]
- ืงืืืฆื ืืคืืชืื:3-ืืง ืืืกืืก ืืืืจ ื-Docker ืืืฉืชืืฉ ืืืจืกื ืืขืืื ืืช ืืืืชืจ
ืชืืื ื ืฉื Python 3 ืืืกืืก. - ืงืืืฆื ืขืืชืง. . ืืขืชืืง ืืช ืงืืฆื ืืืงืืจ ืืกืคืจืืืช ืืขืืืื ืื ืืืืืช (ืืืงืจื ืฉืื ื ืืืื server.py) ืืืขืจืืช ืืงืืฆืื ืฉื ืืืืืื.
- ื ืงืืืช ืื ืืกื ืืืืืจ ืืช ืืคืงืืื ืืืฉืืฉืช ืืืคืขืืช ืืืืื. ืืืงืจื ืฉืื ื, ืืคืงืืื ืืื ืืืขื ืืื ืืื ืฉื ืืืช ืืืจืืฅ server.py ืืงืื ืืืงืืจ.
- ืงืืืฆื ืึทืืฉืืึนืฃ ืืขืื ืขื ืื ืฉืจืช ืืืื ืื ืชืื ืื ืืจื ืืืฆืืื 8080. ืืฆืืืช ืืื ืื
ืืกืคืง ืืฆืืืืช . ืืื ืกืื ืฉื ืชืืขืื ืฉืืจืืฉ ืืคืชืืืช ืื ืื 8080 ืืขืช ืืคืขืืช ืืืืื.
ืืชืืื ื ืืืืืก ืืช ืืืงืฉื ืฉืื
1) ืืืืจ ืืช ืืฉืชื ื ืืกืืืื ืืืืื. ืืืืฃ PROJECT_ID ืืืืื ืคืจืืืงื GCP ืฉืื.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
ืฉืืืืฉ ืืขืจืืื PROJECT_ID ะธ GCR_REPO ืืชื ืืชืืื ืืช ืชืืื ืช Docker ืืฉืืชื ืืื ื ืืืชื ืืืืืฃ ืืืชื ืืจืืฉืื ืืืื ืคืจืื.
2) ืืืืจ ืืช ืคืจืืืงื GCP ืืืืืืจ ืืืจืืจืช ืืืื ืขืืืจ ืืื ืฉืืจืช ืืคืงืืื gcloud.
gcloud config set project $PROJECT_ID
3) ืืืืจ ืืช ืืืืจ ืืจืืจืช ืืืืื ืขืืืจ ืืื ืฉืืจืช ืืคืงืืื gcloud.
gcloud config set compute/zone us-central1-b
4) ืืื ืฉืฉืืจืืช Container Registry ืืืคืขื ืืคืจืืืงื GCP.
gcloud services enable containerregistry.googleapis.com
ืฉืจืช ืืืื
-
ืขืืืจ ืื ืืกืคืจืืื ืฉืื ื ืืฆืืช ืืืืืื ืฉืจืช:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
-
ืืจืืืื ืืช ืืชืืื ื ืืืืฆืขืืช ืืืงืจืคืื ืืืฉืชื ื ืืกืืืื ืฉืืืืจืช ืงืืื ืืื:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
ืคืจืืืจ -t ืืืืฆื ืืช ืชื Docker. ืืื ืืฉื ืฉื ืืชืืื ื ืฉืื ืืชื ืืฉืชืืฉ ืืขืช ืคืจืืกืช ืืืืื.
- ืืขืื ืืช ืืชืืื ื ื-Container Registry:
docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1
ืืืืืืืช ืฉื loadgen
1) ืขืืืจ ืืกืคืจืืื ืฉืื ื ืืฆืืช ืืืืืื loadgen:
cd ../loadgen
2) ืืกืืฃ ืืช ืืชืืื ื:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .
3) ืืขืื ืืช ืืชืืื ื ื-Container Registry:
docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1
ืืฆื ืจืฉืืื ืฉื ืชืืื ืืช
ืขืืื ืืจืฉืืืช ืืชืืื ืืช ืืืืืจ ืืืื ืฉืืชืืื ืืช ืืืขืื:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
ืืคืงืืื ืืฆืืื ืืช ืฉืืืช ืืชืืื ืืช ืืืืฉืืช ืฉืืืขืื:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
ืืฆืืจืช ืืฉืืื GKE.
ื ืืชื ืืืคืขืื ืืช ืืงืื ืืืื ืจืื ืืืื ืขื ืืืฉื ืืืจืืืืื ืฉื Cloud Shell ืื ืขื ืืืฉื ืขื ืืคืงืืื ืืขืื ืืจืืฅ. ืืื ืืกืืืืช ืืคืงื, ืืชื ืฆืจืื ืืจื ืืชืืืจ ืืจืืื ืืืืืืช. ืืืืืื, ืืชื ืืงืืง ืืืขืจืืช ืฉืชืืืื ืฉืืืืืืช ืคืืขืืืช ืชืืื, ืืืชื ืฆืจืื ืืจื ืืืืืื ืืืืคืื ืืืคืขื ืงืื ืืืื ืจ ื ืืกืคืื ืื ืืชืขืืืจื ืืืื.
ืืื ืืืคืขืื ืืืฉืืืื ืขื ืืืื ืืชื ืืืื ืืืฉืชืืฉ
ืืฆืืจืช ืืฉืืื GKE:
1) ืฆืืจ ืืฉืืื:
gcloud container clusters create istioready
--cluster-version latest
--machine-type=n1-standard-2
--num-nodes 4
ืงืืืฆื gcloud ืืืฆืจ ืืฉืืื ืืืื ืืคืจืืืงื GCP ืืืืืืจ ืืจืืจืช ืืืืื ืฉืฆืืื ืช. ืืื ืืืคืขืื ืืช Istio, ืื ื ืืืืืฆืื ืืืืืืง ืืคืืืช 4 ืฆืืชืื ืืืืื ื ืืืจืืืืืืช
ืืฆืืืช ืืืฆืจ ืืช ืืืฉืืื ืชืื ืืกืคืจ ืืงืืช. ืืืฉืจ ืืืฉืืื ืืืื, ืืคืงืืื ืืืฆืืื ืืฉืื ืืื
2) ืกืคืง ืืืฉืืจืื ืืืื ืฉืืจืช ืืคืงืืื
gcloud container clusters get-credentials istioready
3) ืขืืฉืื ืืชื ืืืื ืืชืงืฉืจ ืขื Kubernetes ืืืืฆืขืืช ืงืืืงืื. ืืืืืื, ืืคืงืืื ืืืื ืืืืื ืืืืืช ืืช ืืฆื ืืฆืืชืื:
kubectl get nodes
ืืคืงืืื ืืืืฆืจืช ืจืฉืืื ืฉื ืฆืืชืื:
NAME STATUS ROLES AGE VERSION
gke-istoready-default-pool-dbeb23dc-1vg0 Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5 Ready <none> 100s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw Ready <none> 99s v1.13.6-gke.13
ืืืฉืื ืืคืชื ืฉื Kubernetes
ืืชืจืฉืื ืืฆืื ืืืฉืื ื-GKE:
ืืคื ื ืฉืืชื ืคืืจืก ืงืื ืืืื ืจืื ื-GKE, ืืื ืืช ืืืฉืื ืืืคืชื ืฉื Kubernetes. ืืฉ ืงืืฉืืจืื ืืืฉ ืืกืืฃ ืื ืืชื ืจืืฆื ืืืืื ืขืื.
- ืฆืืชืื ืืืฉืืืืืช. ื-GKE, ืฆืืืช ืืื ืืืื ื ืืืจืืืืืืช. ืืคืืืคืืจืืืช ืืืจืืช ืฉื Kubernetes, ืฆืืืช ืืืื ืืืืืช ืืืฉื ืื ืืืื ื ืืืจืืืืืืช. ืืฉืืื ืืื ืืืกืฃ ืฉื ืฆืืชืื ืฉืืืืืื ืืืืืฉื ืืืืืื ืืืช ืฉืื ืืชื ืคืืจืก ืืืฉืื ืขื ืืืื.
- ืชืจืืืืื. ื-Kubernetes, ืืืืืืช ืคืืขืืืช ืืชืจืืืืื. Pod in Kubernetes ืืื ืืืืื ืืืชื ื ืืชื ืช ืืืืืงื. ืคืื ืืืื ืืืื ืืื ืื ืืืชืจ. ืืชื ืคืืจืก ืงืื ืืืื ืจืื ืฉื ืฉืจืชืื ื loadgen ืืชืจืืืืื ื ืคืจืืื. ืืืฉืจ ืืฉื ื ืืกืคืจ ืืืืืืช ืืคืื (ืืืืืื, ืฉืจืช ืืืฉืืืื ื
ืฉืจืช ืคืจืืงืกื ), ืืืืืืช ืื ืืืืืช ืืืฉืืช ืืืช ืืืฉืชืคืืช ืืฉืืื ืคืื. - ืคืจืืกืืช. ื-Kubernetes, ืคืจืืกื ืืื ืืืืืืงื ืฉืืื ืืืกืฃ ืฉื ืชืจืืืืื ืืืื. ืืคืจืืกื ืืฉืืงื ืืขืชืงืื ืืจืืืื ืฉื ืชืจืืืืื ืืืคืืืจืื ืขื ืคื ื ืฆืืชื ืืฉืืื. ืืคืจืืกื ืืืืืคื ืืืืืืืืช ืคืืืื ืฉื ืืฉืื ืื ืฉืืื ื ืืืืืื.
- ืฉืืจืืช Kubernetes. ืืขืช ืืคืขืืช ืงืื ืืืฉืื ื-GKE, ืืืืืืจ ืืื loadgen ะธ ืฉืจืช. ืืืฉืจ ืืชืืืช ืฉืืจืืชืื ืืืืฉื ืืืจืืืืื ืื ืืฉืืืื ืืขืืืื ืฉื Cloud Shell, ืฉืืืช ืืงืฉืืช ืื ืฉืจืช ะฟะพ ะฐะดัะตัั 8080. ืืืืจ ืืคืจืืกื ื-GKE, ืืคืืืื ืืืืฆืขืื ืขื ืฆืืชืื ืืืื ืื. ืืืจืืจืช ืืืื, ืืื ืื ืฉืืืื ืขื ืืืื ืฆืืืช ืืคืื ืคืืขื, ืื ืืชื
ืชืจืืืืื ืืื ืืชืืืืช IP ืงืืืขืืช.
ืืื ืืงืื ืืชืืืช IP ืขืืืจ ืฉืจืช, ืขืืื ืืืืืืจ ืืคืฉืืช ืจืฉืช ืขื ืืื ืืคืืืื. ืื ืื ืฉืืืฉืืจืืช Kubernetes . ืฉืืจืืช Kubernetes ืืกืคืง ื ืงืืืช ืงืฆื ืืชืืฉืืช ืขืืืจ ืงืืืฆื ืฉื ืชืจืืืืื. ืืฉ ืืืืกืืื ืฉืืจืืชืื . ืฉืจืช ะธัะฟะพะปัะทัะตั LoadBalancer, ืืืกืคืง ืืชืืืช IP ืืืฆืื ืืช ืืืฆืืจืช ืงืฉืจ ืฉืจืช ืืืืฅ ืืืฉืืื.
ื-Kubernetes ืืฉ ืื ืืขืจืืช DNS ืืืื ืืช ืฉืืงืฆื ืฉืืืช DNS (ืืืืืื, helloserver.default.cluster.local) ืฉืืจืืชืื. ืืืืืช ืืื, ืคืืืื ืืชืื ืืืฉืืื ืืชืงืฉืจืื ืขื ืคืืืื ืืืจืื ืืืฉืืื ืืืชืืืช ืงืืืขื. ืื ื ืืชื ืืืฉืชืืฉ ืืฉื ื-DNS ืืืืฅ ืืืฉืืื, ืืืื ื-Cloud Shell ืื ืืืืฉื.
Kubernetes ืื ืืคืกื
ืืฉืืจืฆืช ืืช ืืืืฉืื ืืืืงืืจ, ืืฉืชืืฉืช ืืคืงืืื ืืฆืืืืืช ืคืืชืื 3
server.py
ืฆืืืื ืืจืื ืขื ืคืืขื: "ืขืฉื ืืืช."
Kubernetes ืืฉืชืืฉ
ืืชื ืืฆืืื ืืช ืืืฆื ืืจืฆืื ืืื ืืคืกืืื ืื ืืงืืฆืื
ืืืืืื ืืืืื ืงืืืฅ YAML ืขืืืจ ืฉืจืช ะธ loadgen. ืื ืงืืืฅ YAML ืืฆืืื ืืช ืืืฆื ืืจืฆืื ืฉื ืืืืืืงื ืืคืจืืกื ืืฉืืจืืช Kubernetes.
server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloserver
spec:
selector:
matchLabels:
app: helloserver
replicas: 1
template:
metadata:
labels:
app: helloserver
spec:
terminationGracePeriodSeconds: 5
restartPolicy: Always
containers:
- name: main
image: gcr.io/google-samples/istio/helloserver:v0.0.1
imagePullPolicy: Always
- ืกืื ืืฆืืื ืืช ืกืื ืืืืืืืงื.
- metadata.name ืืฆืืื ืืช ืฉื ืืคืจืืกื.
- ืฉืื ืจืืฉืื ืืคืจื ืืืื ืชืืืืจ ืฉื ืืืฆื ืืจืฆืื.
- spec.replicas ืืฆืืื ืืช ืืืกืคืจ ืืจืฆืื ืฉื ืชืจืืืืื.
- ืกืขืืฃ spec.template ืืืืืจ ืชืื ืืช ืคืื. ืืฉ ืฉืื ืืืคืจื ืืคืื ืชืืื ื, ืืืฆืืื ืืช ืฉื ืืชืืื ื ืฉืืฉ ืืืืฅ ื-Container Registry.
ืืฉืืจืืช ืืืืืจ ืื:
apiVersion: v1
kind: Service
metadata:
name: hellosvc
spec:
type: LoadBalancer
selector:
app: helloserver
ports:
- name: http
port: 80
targetPort: 8080
- LoadBalancer: ืืงืืืืช ืฉืืืืื ืืงืฉืืช ืืืชืืืช ื-IP ืฉื ืืืื ืืขืืืก, ืฉืืฉ ืื ืืชืืืช IP ืงืืืขื ืื ืืืฉื ืืืืฅ ืืืฉืืื.
- targetPort: ืืืืืจ, ืืฆืืืช ืืฉืืคื 8080 ะฒ ืืืงืจืคืื ืื ืกืืคืง ืืฆืืืืช. ืืชื ืืกืคืง ืืช ืื ืื 8080ืืื ืฉืชืืื ืืืฆืืจ ืงืฉืจ ืขื ืืืืืื ืฉืจืช ืืืืฅ ืืืฉืืื. ืืืงืจื ืฉืื ื hellosvc.default.cluster.local:80 (ืฉื ืงืฆืจ: hellosvc) ืืชืืื ืืืฆืืื 8080 ืืชืืืืช IP ืฉื ืคืื ืฉืืื ืฉืจืช.
- ื ืื: ืืื ืืกืคืจ ืืืฆืืื ืืืื ืืฉืืื ืฉืืจืืชืื ืืืจืื ืืืฉืืื ืืงืฉืืช.
loadgen.yaml
ืืืืืืงื ืคืจืืกื ื loadgen.yaml ื ืจืื ืืื server.yaml. ืืืืื ืืื ืฉืืืืืืงื ืืคืจืืกื ืืืื ืงืืข env. ืืื ืืืืืจ ืืช ืืฉืชื ื ืืกืืืื ืืืจืืฉืื loadgen ืืืฉืจ ืืชืงื ืช ืืขืช ืืคืขืืช ืืืคืืืงืฆืื ืืืืงืืจ.
apiVersion: apps/v1
kind: Deployment
metadata:
name: loadgenerator
spec:
selector:
matchLabels:
app: loadgenerator
replicas: 1
template:
metadata:
labels:
app: loadgenerator
spec:
terminationGracePeriodSeconds: 5
restartPolicy: Always
containers:
- name: main
image: gcr.io/google-samples/istio/loadgen:v0.0.1
imagePullPolicy: Always
env:
- name: SERVER_ADDR
value: "http://hellosvc:80/"
- name: REQUESTS_PER_SECOND
value: "10"
resources:
requests:
cpu: 300m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
ืืื loadgen ืืื ื ืืงืื ืืงืฉืืช ื ืื ืกืืช, ืืชืืื ืกืื ืฆืืื ืืฉืืื IP. ืกืื ืื ืืกืคืง ืืชืืืช IP ืงืืืขื ืฉืฉืืจืืชืื ืืืฉืืื ืืืืืื ืืืฉืชืืฉ ืื, ืื ืืชืืืช IP ืื ืืื ื ืืฉืืคื ืืืงืืืืช ืืืฆืื ืืื.
apiVersion: v1
kind: Service
metadata:
name: loadgensvc
spec:
type: ClusterIP
selector:
app: loadgenerator
ports:
- name: http
port: 80
targetPort: 8080
ืคืจืืกืช ืงืื ืืืื ืจืื ื-GKE
1) ืขืืืจ ืืกืคืจืืื ืฉืื ื ืืฆืืช ืืืืืื ืฉืจืช:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
2) ืคืชื server.yaml ืืขืืจื ืืงืกื.
3) ืืืืฃ ืืช ืืฉื ืืฉืื ืชืืื ื ืืฉื ืชืืื ืช Docker ืฉืื.
image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1
ืืืืฃ PROJECT_ID ืืืืื ืคืจืืืงื GCP ืฉืื.
4) ืฉืืืจ ืืกืืืจ server.yaml.
5) ืคืจืืก ืืช ืงืืืฅ YAML ื-Kubernetes:
kubectl apply -f server.yaml
ืืืืจ ืกืืื ืืืฆืื, ืืคืงืืื ืืืืฆืจืช ืืช ืืงืื ืืื:
deployment.apps/helloserver created
service/hellosvc created
6) ืขืืืจ ืื ืืืืจืื ืฉืื loadgen:
cd ../loadgen
7) ืคืชื loadgen.yaml ืืขืืจื ืืงืกื.
8) ืืืืฃ ืืช ืืฉื ืืฉืื ืชืืื ื ืืฉื ืชืืื ืช Docker ืฉืื.
image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1
ืืืืฃ PROJECT_ID ืืืืื ืคืจืืืงื GCP ืฉืื.
9) ืฉืืืจ ืืกืืืจ loadgen.yaml, ืกืืืจ ืืช ืขืืจื ืืืงืกื.
10) ืคืจืืก ืืช ืงืืืฅ YAML ื-Kubernetes:
kubectl apply -f loadgen.yaml
ืืืืจ ืกืืื ืืืฆืื, ืืคืงืืื ืืืืฆืจืช ืืช ืืงืื ืืื:
deployment.apps/loadgenerator created
service/loadgensvc created
11) ืืืืง ืืช ืืฆื ืืชืจืืืืื:
kubectl get pods
ืืคืงืืื ืืฆืืื ืืช ืืืฆื:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) ืืืฅ ืืืื ื ืืืฉืืืื ืืืคืื loadgen. ืืืืฃ POD_ID ืืืืื ืืืชืฉืืื ืืงืืืืช.
kubectl logs loadgenerator-POD_ID
13) ืืฉื ืืชืืืืช IP ืืืฆืื ืืืช hellosvc:
kubectl get service
ืชืืืืช ืืคืงืืื ื ืจืืืช ืืขืจื ืื:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hellosvc LoadBalancer 10.81.15.158 192.0.2.1 80:31127/TCP 33m
kubernetes ClusterIP 10.81.0.1 <none> 443/TCP 93m
loadgensvc ClusterIP 10.81.15.155 <none> 80/TCP 4m52s
14) ืฉืื ืืงืฉื ื hellosvc: ืืืืฃ EXTERNAL_IP ืืืชืืืช IP ืืืฆืื ืืช hellosvc.
curl http://EXTERNAL_IP
ืืืื ื ืชืืืื ืขื ืืืกืืื
ืืืจ ืืฉ ืื ืืืฉืื ืฉื ืคืจืก ื-GKE. loadgen ืืืื ืืืฉืชืืฉ ื- Kubernetes DNS (hellosvc:80) ืืฉืืื ืืงืฉืืช ืืืืื ืฉืจืชืืืชื ืืืื ืืฉืืื ืืงืฉืืช ื ืฉืจืช ืืคื ืืชืืืช IP ืืืฆืื ืืช. ืืืจืืช ืฉื-Kubernetes ืืฉ ืชืืื ืืช ืจืืืช, ืืกืจ ืืืืข ืขื ืืฉืืจืืชืื:
- ืืืฆื ืืงืืืืื ืฉืืจืืชืื? ืืื ืืืืกืื ืืื ืืฉืืจืืชืื? ืืื ืืืจืืช ืืชืขืืืจื ืืื ืฉืืจืืชืื? ืืื ืืชื ืืืืข ืืื loadgen ืฉืืื ืืงืฉืืช ื ืฉืจืช, ืืื ืชืืจ ืืขืฆืื ืฉืืชื ืื ืืืืข ืืืื ืขื ืืืืฉืื. ืืื ืืขื ืืช ืขื ืฉืืืืช ืืื, ืืื ื ืกืชืื ืขื ืจืฉืืืช ืืคืืืื ืืคืืขืืื ื-GKE.
- ืืืืื. ืืื ืืื ืฉืจืช ืขืื ื ืืืงืฉื ื ืื ืกืช? ืืื ืืงืฉืืช ืืฉื ืืื ืืชืงืืืืช ืขื ืืื ืืฉืจืช? ืืื ืื ื ืืชื ืืืืขืืช ืฉืืืื?
- ืืืืข ืืืืื. ืชื ืืขื ืืื loadgen ะธ ืฉืจืช ืคืฉืื ืขืืืจ HTTP ืื ืขื ืืื
mTLS ?
ืืืกืืื ืขืื ื ืขื ืื ืืฉืืืืช ืืืื. ืืฉื ืื, Istio ืืฆืื ืคืจืืงืกื ืฆืืื
ืืืืืจืื ืืื ื ืฆืืื ืืฉืืื ืืืฆืจืื ืจืฉืช ืฉืืจืืช. ืืจืืืืงืืืจืช ืจืฉืช ืืฉืืจืืช ืืกืคืงืช ืฉืืืช ืฉืืืื ืขื ืืื Kubernetes.
ืืืืืื ืฉืคืจืืงืกื Envoy ืคืืขืืื ืืงืื ืืืื ืจืื ืืฉืืื, ื ืืชื ืืืชืงืื ืืช Istio ืขื ืืื ืืฉืืื GKE ืืืขื ืืื ืฉืื ืืืื ืืงืื ืืืคืืืงืฆืื. ืืื ืขืฉืืช ืงืฆืช ืขืืืื ืืื ืืืืื ืืช ืืืืฉืื ืฉืื ืื ืืืื ืขื ืืื Istio:
- ืฉืืจืืชืื ืืื ืืืืืืืช. ืืคืจืืกืืช ืฉืจืช ะธ loadgen ืงืฉืืจ ืืฉืืจืืช Kubernetes. ืึฒืคึดืืืึผ loadgen, ืฉืืื ื ืืงืื ืืงืฉืืช ื ืื ืกืืช, ืืฉ ืฉืืจืืช.
- ื ืืืื ืืฉืืจืืชืื ืืืืืื ืืืืืช ืืขืื ืฉืืืช. ืืืจืืช ืฉื ืืชื ืืืฉืืืจ ืืฆืืืืช ืฉืืจืืช ืืื ืฉื ื-GKE, Istio ืืืจืฉ ืืื ืืฆืืื
ืฉื ืื ืื ืืืชืื ืืคืจืืืืงืื ืฉืื. ืืงืืืฅ YAML ืืคืืจื ืขืืืจ ืฉืจืช ื ืงืจื httpืื ืืฉืจืช ืืฉืชืืฉ ืืคืจืืืืงืื HTTP... ืื ืฉืจืืช ืืฉืืืืฉ ืืจ"ืค, ืชืืชื ืฉื ืื ืื grpc. - ืคืจืืกืืช ืืกืืื ืืช. ืืื, ื ืืชื ืืืฉืชืืฉ ืืชืืื ืืช ื ืืืื ืืชืขืืืจื ืฉื Istio, ืืื ืคืืฆืื ืชืขืืืจื ืืื ืืจืกืืืช ืฉื ืืืชื ืฉืืจืืช.
ืืชืงื ืช Istio
ืืฉื ื ืฉืชื ืืจืืื ืืืชืงืื ืืช Istio. ืคืืืช
ืืืจ ืืคืฉืจืืช, ืงืจื ืืช ืืืืจืื ืืืชืืื ืืืฆืข ืืช ืืืืจืืืช ืืืชืงื ืช Istio ืืืฉืืื ืฉืื. ืื ืืชื ืจืืฆื ืืืฉืชืืฉ ื-Istio ืขื ืืืืฉืื ืืืืฉ ืฉืื ืฉื ืคืจืก,
ื ืืงืื
ืืื ืืืืื ืข ืืืืื ืืฉืืื Google Cloud Platform ืฉืื ืขืืืจ ืืืฉืืืื ืฉืืื ืืฉืชืืฉืช ืืืืจืื ืื, ืืืง ืืช ืืฉืืื ืืืืืืื ืืืืจ ืฉืืชืงื ืช ืืช Istio ืืฉืืืงืช ืขื ืืืืฉืื ืืืืืื. ืคืขืืื ืื ืชืกืืจ ืืช ืื ืืฉืืื ืืืฉืืื, ืืืื ืืืคืขื ืืืฉืื, ืืืกืงืื ืืืฉืืื ืจืฉืช.
ืื ืืืื?
-
ืืงืืจ ืืช ืืืื ืืืืืืืช ืืืืืช:
-
ืืงืืจ ืืช ืืืืื ืืืืื:
-
ืืื ืืืฉืื Kubernetes:
ืืงืืจ: www.habr.com