á˘áľá˛áŽ á¨á°á¨ááá á áááŹá˝áá˝á ááááááľáŁ ááá á á
áĽá ááááŁá á ááš ááłáŞáŤ ááᢠá˘áľá˛áŽ áśááľááŽá˝á á áá á ááááľ áĽá áááľá°áłá°á á¨á°ááŤáŠ á´áááááá˝á áá áááᣠáŽáá´áááŽá˝ á¨áá°áá áŞáŤ áŽáľ áĽá á¨áá°ááŤáľ áĽááá˝áŁ áĽá áŠá áááľáľ áĽááá
á áŽáá´áááŽá˝ áááľá°áłá°áᢠáľááá
ᣠá¨á˘áľá˛áŽ áá áááľáŤáľ á áĽááá
á´áááááá˝ áá á¨á°áá°á¨á° á ááŤáł á áááááśá˝ áŤáá áá°áá áŞáŤ áĽáá´áľ áĽáá°áá°áŤ ááá
á ááŚáľ áŤá á˘áľá˛áŽ áĽááá
ááłáŞáŤáá˝ áĽá á
áá°-ááłáŚá˝ áĽááľáá á¨ááŤáá á¨áá áá
áá á áἠáľáá á ááááá ááááľ áá°áá áĽá á ááĽáł áá° ááá áááą
áá á¨á°á¨á á á°á¨á áááŞáŤ á˛áá á á ááá áá°áąá á¨ááአáŽáľ áĽáľá¨ GKE áŽáá´ááá áľá¨áľ á¨ááááá áľ á˛áá áľááĽááá á´áááááá˝ á ááłáááľ áĽáá˛á¨áąááľ áŤá°áááᢠáĽáá˛áá á˘áľá˛áŽ á¨áĽááá á á´áááááá˝ ááá áĽáá´áľ áĽáá°áá áá áŤáŤáᢠáá áľá áŽáá´áááŽá˝áŁ áŠá áááľáľáŁ á¨á áááááľ áá¨áŚá˝ ááá á˘áľá˛áŽ ááá á¨ááŤáááľ ááá áĽáá°áá áŤáľáŁáá˘
á°ááŁáŤáľ
á áá áááŞáŤ ááľáĽ á¨áá¨á°ááľá á°ááŁáŤáľ áŤá áá ááá˘
- á¨á ááŤáł á áááááśá˝ áá ááá á¨á áá ááá áá°áá áŞáŤ áááá˘
- áá°áá áŞáŤáá á¨ááá áŽáľ áŤááąá˘
- áááá¨áťáá á ááŤáŁáá˝ ááľáĽ áá¸á.
- á¨áŠá áááľáľ áľáĽáľáĽ ááá áá˘
- ááŤáŁáá˝á áá° áááľá°á áá°ááŤáľ.
á¨ááááá á ááľ
á¨Kubernetes Engine APIá áááááľ áááŞáŤáášá áá¨á°ááĄ-
- áá° ááľ
á¨áŠá áááľáľ áá°á áá˝ á Google ááááľ áááľááá áŽááśá ááľáĽá˘ - ááŽáááľ ááá አááá ááá¨áĄá˘
- á¤áá á áĽá á°ááá á áááááśá˝ áĽáľáŞáá áľá¨áľ áá áĽáᢠáá áĽááľ á°áááá˝á áááľáľ áá˝ááá˘
- áGoogle ááááľ áááľááá ááŽáááľ áá፠áá á¨á፠ááááŠá áŤá¨áááĄá˘
á¨ááłáĽ á á¨áááá áĽáá´áľ ááááľ áĽáá°áá˝á ááá .
á áá
áááŞáŤ ááľáĽ á¨áášáá áá˝áá á¨ááŤááááá Cloud Shell áá áá áá˝ááá˘
á ááŤá áᥠááááľ áźá áá áá
á¨ááááľ áźá á á ááá áĽá áá˝áĄ-
- Python 2 áĽá Python 3 á¨áĽáľááľ á áŤáŁá˘áá˝ (á¨áᎠvirtualenv) áá á áá á¨á°ááአáá¸á.
- á¨áľáĽáá ááľáá ááłáŞáŤáá˝ gcloud, áłáŞá, áᾠи kubectl, á¨ááá ááá ááľááá á°ááá.
- áĽá á¨ááááĄáľ á áááľ
á¨á˝áá á ááłá˘áá˝ :áŹáłáá°á áŽáł , áá á á Cloud Shell ááľáŽáľ á ááľ áá áŁáá á¨á ááľááľ á áś áá¨ááłá.- á Cloud Shell ááľáĽ á¨áľááá ááľáአá¨áá¨áá°á á˘áááľáŁ áŞá ââááá ááá˘
ááá áá
- áá° GCP áŽááśá áááąá˘
- áááŚá˝ ááááľ áźáá áŤáá (ááááľ áźáá á ááĽá) á áá˛á áŽááśá ááľáŽáľ áááá ááá ááá˘
á áłá˝áá ááá
á ááŤá Bᥠá¨áľáĽáá ááľáá ááłáŞáŤáá˝á á á áŤáŁá˘á áá áá
ááááľá ááá áááŽá á ááŤááľ áŽáááŠá°á áá áĽá¨á°áŠ á¨áá á¨áá¨á°ááľá á áŤááľ áááá áĽá ááŤá áŤáľáááááłáá˘
-
á áĽá
Python 3 áĽá Python 2 áááľ á áŤáŁá˘ . -
á¨ááááľ á¤áľá˛áŹá áŤá á¨áľáĽáá ááľáá ááłáŞáŤ áá gcloud. -
áŤá kubectl - á áĽáŽ áááľáŤáľ á¨áľáĽáá ááľáá ááŁáŞáŤ
áŠáŁááŤáśá˝ .gcloud components install kubectl
-
áŤá
áśá¨á á¨áá á á¨á°áĽ áĽáľá (CE) . á¨áľáĽáá ááľáá ááłáŞáŤáá áľá áááá áłáŞááááá á áááŹá˝á á¨ááŤáŁ ááľáá˝á áááá á. -
ááłáŞáŤáá ááŤá
Git áľáŞáľ ááĽáĽá á¨ááá áááá¨áťáá ᨠGitHub áááááľá˘
á¨ááá áŽáľ á áááľ
-
á¨ááá áŽáľ áŤáááą helloserver:
git clone https://github.com/GoogleCloudPlatform/istio-samples
-
áá° ááłá áŽáľ áá፠áááąáĄ-
cd istio-samples/sample-apps/helloserver
á¨á ááŤáł á áááááśá˝ áá áá°áá áŞáŤá áá°áľ
á¨ááá á áááŹá˝á á áááá á¨á°áá á˛áá á áĽá
á áá á¨ááá áááľ á áŤááľá áŤáá ááá˘
- á ááááá ááľ á¨áá¨á¨áť ááĽáĽ áŤáá ááá á áááá á áááŁ/, áá á "áá ááá" áá° áŽááśá áŤáľáá.
- ááľáá: áľáŤáá á¨ááá áľááŞááľ á áááá, á á´áŽááľ áááá á¨áá˝á á¨áĽáŤááá˝ áĽááľá˘
áá°áá áŞáŤá á¨ááá áŽáľ á áááľ áá
á¨ááá á áááŹá˝áá ááá°áľ á ááááľ áźá ááá á áŽáááá°áá áá áŤááąáľá˘
1) á áŤáłáá ááľáĽ á˘áľá˛áŽ-ááááá˝/ááá-áá°áá áŞáŤáá˝/ááá°áá¨á ááŽáĽ á áááá:
python3 server/server.py
á áá áá á áááá á¨áá¨á°áá ááłáŤá:
INFO:root:Starting server...
2) áĽáŤááá˝á áááá áá á°áááá ááľáŽáľ ááááą á áááá. ááááľ áźáá áĽá¨á°á áá á¨áá áá ááá áá áááááľ á¨á áá á áśáá á á
áŤáľááá˘
3) áĽáŤá ááአá áááá:
curl http://localhost:8080
á áááá áááśá˝áĄ-
Hello World!
4) á¨ááá áŽáąá áŤáá¨áąá áľ áá፠áá°áŤáá áá፠áááą ááľáá:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
5) á¨áá¨á°ááľá á¨á áŤáŁá˘ á°ááááŽá˝ ááá áŠá˘
export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=5
6) ááľááá virtualenv:
virtualenv --python python3 env
7) áááŁá á áŤáŁá˘á áŤááĽáŠ;
source env/bin/activate
8) ááľáááśá˝á á ááá ááľáá:
pip3 install -r requirements.txt
9) ááľááá ááľáá:
python3 loadgen.py
á áá áá ááľáá á¨áá¨á°ááá áááĽááľ áŤáłáŤááĄ-
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) áááá ááľáá и á áááá, á áľáᣠCtrl-c á áĽáŤááłááą á°áááá ááľáŽáľ.
11) á á°áááá ááľáŽáľ ááľáĽ ááľáá áááŁá á áŤáŁá˘á á áŚáá
deactivate
á ááŤáŁáá˝ ááľáĽ áááá¨áť áá¸á
áááá¨áťáá á GKE áá ááááľ á¨ááá áááá¨áťáá áá¸á áŤáľáááááłá - á áááá и ááľáá - ááľáĽ
áááá¨áť áá° ááŤáŁ ááľáĽ ááá¸á, áŤáľáááááłá Dockerfile. Dockerfile á¨áá°áá áŞáŤáá ááá áŽáľ áĽá áĽááášá áááááŁáľ áľáááá˝á á¨áááá˝ á¨á˝áá ááá ááá˘
ááłáá á áľááľá á ááᢠDockerfile á á áááá и ááľáá ááľáá˝á ááá°áĽá°áĽ ááá á áľááá áľáááá˝. á¨áłá˝ - Dockerfile á á áááá:
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 ááľá áĽáá° áá°á¨áľ. - áĄáľá á áł . á¨ááá áááá˝á áá° á¨á áá á¨áľáŤ áá፠áááá áŁá (á áĽá áááł áĽáť á áááá.py) áá° ááŤáŁá á¨ááá áľáááľ.
- ááá˘áŤ ááĽáĽ ááŤáŁáá ááááá áĽá á áá á¨ááááá áľááá ááááťá. á áĽá áááł áá áľáĽáá áĽááľá á˛á°áŠáľ á¨áá á¨á áá á°ááłáłá áá áááľ ááťááᢠá áááá.py á¨ááአáŽáľ.
- áĄáľá áááἠáááá áá ááá á áááá á áá°áĄ á áŠá áá¨áá áá áĽáá 8080. áá
áĄáľá á áá°áá
áá°áŚá˝ áŤáááŁá . áá áá°áĄá áááááľ á¨ááŤáľáááá á ááľ ááááľ á°ááľ ááᢠ8080 ááŤáŁáá á˛áááŠ.
áááá¨áťáá áá° ááŤáŁ áááľááŁáľ á áááááľ áá
1) á¨áá¨á°ááľá á¨á áŤáŁá˘ á°ááááŽá˝ áŤáááᢠá°áŤ PROJECT_ID áá° á¨áĽááľá GCP ááŽáááľ ááłáááŤá˘
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
áĽá´áśá˝á áá áá PROJECT_ID и GCR_REPO á¨áśá¨á ááľáá á˛ááᥠáłá áŤá°áááłá áĽá áá° á¨áá áŽáá´ááá áááἠááááľá˘
2) ááľááá ááľáá ááłáŞáŤ ááŁáŞáá á¨áá˛á ááŽáááľ áŤááá gcloud.
gcloud config set project $PROJECT_ID
3) ááľááá ááľáá ááłáŞáŤá ááŁáŞáá áá áŤááá gcloud.
gcloud config set compute/zone us-central1-b
4) á¨áŽáá´ááá áááἠá¤áľ á áááááľ á áá˛á ááŽáááľ ááľáĽ ááááąá áŤá¨áááĄá˘
gcloud services enable containerregistry.googleapis.com
ááŤáŁ á áááá
-
ááłáá áá°áááá áľ áá፠áááą á áááá:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
-
á áá áá ááľáá áŤá°áŁáľáĄ Dockerfile áĽá á¨áá áá°á á¨ááá˝áŤá¸á á¨á áŤáŁá˘ á°ááááŽá˝áĄ-
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
áááŞáŤ -t ᨠDocker áááŤá ááááá. áá ááŤáŁáá á˛áá á¨áá ááá áľ á¨ááľá áľá áá.
- ááľáá áá° áŽáá´ááá áááἠáľáááĄ-
docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1
á¨ááľá á ááŤáŁ
1) ááłáá áá°áááá áľ áá፠áááą ááľáá:
cd ../loadgen
2) ááľáá á°áĽáľáĽ;
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .
3) ááľáá áá° áŽáá´ááá áááἠá¤áľ ááľáááĄ-
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 áľáĽáľáĽ ááá áá˘
áĽááá áŽáá´áááŽá˝ á ááááľ áźá á¨áášáá áá˝á ááá áľáĽáá áŁáá áŽáááá°á áá áá አáá˝ááᢠáłáŽáá áŠáŤ. ááá áá á ááá¨áľ á áŤáŁá˘ ááľáĽ áŽáá´áááŽá˝á á ááá¨ááááľ ááááááľ ááááľ áŤáľáááááłá. áááłáᣠáŽáá´áááŽá˝ áá áá á¨áá°áŠ áááá¸áá á¨ááŤá¨ááἠáľáááľ áŤáľáááááłáᣠáĽá áľáŤáá á¨á¨áᨠá°á¨á᪠á¨áĽá ááŤá˘áŤ á ááŁááá˝á ááá¨áá áĽá ááá˝á¨áá¨á ááááľ áŤáľáááááłáá˘
á áŽáá´ááá á¨á°áŤá áá°áá áŞáŤáá˝á ááá áá áá áá áá˝ááá˘
á¨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. áááłáᣠá¨áá¨á°áá áľááá á¨á áááá˝á áááł ááá áá˝áááĄ-
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
á¨áŠá áááľáľ ááá á áá°-ááłáŚá˝
áľáá á GKE áá áá°áá áŞáŤá áŤáłáŤá-
á GKE ááľáĽ áŽáá´áááŽá˝á á¨áá°ááŤáľá á ááľ á¨áŠá áááľáľ ááá á áá° ááłáŚá˝á áááŠá˘ á¨á áá áááá á¨ááá áá¨á¨áť áá á áááá˝ á áá˘
- á áááá˝ áĽá áľáĽáľáŚá˝. á GKE ááľáĽ, ááľááá ááááľ áááŁá áá˝á áá. á ááá˝ á¨áŠá áááľáľ ááľá¨áŽá˝ áá á ááľ ááľááá ááááľ áŽááá°á ááá áááŁá áá˝á ááá áá˝áá. áááľá°á á áŽáá´ááá á¨á°áŤá áá°áá áŞáŤá á¨ááŤá°ááŠá áľ áĽáá° á ááľ ááá ááá አá¨áá˝á á¨á áááá˝ áľáĽáľáĽ ááá˘
- ááľáľ. á áŠá áááľáľ ááľáĽ áŽáá´áááŽá˝ á ááľ ááľáĽ áá áŤá. á áŠá áááľáľ ááľáĽ á¨ááá ááľ á¨ááá¨ááá ááá ááᢠááľ á ááľ ááá á¨á፠á áá ááŤáŁáá˝á áááá. á¨á áááá áŽáá´áááŽá˝á áłá°ááŤáá
áĽá ááľáá á á°áᨠááľ ááľáĽ. á ááľ ááľáĽ áĽá ááŤáŁáá˝ á˛áአ(áááłá á¨áá°áá áŞáŤ á áááá áĽá
á°áŞ á áááá ), áŽáá´áááŽá˝ áĽáá° á ááľ á áŤá á¨áá°áłá°áŠ áĽá á¨ááľ ááĽáśá˝á áááŤá. - áá°ááŤáľ. á áŠá áááľáľ ááľáĽ á ááľ áá°ááŤáľ á°ááłáłá á¨ááłáá˝ áľáĽáľáĽ á¨áá ááá ááᢠáá°ááŤáą á áááľá°á ááśá˝ áá á¨áá°áŤáŠ á ááŤáł á¨ááľ á ááá˝á ááááŤáᢠáá°ááŤáľ áŤáá°áłáŤáá¸á ááá ááá˝ á¨ááá°áĄ ááśá˝á á áŤáľ á°á áá°áŤáá˘
- Kubernetes á áááááľ. á GKE ááľáĽ á¨áá°áá áŞáŤ áŽáľ á˛áŤááą á ááŤá¨áá¸á áŤáá áááááľ ááľáá и á áááá. á Cloud Shell áááŁá áá˝á ááá á´áľááśá áá á áááááśá˝á á˛ááአáĽáŤááá˝á áá¨ááᢠá áááá á á áŤáŁá˘áŤá áááŞáŤ: 8080. á áá´ áá° GKE á¨á°á°áአááľáá˝ á ááá ááśá˝ áá áá¨ááááᢠá ááŁáŞáŁ ááą á á¨áľáá ááľ áá áĽáá°áá ፠áá ááá ááĽáĽá á¨áááľáᣠáľááá
áĽááľá
áĽáááĽáá˝ ááá áá á¨á áá á áľáŤáťáá˝ á¨ááá˘
á¨á áá á áľáŤáť áááááľ á áááá, á ááłáá˝ á ááľ áá á¨á ááłá¨ áá¨áĽ áá áá፠áááá áŤáľáááááłá. ፠áá áááŠKubernetes á áááááľ . á¨áŠá áááľáľ á áááááľ áááľ áľáĽáľáĽ á¨ááŤááἠá¨áá¨á¨áť ááĽáĽ áá°áŁáᢠáĽááśá˝ á áá˘á¨á áááááľ ááááśá˝ . á áááá áá ááá LoadBalancer, áá á ááááááľ ááŤá á¨á áá á áľáŤáť áŤáááŁá á áááá á¨áĽá á áá.
áŠá áááľáľ á¨á˛á¤áá¤áľ áľáá˝á á¨ááá°áĽ á áĽáŽ á¨á°á°áŤ á¨á˛ á¤á á¤áľ á˛áľá°á á áá (áááłááĄ- helloserver.default.cluster.local) á áááááśá˝. ááá á ááľáá áááŁáá á áááľá°á ááľáĽ áŤá áĽáááĽáá˝ á áááľá°á ááľáĽ áŤá ááá˝ ááśá˝ áá á áá á áľáŤáť áááááᢠá¨á˛ á¤á á¤áľ áľá á¨áááľá°á áá áá áá á ááťááᣠáááłá á ááááľ áźá ááá á áŽáááá°á ááá˘
áŠá áááľáľ ááááŁá
á áááŹá˝áá á¨ááአá˛áŤáŤááą á¨ááľ á áľááá á¨áááá áľáĽáá á°á á ááá python3
á áááá.py
á˘áááŤá˛á âáá á á áľááâ á¨áááá ááľ áŤááááłáá˘
áŠá áááľáľ áá ááá
á¨áááááá áááł á áááá˝ ááá á áááá˝ ááľáĽ áá ááá
ááłáá ᨠYAML ááá ááá á áááá и ááľáá. áĽáŤááłáṠᨠYAML ááá á¨áá°ááŤáá ááá áĽá á¨áŠá áááľáľ á áááááľ á¨áááááá áááł ááááťáá˘
á áááá.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
- ááááľ á¨áĽááá á áááľ áŤááááłá.
- ááłáłáł.áľá á¨áá°ááŤáąá áľá ááááťáá˘
- á¨ááááŞáŤ ááľá ááááŽá˝ á¨áááááá áááł ááá፠ááá.
- áááá ááááŤáá˝ á¨áááááá á¨ááłáá˝ ááĽá áŤááááłá.
- ááá áľáá.á áĽááľ á¨ááľ á áĽááľ áááááᢠá ááľ áááá ááľáĽ ááľá á áᢠááľá, áá á á¨áŽáá´ááá áááἠááľáĽ áááŁáľ áŤáá áľá á¨ááľáá áľá ááááťá.
á áááááą áĽáá°áá¨á°áá ááááťáá˘
apiVersion: v1
kind: Service
metadata:
name: hellosvc
spec:
type: LoadBalancer
selector:
app: helloserver
ports:
- name: http
port: 80
targetPort: 8080
- LoadBalancer: á°áá áá˝ áĽáŤááá˝á áá° ááľ ááá á¨á á á á áľáŤáť áááŤáᣠáá á áá á¨á áá á áľáŤáť áŤáá áĽá á¨áĽá á áá á¨ááá ááá˘
- á˘áá áá°áĽ: áĽáá°ááłáľáłáá°á, áĄáľá EXPOSE 8080 в Dockerfile áá°áŚá˝ á ááá¨á á. áá°áĄá á á áá áá 8080ááŤáŁáá ááááľ áĽáá˛á˝á á áááá á¨áĽá á ááᢠá áĽá áááł helosvc.default.cluster.local:80 (á áá áľá: helosvc) á¨áá°áĄ áá ááááłá 8080 ááľ á áá á áľáŤáťáá˝ helloserver.
- áá°áĽ: áá á áááľá°á ááľáĽ áŤá ááá˝ á áááááśá˝ áĽáŤááá˝á á¨áááŠá áľ á¨áá°áĽ ááĽá ááá˘
ááľáá.yaml
á¨áá°ááŤáľ ááá á ááľáá.yaml áááľáá á áááá.yaml. ááŠááą á¨á°áá¨áá ááá á ááľ ááá ááá appro. á¨áááááľá á¨á áŤáŁá˘ á°ááááŽá˝ ááááťá ááľáá áĽá áá°áá áŞáŤáá á¨ááአá˛áŤááą á¨áŤááľá˘
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
á ááľ áá ááľáá áááľáŠ á¨ááᥠáĽáŤááá˝á á ááá ááᢠááááľ á ááááˇá áááľá°áá áá. áá á áááľ á áááľá°á ááľáĽ áŤá á áááááśá˝ áá ááá áľ á¨áá˝ááľá áá á¨á áá á áľáŤáť áŤáááŁáᣠááá áá áá á áá á áľáŤáť ááá á°áá áá˝ á¨á°ááá á áá°ááá˘
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) áááľ á áááá.yaml á á˝áá á ááłá˘ ááľáĽ.
3) á ááľá ááľáĽ áľáá áá°áŠ ááľá áá° Docker ááľáá áľáá˘
image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1
á°áŤ PROJECT_ID áá° á¨áĽááľá GCP ááŽáááľ ááłáááŤá˘
4) áŤáľááᥠáĽá ááá á áááá.yaml.
5) ᨠYAML áááá áá° áŠá áááľáľ áŤá°ááŠáľáĄ-
kubectl apply -f server.yaml
á á°áłáŤ áááł á˛á ááá áľááá á¨áá¨á°ááá áŽáľ áŤááŁáá˘
deployment.apps/helloserver created
service/hellosvc created
6) áá°áááá áľ áá፠áááą ááľáá:
cd ../loadgen
7) áááľ ááľáá.yaml á á˝áá á ááłá˘ ááľáĽ.
8) á ááľá ááľáĽ áľáá áá°áŠ ááľá áá° Docker ááľáá áľáá˘
image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1
á°áŤ PROJECT_ID áá° á¨áĽááľá GCP ááŽáááľ ááłáááŤá˘
9) áŤáľááᥠáĽá ááá ááľáá.yamlᣠá¨á˝áá á ááłá˘áá áááá˘
10) ᨠYAML áááá áá° áŠá áááľáľ áŤá°ááŠáľáĄ-
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) á¨áá°áá áŞáŤ áááἠááľáłááťáá˝á á¨ááľ áááŁáľ ááľáá. á°áŤ POD_ID á¨ááłáá áááľ áá° áááŤá.
kubectl logs loadgenerator-POD_ID
13) á¨áá á áá á áľáŤáťáá˝á áŤáá helosvc:
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) áĽáŤá ááአhelosvc: áá°áŤáľ EXTERNAL_IP áá° ááŤá á¨á áá á áľáŤáť helosvc.
curl http://EXTERNAL_IP
á˘áľá˛áŽ áá áĽááá°áľ
á áľááľáá áá° GKE á¨á°áá¨á áá°áá áŞáŤ á áááľá˘ ááľáá Kubernetes Რá¤á á¤áľ áá áá áá˝áá (helosvc:80) áĽáŤááá˝á áááá á áááááĽá áĽáŤááá˝á ááá áá˝áá á áááá á ááŤá á¨á áá á áľáŤáť. ááá áĽááłá áŠá áááľáľ áĽá áŁá áŞáŤáľ á˘áá¨áá áľáá áááááśáš á ááłááľ áá¨ááá˝ áááľáááĄ-
- á áááááśá˝ áĽáá´áľ ááááá? á á áááááśá˝ ááŤá¨á áŤá áááááśá˝ áááľ áá¸á? á á áááááśá˝ ááŤá¨á á¨áľáŤáá áá°áľ áĽáá´áľ áá? áŤáá áŤááá ááľáá áĽáŤááá˝á áááŤá á ááááááá áá áľá á áááŹá˝á ááá á¨ááŤáááľ ááá áĽáá°áá á áľáĄáľá˘ ááĽááá áĽáŤááá˝ áááľ áááľá áľáŁ á GKE ááľáĽ áŤááľá á¨áŠáŤ ááśá˝ áááá áĽáááá¨áľá˘
- áááŞáŤáá˝. áá áŤá á áá á áááá ááᢠáĽáŤá ááá˝ áá°áŁá? á á°á¨ááľ áľááľ áĽáŤááá˝ á á áááአááá áá? á¨áľá á°áľ áááááśá˝á áá°áŁá?
- á¨á°á
áááľ áá¨á. ááŤá¨á áľáŤáá ááľáá и á áááá áĽáť áŤááá HTTP ááá á
mTLS ?
á˘áľá˛áŽ ááĽááá
áá áĽáŤááá˝ áááľ áá°áŁá. áá
áá áááľá¨á á˘áľá˛áŽ á¨áá ááŞá ááŽáá˛á áŤáľáááŁáá˘
á áááĽáá°á ááŽáá˛áá˝ ááŤá¨á áŤáá áááááľ á¨á áááááľ áá¨áĽ ááá°ááłáᢠá¨á áááááľ áĽáááá á ááá´áá¸á á áŠá áááľáľ á ááľ áá á¨ááĽáĽá ááĽááĽá áá°áŁáá˘
á¨áááĽááľ ááŽáá˛áá˝ á áŤáłá¸á áŽáá´áááŽá˝ ááľáĽ áľááá°áŠ á˘áľá˛áŽ á GKE áááľá°á áá á áá°áá áŞáŤá áŽáľ áá ááá áááŚá˝ áłáá°á¨á ááŤá áá˝ááᢠááá áá áááá¨áťáá á á˘áľá˛áŽ áĽáá˛á°áłá°á áááľá¨á á ááłááľ áľáŤáá˝á á°áá°áááĄ-
- áááá áĽááá˝ á áááááľ. áá° áá°ááŤáľ á áááá и ááľáá ᨠKubernetes á áááááľ áá á¨á°áłá°á¨. áĽááłá ááľáá, áᢠáĽáŤááá˝á á¨áááá á, á áááááľ á á.
- á á áááááśá˝ ááľáĽ áŤá áá°áŚá˝ áľáá˝ áááŤá¸á áááŁá. ááá áĽááłá á¨á áááááľ áá°áŚá˝ á GKE ááľáĽ áľáá¸á áłáááá˝ ááá á˘á˝ááᣠá˘áľá˛áŽ áĽáá˛áááš ááááá
á¨áá°áĽ áľá á áĽáą ááŽáśáŽá áá°á¨áľ. á YAML ááá ááľáĽ áá°áĽ á á áááá á°á ááˇá httpááááŤáąá á áááአááŽáśáŽáá áá ááá HTTP. á¨áá á áááááľ á°á á áá áá ááá˛áá°áĄá áľá áľá°áŁáá grpc. - áá°ááŤáľ á°á áááᢠáľááá á¨á˘áľá˛áŽ á¨áľáŤáá á áľá°áłá°á áŁá áŞáŤáľá áááłá áľáŤááá á á°ááłáłáŠ á áááááľ áľáŞáśá˝ ááŤá¨á áá¨áááá áá áá áá˝ááá˘
ááŤá
Istio á áááŤá áááľ ááááśá˝ á áᢠáá˝áá
á ááľ á ááŤá ááá¨áĄáŁ á°áá˘áá áááŞáŤ ááááá áĽá Istio á á áááľá°áá áá áááŤá áááŞáŤáášá áá¨á°áᢠIstio á á á á˛áľ á¨á°áá¨áá áá°áá áŞáŤá áá áá áá á¨ááááŁ
áá˝áłáľ
á áá áá áá¨áŞáŤ áľáá ááľ áá°á áááŁá¸á ááĽá áśá˝ áá° ááá ááááľ áááľááá á áŤáááľá áĽááłáá¨áá á˘áľá˛áŽ á¨áŤá áĽá á¨ááá á áááŹá˝á áá á¨á°áŤááą á áá á¨áĽá ááŤáŁáá áááľá°á áá°ááᢠáá áĽáá° ááľááľ ááłááá˝áŁ á˛áľáŽá˝ áĽá á¨á ááłá¨ áá¨áĽ ááĽáśá˝ áŤá áááá á¨áááľá°á ááĽáśá˝ áŤáľáááłáá˘
ááĽá áááľáá?
-
á¨áá¨á°ááľá á´áááááá˝ áŤáľáąáĄ
Docker áŽáá´áááŽá˝ á¨ááŤáŁ áááἠá¤áľ áŠáŁááŤáśá˝ á.áŹ.á˘. á¨á áááááľ áá¨áĽ Istio
-
á¨áá¨á°ááľá ááłáŞáŤáá˝ áŤáľáąáĄ
-
á¨áŠá áááľáľ á˝áá°-ááłáŚá˝á áááŠáĄ-
ááá: hab.com