Istio ááẠááŒáá·áºáá±áá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáá»áááºáááºáááºá áá¯á¶ááŒá¯á¶áá±ážááŸáá·áº á
á±á¬áá·áºááŒáá·áºááŒááºážá¡ááœáẠá¡áááºááŒá±áá±á¬áááááá¬áá
áºáá¯ááŒá
áºáááºá Istio ááẠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠááœááºááááºáá¬áá»á¬ážá¡áá«á¡ááẠá¡ááá®áá±ážááŸááºážáá¯ááºáá»á¬ážááŸáá·áº ááŸá®ááá¯ááŸá¯áá»á¬ážá¡á¬áž áá¯ááºááá¯ážáááºá¡ááœáẠááœááºááááºáá¬áá»á¬ážá¡áá«á¡ááẠáá±á¬á·ááºáá²ááºáá»á¬ážááá¯áááºáááºáááºááŸáá·áº á
á®áá¶ááá·áºááœá²áááºá¡ááœáẠáááºážááá¬á¡áá»áá¯ážáá»áá¯ážááᯠá¡áá¯á¶ážááŒá¯áᬠá¡ááá¯áá«ááœááºááááºáá¬áá»á¬ážááᯠá
á®áá¶ááá·áºááœá²áááºá¡ááœáẠKubernetesá ááá¯á·ááŒá±á¬áá·áºá Istio ááŸáá·áºá¡áá¯ááºáá¯ááºááẠá€áááºážááá¬áá»á¬ážááá¯á¡ááŒá±áá¶á áááºáá±á¬ááºááŸá¯áá»á¬ážá
áœá¬áá«áá±á¬ á¡ááºááá®áá±ážááŸááºážáá
áºáᯠáááºááá¯á·á¡áá¯ááºáá¯ááºáááºááᯠáááºááááá«áááºá ááá«áá² Istio á¡áááºá á€áááááá¬áá»á¬ážááŸáá·áº ááá±á¬ááá¬ážáá»á¬ážááẠááá·áºá¡ááœáẠá¡áá»áœááºážááááºááŸááá±ááŒá®ááá¯áá»áŸááºá á€áááºáááºážá
á¬ááᯠáá»á±á¬áºááŒá®áž ááá¹áááá¯á· ááá·áºááá·áºááœá¬ážáá«á
á€áááºááŸá¬ ááá°áá¬á¡á¬ážááŒáá·áº ááá·áºá¡á¬áž á€áááºážááá¬áá»á¬ážááᯠá¡ááŒá±áá¶áá¬ážáááºááŸá¯áá±ážáááºá¡ááœáẠá¡áááºážá¡ááŒá áºáá¯ááºá០GKE ááœááºááááºáá¬á¡áá áá¯ááºáááºážá ááºáá áºáá¯áá¯á¶ážááᯠá¡ááá·áºááá·áºááŒááºáááºážááœá¬ážááá·áº áááºážááœáŸááºáá»ááºááŒá áºáááºá Istio ááẠá€áááºážááá¬áá»á¬ážá áá«áá«ááᯠáááºáá²á·ááá¯á· á¡áá¯á¶ážáá»áá±áááºááá¯áááºáž áááºááœá±á·ááá«áááºá áááºážááẠááœááºááááºáá¬áá»á¬ážá Kubernetesá áááºáá±á¬ááºááŸá¯ááœááºáá»á¬áž ááá¯á·ááá¯áẠIstio á¡ááŒá±á¬ááºážááᯠáááºáá¬ááŸááááᯠáá°ááá«áááºá
áá¬áááºáá»á¬ážááá¯
á€áááºáááºážá á¬ááœááºá áááºááẠá¡á±á¬ááºáá«áá¯ááºáá±á¬ááºá áá¬áá»á¬ážááᯠááŒá®ážááŒá±á¬ááºá á±áááá·áºáááº-
- áááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááŒáá·áº ááá¯ážááŸááºážáá±á¬ hello world á¡ááºááºááᯠáááºáá°áá«á
- á¡áááºážá¡ááŒá áºáá¯ááºá០á¡ááá®áá±ážááŸááºážááᯠááœáá·áºáá«á
- áá»áŸá±á¬ááºááœáŸá¬ááᯠááœááºááááºáá¬áá»á¬ážááœáẠáá¯ááºááá¯ážááŒááºážá
- Kubernetes á¡á á¯á¡áá±ážááᯠáááºáá®ážááŒááºážá
- ááœááºááááºáá¬áá»á¬ážááᯠá¡á á¯á¡áá±ážáá áºáá¯ááá¯á· ááŒáá·áºáá»ááºáá»áá¬ážááŒááºážá
áááºáá áááºááŸá®
Kubernetes Engine API ááá¯ááœáá·áºááẠááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááá¯ááºáá¬áá«-
- ááœá¬ážáá«
Kubernetes á¡ááºáá»áẠá á¬áá»ááºááŸá¬ Google Cloud Platform ááœááºááá¯ážááºááœááºá - ááá±á¬áá»ááºáá áºáá¯ááᯠáááºáá®ážáá« ááá¯á·ááá¯áẠááœá±ážáá»ááºáá«á
- API ááŸáá·áº áááºá ááºáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠááœáá·áºááŒá®ážáááºá¡áá á á±á¬áá·áºáá«á áááá áºá¡áááºážááẠááŒá¬ááá¯ááºáááºá
- áááºá Google Cloud Platform ááá±á¬áá»ááºá¡ááœáẠááœá±áá±á¬ááºážáá¶ááŒááºážááᯠá
áá
áºááá·áºááœááºážáá¬ážááŒá±á¬ááºáž áá±áá»á¬áá«á
á±á
ááœá±áá±á¬ááºážáá¶ááŒááºážááᯠáááºááá¯á·ááœáá·áºááááºááᯠáá±á·áá¬áá«á .
á€áááºáááºážá
á¬ááœááºá áááºááẠvirtual machine ááá¯ááŒááºáááºáá±ážááá·áº Cloud Shell ááá¯áá¯á¶ážááá¯ááºáááºá
ááœá±ážáá»ááºá áᬠA- Cloud Shell ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
Cloud Shell á¡áá¯á¶ážááŒá¯ááŒááºážá á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬áž
- Python 2 ááŸáá·áº Python 3 ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáááºáááºážáá»ááºáá»á¬áž (á¡áá«á¡ááẠááá) á¡ááŒáá·áºá¡á á¯á¶ ááŒááºáááºáá¬ážáá«áááºá
- Command Line Tools áá»á¬áž gcloud, áááºá¹ááá¬áá«, git О kubectláá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬ááẠááá·áºááœááºážááŒá®ážááŒá áºáááºá
- ááá·áºááœáẠááœá±ážáá»ááºááẠáá»á¬ážá
áœá¬ááŸááááºá
á á¬áá¬ážáááºážááŒááºáá°áá»á¬áž :áá¯ááºá¡ááºáá®áᬠCloud Shell áááºážááá¯ážá ááááºááŸá áááºážááŒááºááŸá¯áááºá¹áá±áááŒáá·áº ááœáá·áºáá¬ážáááºá- Cloud Shell ááŸá command line ááŸááœáá·áºáá±á¬ Emacsá Vim ááá¯á·ááá¯áẠNanoá
á¡áá¯á¶ážááŒá¯áááº
- GCP ááœááºááá¯ážááºááá¯á· ááœá¬ážáá«á
- á á¬áááºáááºážáá»á¬áž Cloud Shell ááᯠá¡áááºááœááºážáá«á GCP ááœááºááá¯ážááºáááºážááá¯ážáááááºááœáẠ(Cloud Shell ááᯠá¡áááºááœááºážáá«á
á¡á±á¬ááºááá¯ááºážááŸá¬
ááœá±ážáá»ááºááŸá¯ B- Command Line Tools ááᯠá ááºááœááºážá á¡áá¯á¶ážááŒá¯ááŒááºážá
á¡áááºá áááºááẠLinux ááá¯á·ááá¯áẠmacOS á¡áá¯á¶ážááŒá¯ááá·áº ááœááºáá»á°áá¬ááœáẠá¡áá¯ááºáá¯ááºáá±áá«áá áááºááẠá¡á±á¬ááºáá« á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠconfigure áá¯ááºááŒá®áž ááá·áºááœááºážááẠááá¯á¡ááºáááá·áºáááº-
-
á áááºááŒáá¯ááºáá¯ááºáá«á
Python 3 ááŸáá·áº Python 2 ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áááºáááºážáá»áẠ. -
Cloud SDK ááᯠááá·áºááœááºážáá«á command line tool ááŒáá·áº gcloud. -
áááºááŸááºááẠkubectl - command line tool ááŒáá·áºá¡áá¯ááºáá¯ááºááŒááºážá
Kubernetes .gcloud components install kubectl
-
áááºááŸááºáááº
Docker Community Edition (CE) . áááºááẠcommand line tool ááá¯á¡áá¯á¶ážááŒá¯áááá·áºáááºá áááºá¹ááá¬áá«ááá°áá¬á¡ááá®áá±ážááŸááºážá¡ááœáẠááœááºááááºáá¬áá¯á¶áá»á¬ážááᯠáááºáá®ážáááºá -
tool ááᯠinstall áá¯ááºáá«á
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
startup ááŸá¬ áá¬áá¬á á¡á±á¬ááºáá«ááá¯á·ááá¯ááŒááá¬ážáááºá
INFO:root:Starting server...
2) áá±á¬ááºážááá¯áá»ááºáá»á¬ážááá¯áá±ážááá¯á·ááẠá¡ááŒá¬áž terminal window ááá¯ááœáá·áºáá«á áá¬áá¬á. á¡áááºá áááºááẠCloud Shell ááá¯á¡áá¯á¶ážááŒá¯áá±áá«áá á¡ááŒá¬ážá
ááºááŸááºááá¯ááœáá·áºááẠadd icon ááá¯ááŸáááºáá«á
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) Run ááá:
virtualenv --python python3 env
7) áááááááºáááºážáá»ááºááᯠá¡áááºááœááºážáá«á
source env/bin/activate
8) ááá¯á¡ááºáá»ááºáá»á¬ážááᯠáááºááŸááºáá«á loadgen:
pip3 install -r requirements.txt
9) Run loadgen:
python3 loadgen.py
startup ááŸá¬ loadgen á¡á±á¬ááºáá« áááºáá±á·áá»áºáá²á·ááá¯á· áá áºáá¯áá¯ááᯠááŒááááº-
Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080
á¡ááŒá¬áž terminal window ááœáẠáá¬áá¬á ááœááºááá¯ážááºááá¯á· á¡á±á¬ááºáá«áááºáá±á·áá»áºáá»á¬ážááᯠáá¯ááºáá±ážáááº-
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 virtual machine) áá±á«áºááœáẠáá¯ááºáá±á¬ááºáááºá ááá¯á·ááŒá±á¬áá·áºáááºáá¯á¶ážááá¯ááºáááºá localhostáá±á¬ááºážááá¯áá»ááºáá»á¬ážáá±ážááá¯á·ááẠáá¬áá¬á.
10) áááºááẠloadgen О áá¬áá¬ááááºáá«á Ctrl-c terminal window ááá¯ááºážááœááºá
11) terminal window ááœáẠloadgen áááááááºáááºážáá»ááºááᯠááááºááá¯ááºáá«-
deactivate
áá»áŸá±á¬ááºááœáŸá¬ááᯠááœááºááááºáá¬áá»á¬ážááœáẠáá¯ááºááá¯ážááŒááºážá
GKE ááœáẠá¡ááá®áá±ážááŸááºážááᯠrun áááºá áááºááẠááá°áá¬á¡ááá®áá±ážááŸááºážááᯠáá¯ááºááá¯ážááẠááá¯á¡ááºáááºá áá¬áá¬á О loadgen - in
áá»áŸá±á¬ááºááœáŸá¬áá
áºáá¯ááᯠááœááºááááºáá¬áá
áºáá¯áá²ááá¯á· áá¯ááºááá¯ážáááºá áááºááá¯á¡ááºáááºá dockerfile. dockerfile á¡ááºááá®áá±ážááŸááºážá á¡áááºážá¡ááŒá
áºáá¯ááºááŸáá·áº áááºážá ááŸá®ááá¯ááŸá¯áá»á¬ážááᯠáááºáá±á¬ááºáááºá¡ááœáẠá¡áááá·áºáá±ážáá»ááºáá»á¬ážááᯠáááºááŸááºááá·áº á
á¬áá¬ážááá¯ááºáá
áºáá¯ááŒá
áºáááºá
á¥ááᬠááŸáááŒá®ážáá¬ážáá«á dockerfile á¡ááœáẠáá¬áá¬á О loadgen áá¯ááºáá¯á¶áá»á¬ážááá¯á á¯áá±á¬ááºážááẠááá¯á¡ááºáá±á¬ command áá»á¬ážá¡á¬ážáá¯á¶ážááŸáá·áºá á¡á±á¬ááºááœááº- 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" ]
- á¡ááœá²á· Python:3-á¡ááŒá±áá¶á¡ááŒá
Ạáá«ážááœáŸá¬áááºá Docker á áá±á¬ááºáá¯á¶ážááœááºááᯠáá¯á¶ážááá¯á· ááŒá±á¬áá¬ážáááºá
Python 3 áá¯á¶ á¡ááŒá±áá¶á¡ááŒá áºá - á¡ááœá²á· áá±á¬áºáá®á . á¡áááºážá¡ááŒá áºááá¯ááºáá»á¬ážááᯠáááºááŸáá¡áá¯ááºáá¯ááºáá±áá±á¬ áááºážááœáŸááºááá¯á· áá°ážáá°ááẠ(áá»áœááºá¯ááºááá¯á·áááá á¹á ááœááºáᬠserver.py) ááœááºááááºáá¬áááá¯ááºá áá áºááá¯á·á
- ENTRYPOINT container ááá¯á áááºáááºá¡áá¯á¶ážááŒá¯áá±á¬ command ááá¯áááºááŸááºáááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá ဠcommand ááẠáááºá¡áá¯á¶ážááŒá¯áá²á·ááá·áºá¡áá¬ááŸáá·áº áá®ážáá«ážáá°áá®áá«áááºá server.py á¡áááºážá¡ááŒá áºáá¯ááºááŸá
- á¡ááœá²á· áá±á¬áºáá¯ááºáá«á ááœáŸááºááŒáááºá áá¬áá¬á port ááŸáááá·áº data ááá¯á
á±á¬áá·áºááá¯ááºáž 8080. áá®á¡áááºážá ááá¯ááºáá°ážá
ports ááœá± áá±ážáááºá . á€áááºááŸá¬ ááááºáááºážááá¯ááœáá·áºááẠááá¯á¡ááºáá±á¬ á á¬ááœááºá á¬áááºáž áá áºáá»áá¯ážááŒá áºáááºá 8080 container ááá¯á áááºáá±á¬á¡áá«á
áááºááá»áŸá±á¬ááºááœáŸá¬ááᯠááááºážáááºážááẠááŒááºáááºáá±áá«áááºá
1) á¡á±á¬ááºáá« áááºáááºážáá»áẠááááºážááŸááºáá»á¬ážááᯠáááºááŸááºáá«á á¡á á¬ážááá¯ážáá«á PROJECT_ID áááºá GCP ááá±á¬áá»áẠID ááá¯á·á
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
áááºááá¯ážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá PROJECT_ID О GCR_REPO áááºážááá¯áááºáá±á¬ááºáá±á¬á¡áá«ááœáẠáááºááẠDocker áá¯á¶ááᯠtag áá¯ááºááŒá®áž áá®ážááá·áº Container Registry ááá¯á·ááœááºážáá«á
2) command line tool á¡ááœáẠáá°áááºáž GCP ááá±á¬áá»ááºááᯠáááºááŸááºáá«á gcloud.
gcloud config set project $PROJECT_ID
3) command line tool á¡ááœáẠdefault zone ááᯠáááºááŸááºáá«á gcloud.
gcloud config set compute/zone us-central1-b
4) Container Registry áááºáá±á¬ááºááŸá¯ááᯠGCP ááá±á¬áá»ááºááœáẠááœáá·áºáá¬ážááŒá±á¬ááºáž áá±áá»á¬áá«á á±á
gcloud services enable containerregistry.googleapis.com
Containerization áá¬áá¬
-
ááá°áá¬áááºáá±áᬠáááºážááœáŸááºááᯠááœá¬ážáá«á áá¬áá¬á:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
-
áá¯á¶ááᯠá¡áá¯á¶ážááŒá¯á á á¯á ááºážáá«á dockerfile ááŸáá·áº á á±á¬á á±á¬á áááºáááºááŸááºáá¬ážáá±á¬ áááºáááºážáá»áẠááááºážááŸááºáá»á¬áž
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
parameter ááẠ-t Docker tag ááá¯ááá¯ááºá á¬ážááŒá¯áááºá á€á¡áá¬ááẠááœááºááááºáá¬ááᯠá¡áá¯á¶ážááŒá¯áá¬ááœáẠáááºá¡áá¯á¶ážááŒá¯ááá·áº áá¯á¶áá¡áááºááŒá áºáááºá
- áá¯á¶ááᯠááœááºááááºáá¬ááŸááºáá¯á¶áááºááŒááºážááá¯á· á¡ááºáá¯ááºáá¯ááºáá«-
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) áá¯á¶á¡á¬áž ááœááºááááºáá¬ááŸááºáá¯á¶áááºááŒááºážááá¯á· á¡ááºáá¯ááºáá¯ááºáá«á
docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1
áá¯á¶áá»á¬ážá á¬áááºážááá¯ááŒáá·áºáá«á
ááá¯ááŸá±á¬ááºáááºážááŸá áá¯á¶áá»á¬ážá á¬áááºážááᯠááŒááºáááºáá¯á¶ážáááºááŒá®áž áá¯á¶áá»á¬ážááᯠá¡ááºáá¯ááºáá¯ááºáá¬ážááŒá±á¬ááºáž á á áºáá±ážáá«á
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
command ááẠá¡áá áºáááºáá¬ážáá±á¬ áá¯á¶áá»á¬ážá á¡áááºáá»á¬ážááᯠááŒááááº-
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
GKE á¡á á¯á¡áá±ážáá áºáᯠáááºáá®ážááŒááºážá
á€ááœááºááááºáá¬áá»á¬ážááᯠCloud Shell virtual machine ááœáẠááá¯á·ááá¯áẠá¡áááá·áºáá±ážáá¬ážáá±á¬ ááœááºáá»á°áá¬áá±á«áºááœáẠáá¯ááºáá±á¬ááºááá¯ááºáááºá docker ááŒá±áž. ááá¯á·áá±á¬áº áá¯ááºáá¯ááºááŸá¯áááºáááºážáá»ááºááœáẠááœááºááááºáá¬áá»á¬ážááᯠáááá¯á០ááŒáá¯ážááá¯ááºááẠáááºážáááºážáá áºáᯠááá¯á¡ááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠááœááºááááºáá¬áá»á¬áž á¡ááŒá²áááºáááºáá±ááŒá±á¬ááºáž áá±áá»á¬á á±ááá·áº á áá áºáá áºáᯠááá¯á¡ááºááŒá®áž áá¬ááºááŒá±á¬á¡ááœá¬ážá¡áᬠááá¯ážáá¬áá«á ááœááºááááºáá¬áá»á¬ážááᯠáá»á²á·ááœááºááẠáááºážáááºážáá áºáᯠááá¯á¡ááºáá«áááºá
containerized applications ááœá±ááᯠrun ááá¯á·á¡ááœáẠáááºáá¯á¶ážááá¯ááºáá«áááºá
GKE á¡á á¯á¡áá±ážááᯠáááºáá®ážáá±áááº-
1) á¡á á¯á¡ááœá²á·áá áºáᯠáááºáá®ážáá«-
gcloud container clusters create istioready
--cluster-version latest
--machine-type=n1-standard-2
--num-nodes 4
á¡ááœá²á· gcloud GCP ááá±á¬áá»ááºááŸáá·áº áááºáááºááŸááºáá¬ážáá±á¬ áá¯á¶áá±áá¯ááºá¡ááœááºáž á¡ááá¯ááºá¡áᬠá¡á
á¯á¡áá±ážáá
áºáá¯ááᯠáááºáá®ážáááºá Istio ááᯠrun áááºá á¡áááºážáá¯á¶áž node 4 áá¯ááŸáá·áº virtual machine áá
áºáá¯ááŸáááẠá¡ááŒá¶ááŒá¯áá«áááºá
á¡ááœá²á·ááẠáááá
áºá¡áááºážáááºá¡ááœááºáž á¡á
á¯á¡áá±ážááᯠáááºáá®ážáááºá á¡á
á¯á¡áá±áž á¡áááºááá·áºááŒá
áºáá±á¬á¡áá«á command ááẠá€áá²á·ááá¯á·áá±á¬ á¡áá¬áá
áºáá¯ááᯠáá¯ááºáá±ážáááºá
2) command line tool ááœáẠá¡áá±á¬ááºá¡áá¬ážáá»á¬áž áá±ážáá«á
gcloud container clusters get-credentials istioready
3) ááᯠáááºááẠKubernetes ááŸáááá·áº áááºááœááºááá¯ááºáá«ááŒá®á kubectl. á¥ááá¬á¡á¬ážááŒáá·áºá á¡á±á¬ááºáá« command ááẠnodes áá»á¬ážá á¡ááŒá±á¡áá±ááᯠááŸá¬ááœá±ááá¯ááºáááº-
kubectl get nodes
command ááẠnode áá»á¬ážá á¬áááºážááá¯áá¯ááºáá±ážáááº-
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 ááœáẠnode ááẠvirtual machine áá áºáá¯ááŒá áºáááºá á¡ááŒá¬áž Kubernetes ááááºáá±á¬ááºážáá»á¬ážááœáẠnode ááẠááœááºáá»á°áᬠááá¯á·ááá¯áẠvirtual machine áá áºáᯠááŒá áºááá¯ááºáááºá á¡á á¯á¡áá±ážáá áºáá¯ááẠáááºááœááºááááºáá¬áááºáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯ááá·áº áá°áá áºáá áºáá¯áááºážáᯠáá°áááá¯ááºáá±á¬ á á¯á ááºážááŸá¯áá áºáá¯ááŒá áºáááºá
- áá²áá±á¬áá·áºáá»á¬áž. Kubernetes ááœááºá ááœááºááááºáá¬áá»á¬ážááẠpods áá»á¬ážááœááºáááºáááºáááºá Kubernetes ááŸá Pod ááẠááœá²ááŒá¬ážááááá±á¬ áá°áá
áºáá
áºáá¯ááŒá
áºáááºá Pod áá
áºáá¯ááẠáá
áºáᯠááá¯á·ááá¯áẠáá
áºáá¯áááºááá¯áá±á¬ ááœááºááááºáá¬áá»á¬ážááᯠááá¯ááºáá±á¬ááºáá¬ážáááºá ááá»ááá»áá¬áá¬ááœááºááááºáá¬áá»á¬ážááŸáá·áº deploy loadgen áá®ážááŒá¬áž pods áá»á¬ážááœááºá pod áá
áºáá¯ááœáẠcontainer áá»á¬ážá
áœá¬ááŸááá±á¬á¡áá« (á¥ááá¬á application server ááŸáá·áº
ááá±á¬ááºá á®áá¬áᬠ) ááœááºááááºáá¬áá»á¬ážááᯠáá áºáá¯áááºážáá±á¬ á¡ááœá²á·á¡á ááºážá¡ááŒá Ạá á®áá¶ááá·áºááœá²ááŒá®áž pod á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá»áŸáá±áá«á - áá¬ážááŸáááŸá¯. Kubernetes ááœááºá á¡áá¯á¶ážáá»ááŸá¯áá áºáá¯ááẠáááºáá°áááºáá»áŸáá±á¬ pods áá»á¬ážá á¯á ááºážáá¬ážáá±á¬ á¡áá¬áá áºáá¯ááŒá áºáááºá ááŒáá·áºáá»ááºááŸá¯ááẠá¡á á¯á¡áá±ážáá»á¬ážáá áºáá»áŸá±á¬áẠááŒáá·áºáá±áá¬ážáá±á¬ pods á¡áá»á¬ážá¡ááŒá¬ážááᯠááŒáá·áºáá»ááºáá¯ááºáá±á¬ááºáááºá ááŒáá·áºáá»ááºááŒááºážááẠáá¡á±á¬ááºááŒááºáá±á¬ ááá¯á·ááá¯áẠáá¯á¶á·ááŒááºááŸá¯áááŸááá±á¬ pod áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºá¡á á¬ážááá¯ážáááºá
- Kubernetes áááºáá±á¬ááºááŸá¯. GKE ááœáẠá¡ááá®áá±ážááŸááºážáá¯ááºááᯠáá¯ááºáá±á¬ááºáá±á¬á¡áá«á á¡ááŒá¬ážáá»áááºáááºááŸá¯ loadgen О áá¬áá¬á. Cloud Shell virtual machine ááá¯á·ááá¯áẠdesktop ááœáẠáááºáá±á¬ááºááŸá¯áá»á¬áž á
áááºáá±á¬á¡áá«á áááºááẠáá±á¬ááºážááá¯áá»ááºáá»á¬áž áá±ážááá¯á·áá²á·áááºá áá¬áá¬á ááááºá
á¬á¡á¬ážááŒáá·áº localhost: 8080. GKE ááá¯á· á¡áá¯á¶ážáá»ááŒá®ážáááºááŸáá·áºá pods áá»á¬ážááᯠáááá¯ááºáá±á¬ node áá»á¬ážááœáẠáá¯ááºáá±á¬ááºáááºá áá¯á¶áá±á¡á¬ážááŒáá·áºá pod ááẠáááºááá·áº node ááá¯ááœáá·áºáá¬ážáááºááᯠáááºááááºážáá»á¯ááºááá¯ááºááŒááºážáááŸááá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá
pods á¡ááŒá²áááºáž IP ááááºá á¬áá»á¬ážáááŸááá«á
IP ááááºá á¬ááá°ááẠáá¬áá¬ápods áááááºááœáẠnetwork abstraction ááá¯áááºáááºááŸááºáááºááá¯á¡ááºáááºá á¡á²áá«á áá¬áá²áKubernetes áááºáá±á¬ááºááŸá¯ . Kubernetes áááºáá±á¬ááºááŸá¯ááẠpods á¡á á¯á¶á¡ááœáẠá¡ááŒá²ááŸááá±áá±á¬ á¡áá¯á¶ážááŸááºááᯠáá±ážáá«áááºá á¡áááºážáááºááŸááá«áááºááááºáá±á¬ááºááŸá¯á¡áá»áá¯ážá¡á á¬ážáá»á¬áž . áá¬áá¬á á¡áá¯á¶ážááŒá¯ááŸá¯ LoadBalanceráááºááœááºááẠááŒááºá IP ááááºá á¬ááᯠáá±ážáá±á¬ááºáááºá áá¬áá¬á á¡á á¯á¡ááœá²á·ááŒááºáááŸá
Kubernetes ááœáẠDNS á¡áááºáá»á¬ážááᯠáááºááŸááºáá±ážááá·áº built-in DNS á áá áºáááºáž ááŸáááẠ(á¥ááá¬á helloserver.default.cluster.local) áááºáá±á¬ááºááŸá¯áá»á¬ážá áááºážááŒá±á¬áá·áºá á¡á á¯á¡áá±ážá¡ááœááºážááŸá pods áá»á¬ážááẠá¡ááŒá²áááºážááááºá á¬ááœáẠá¡á á¯á¡áá±ážááŸá á¡ááŒá¬áž pod áá»á¬ážááŸáá·áº áááºááœááºáááºá Cloud Shell ááœáẠááá¯á·ááá¯áẠááœááºáá»á°áá¬ááœááºáá²á·ááá¯á· á¡á á¯á¡áá±ážááŒááºáááœáẠDNS á¡áááºááᯠá¡áá¯á¶ážáááŒá¯ááá¯ááºáá«á
Kubernetes ááẠáááºááŸá¬ážáááºá
á¡ááá®áá±ážááŸááºážááᯠsource á០run áá±á¬á¡áá«á áááºááẠimperative command ááá¯áá¯á¶ážáááºá python3
server.py
Imperative ááẠááŒááá¬ááᯠáááºááœáŸááºážáááº- "áá«ááᯠáá¯ááºáá«á"
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 ááá¯áá»ááºáá±á¬á¡ááŒá±á¡áá±ááá±á¬áºááŒáá»ááºáá«ááŸááááºá
- spec.replicas ááá¯áá»ááºáá±á¬á¡á á±á·á¡áá±á¡ááœááºááá¯ááœáŸááºááŒáááºá
- á¡ááá¯ááºáž spec.template pod áá¯á¶á á¶ááᯠáááºááŸááºáááºá pod specification ááŸá¬ á¡ááœááºáá áºáá¯ááŸááá«áááºá áá¯á¶ááááºContainer Registry ááŸáá¯ááºáá°áááºááá¯á¡ááºáá±á¬áá¯á¶áá¡áááºááá¯áááºááŸááºáá±ážáá±á¬á
áááºáá±á¬ááºááŸá¯ááᯠá¡á±á¬ááºáá«á¡ááá¯ááºáž áááºááŸááºáááºá
apiVersion: v1
kind: Service
metadata:
name: hellosvc
spec:
type: LoadBalancer
selector:
app: helloserver
ports:
- name: http
port: 80
targetPort: 8080
- LoadBalancer: áá±á¬ááºáááºáá»á¬ážááẠá¡ááŒá²ááŸááá±áá±á¬ IP ááááºá á¬ááŸáááŒá®áž á¡á á¯á¡áá±ážááŸáááºáá±á¬ááºááá¯ááºááá·áº load balancer á IP ááááºá á¬ááá¯á· áá±á¬ááºážááá¯ááŸá¯áá»á¬áž áá±ážááá¯á·áááºá
- áá áºááŸááºááááºáááºáž: áááºážááŸááºááááá±á¬áẠá¡ááœá²á· EXPOSE 8080 в dockerfile ports ááœá± ááá±ážáá¬ážáá°ážá áááºáž ááááºáááºážááᯠáá±ážáááºá 8080ááá¯á·ááŸáᬠáááºááœááºááááºáá¬ááᯠáááºááœááºááá¯ááºáááºááŒá áºáááºá áá¬áá¬á á¡á á¯á¡áá±ážááŒááºáá áá«ááá¯á·ááá á¹á hellosvc.default.cluster.local:80 (áá¬áááºá¡ááá¯áá±á¬ááº: hellosvc) ááááºáááºážááŸáá·áº áááºááá¯ááºáááºá 8080 Pod IP ááááºá á¬áá»á¬áž áááºá¹ááá¬áá«.
- ááááºáááºáž: áááºážááẠá¡á á¯á¡áá±ážááŸá á¡ááŒá¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážá០áá±á¬ááºážááá¯áá»ááºáá»á¬ážáá±ážááá¯á·ááá·áº ááá¯á·ááºáá¶áá«ááºááŒá áºáááºá
loadgen.yaml
Deployment object á០loadgen.yaml ááŸááºá·áá°ááẠserver.yaml. ááœá¬ááŒá¬ážáá»ááºááŸá¬ deployment object ááœáẠá¡ááá¯ááºážáá áºáá¯áá«ááŸááááºá ááá¯á·áá«á. ááá¯á¡ááºáá±á¬ áááºáááºážáá»áẠááááºážááŸááºáá»á¬ážááᯠáááºááŸááºáá±ážáááºá 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 áááºáááºá¡ááœáẠá¡áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºááá¶áá«á áá¯á¶á ᶠá¡áááºááá ClusterIP. á€á¡áá»áá¯ážá¡á á¬ážááẠá¡á á¯á¡ááœá²á·á¡ááœááºážááŸá áááºáá±á¬ááºááŸá¯áá»á¬áž á¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº ááŒá²ááŒá¶áá±á¬ 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 ááá±á¬áá»áẠID ááá¯á·á
4) ááááºážáááºážááŒá®áž ááááºáá«á server.yaml.
5) YAML ááá¯ááºááᯠKubernetes ááœáẠá¡áá¯á¶ážááŒá¯áá«-
kubectl apply -f server.yaml
á¡á±á¬ááºááŒááºá áœá¬ ááŒá®ážáá¯á¶ážáá±á¬á¡áá«á á¡áááá·áºááẠá¡á±á¬ááºáá«áá¯ááºááᯠáá¯ááºáá¯ááºáááº-
deployment.apps/helloserver created
service/hellosvc created
6) ááŸááᬠdirectory ááá¯ááœá¬ážáá«á loadgen:
cd ../loadgen
7) ááœáá·áºáá«á loadgen.yaml á
á¬áá¬ážáááºážááŒááºáá°ááœááºá
8) á¡ááœááºááœááºá¡áááºááá¯á¡á
á¬ážááá¯ážáá«á áá¯á¶áááẠáááºá Docker áá¯á¶áá¡áááºááá¯á·á
image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1
á¡á
á¬ážááá¯ážáá« PROJECT_ID áááºá GCP ááá±á¬áá»áẠID ááá¯á·á
9) ááááºážáááºážááŒá®áž ááááºáá«á loadgen.yamlá
á¬áá¬ážáááºážááŒááºáá°ááᯠááááºáá«á
10) YAML ááá¯ááºááᯠKubernetes ááœáẠá¡áá¯á¶ážááŒá¯áá«-
kubectl apply -f loadgen.yaml
á¡á±á¬ááºááŒááºá áœá¬ ááŒá®ážáá¯á¶ážáá±á¬á¡áá«á á¡áááá·áºááẠá¡á±á¬ááºáá«áá¯ááºááᯠáá¯ááºáá¯ááºáááº-
deployment.apps/loadgenerator created
service/loadgensvc created
11) á¡á á±á·áá»á¬ážá á¡ááŒá±á¡áá±ááᯠá á áºáá±ážáá«á
kubectl get pods
command ááẠstatus ááá¯ááŒááááº-
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) á¡ááá®áá±ážááŸááºážááŸááºáááºážáá»á¬ážááᯠpod ááŸáá¯ááºáá°áá«á loadgen. á¡á á¬ážááá¯ážáá«á POD_ID ááááºá¡ááŒá±á០identifier ááá¯á·á
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
Istio ááᯠá ááá¯ááºáá¡á±á¬ááº
ááá·áºááœáẠGKE ááá¯á· á¡áá¯á¶ážáá»áá¬ážáá±á¬ á¡ááºááºáá áºáᯠááŸáááŸáá·áºááŒá®ážááŒá áºáááºá loadgen Kubernetes DNS ááá¯áá¯á¶ážááá¯ááºááẠ(hellosvc:80) ááá¯á· áá±á¬ááºážááá¯áá»ááºáá»á¬áž áá±ážááá¯á·ááẠáá¬áá¬áááŸáá·áº áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠáááºáá±ážááá¯á·ááá¯ááºáá«áááºá áá¬áá¬á ááŒááºá IP ááááºá á¬ááŒáá·áº Kubernetes ááœáẠá¡ááºá¹áá«áááºáá»á¬ážá áœá¬ááŸááá±á¬áºáááºáž áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áºáááºáááºáá±á¬ á¡áá»ááºá¡áááºá¡áá»áá¯á· áá»á±á¬ááºáá¯á¶ážáá±áá«áááº-
- áááºáá±á¬ááºááŸá¯áá»á¬ážá áááºááá¯á· á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááŸáááááºážá áááºáá±á¬ááºááŸá¯áá»á¬ážááŒá¬áž áááºáá¶áá±ážá áá¬ááœá±áá²á áááºáá±á¬ááºááŸá¯áá»á¬ážááŒá¬áž á¡ááœá¬ážá¡áᬠáááºáá²á·ááá¯á· á á®ážáááºážááááºážá á¡á²áá«ááᯠáááá¬ážá loadgen áá±á¬ááºážááá¯áá»ááºáá»á¬ážáá±ážááá¯á·áááºá áá¬áá¬ááá«áá±ááá·áº á¡ááá®áá±ážááŸááºážá¡ááŒá±á¬ááºáž áá¬ááŸááááá°ážááá¯á· á áááºáá°ážááŒáá·áºáá«á á€áá±ážááœááºážáá»á¬ážááá¯ááŒá±ááá¯áááºá GKE ááœáẠáááºáááºáá±áá±á¬ pods á á¬áááºážááᯠááŒáá·áºááŒáá«á áá¯á·á
- áááºááá áºáá»á¬áž. áááºáá±á¬ááºááŒá¬ áá¬áá¬á á¡áááºáá±á¬ááºážááá¯ááŸá¯ááᯠáá¯á¶á·ááŒááºáá«ááá¬ážá áá¬áá¬á០áá áºá áá¹ááá·áºáá»áŸáẠáá±á¬ááºážááá¯ááŸá¯ áááºáá»áŸáááºáá¶ááááºážá áááºážááẠá¡ááŸá¬ážá¡ááœááºáž áááºáá±á·ááºá»áá»á¬áž áá±ážáá«ááá¬ážá
- áá¯á¶ááŒá¯á¶áá±ážá¡áá»ááºá¡áááº. á¡ááœá¬ážá¡áá¬ááœá±ááŒá¬ážááŸá¬ loadgen О áá¬áá¬á ááŒááºáááºážááœá¬ážáá¯á¶áá«áá²á ááẠHTTP áá«ááŸááá¯ááº
mTLS ?
Istio ááẠá€áá±ážááœááºážá¡á¬ážáá¯á¶ážááᯠááŒá±áááºá áá«ááá¯áá¯ááºááá¯á· Istio á sidecar proxy ááᯠáá±áá¬áá±ážáááºá
Envoy proxy áá»á¬ážááŒá¬áž áá»áááºáááºááŸá¯áá»á¬ážááẠservice mesh áá áºáá¯ááŒá áºáááºá áááºáá±á¬ááºááŸá¯ mesh áááá¯áá¬ááẠKubernetes ááááºááŸá ááááºážáá»á¯ááºááŸá¯á¡ááœáŸá¬ááᯠáá±ážáá±á¬ááºáááºá
Envoy proxies áá»á¬ážááẠáááºážááá¯á·áááá¯ááºááá¯ááºááœááºááááºáá¬áá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá±á¬ááŒá±á¬áá·áºá Istio ááẠá¡ááá®áá±ážááŸááºážáá¯ááºááœááºááŒá±á¬ááºážáá²ááŸá¯áááŸáááá±á¬ááºááŒá áºááŒá®áž GKE á¡á á¯á¡áá±ážáá áºáá¯áááááºááœáẠIstio ááᯠááá·áºááœááºážááá¯ááºáááºá ááá¯á·áá±á¬áº Istio á០á á®áá¶ááá·áºááœá²ááẠáááºááá»áŸá±á¬ááºááœáŸá¬ááᯠá¡áááºááá·áºááŒá áºá á±áááºá¡ááœáẠáááºááẠá¡áá¯ááºá¡áá»áá¯á·ááᯠáá¯ááºáá±á¬ááºááŒá®ážááŒá®-
- ááœááºááááºáá¬á¡á¬ážáá¯á¶ážá¡ááœáẠáááºáá±á¬ááºááŸá¯áá»á¬ážá áá¬ážááŸáááẠáá¬áá¬á О loadgen Kubernetes áááºáá±á¬ááºááŸá¯ááŸáá·áº áá»áááºáááºáá¬ážáááºá ááẠloadgená¡áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºáá¶áááŸáááŒááºážáááŸááá±á¬ áááºáá±á¬ááºááŸá¯áá áºáá¯ááŸááá«áááºá
- áááºáá±á¬ááºááŸá¯áá»á¬ážááŸá ááááºáááºážáá»á¬ážááœáẠá¡áááºáá»á¬áž áá«ááŸáááááºá áááºáá±á¬ááºááŸá¯ááááºáááºážáá»á¬ážááᯠGKE ááœáẠá¡áááºááá±á¬áºááá¯ááºáá±á¬áºáááºáž Istio á ááá·áºááᯠáááºááŸááºááẠááá¯á¡ááºáááºá
ááááºáááºážá¡ááẠáá°á·áá²á· protocol áá²á·á¡áá® YAML ááá¯ááºááœáẠport ááẠáá¬áá¬á áá«áá¬ááá¯áá±á«áº httpáá¬áá¬ááẠáááá¯ááá¯áá±á¬ááᯠá¡áá¯á¶ážááŒá¯áá±á¬ááŒá±á¬áá·áºááŒá áºáááºá ááẠHTTP... á¡áááºá áááºáá±á¬ááºááŸá¯ á¡áá¯á¶ážááŒá¯áá¶á· gRPCááááºáááºážááᯠáá¬áááºáá±ážáááºá grpc. - ááŒáá·áºáá»ááºááŸá¯áá»á¬ážááᯠá¡áá¶ááŒáá¬ážáááºá ááá¯á·ááŒá±á¬áá·áºá áááºááẠáá°áá®áá±á¬áááºáá±á¬ááºááŸá¯ááá¬ážááŸááºážáá»á¬ážááŒá¬áž á¡ááœá¬ážá¡áá¬ááᯠááá¯ááºážááŒá¬ážááŒááºážáá²á·ááá¯á·áá±á¬ Istio á á¡ááœá¬ážá¡áᬠá á®áá¶ááá·áºááœá²ááŸá¯á¡ááºá¹áá«áááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
Istio ááᯠááá·áºááœááºážááŒááºážá
Istio ááá¯ááá·áºááœááºážáááºáááºážáááºážááŸá
áºáá¯ááŸááááºá ááá¯ááºááá¬áž
ááœá±ážáá»ááºááŸá¯áá
áºáá¯ááᯠááœá±ážáá»ááºáá«á ááá·áºáá»á±á¬áºáá±á¬áááºážááœáŸááºááᯠááŒááºáááºáá¯á¶ážáááºááŒá®áž áááºáá¡á
á¯á¡áá±ážááœáẠIstio ááá·áºááœááºážááẠááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááá¯ááºáá¬áá«á áááºá á¡áá
áºá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážááŒáá·áº Istio ááᯠá¡áá¯á¶ážááŒá¯ááá¯áá«áá
áá±ážááŒááºáž
á€áááºáááºážá á¬ááœáẠáááºá¡áá¯á¶ážááŒá¯ááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážá¡ááœáẠáááºá Google Cloud Platform á¡áá±á¬áá·áºááá¯á· ááœá±áá±á¬ááºáá¶ááŒááºážááᯠááŸá±á¬ááºááŸá¬ážáááºá Istio ááᯠááá·áºááœááºážááŒá®áž ááá°áá¬á¡ááºááºááŒáá·áº áá á¬ážááŒá®ážáááºááŸáá·áº ááœááºááááºáá¬á¡á á¯á¡áá±ážááᯠáá»ááºáá«á áááºážááẠááœááºáá»ááºááŸá¯ááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬ážá áá áºááºáá»á¬ážááŸáá·áº ááœááºáááºáááºážááŒá áºáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡á á¯ááá¯ááºá¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠáááºááŸá¬ážáááºááŒá áºáááºá
áá¬áááºá·áá¬áá²?
-
á¡á±á¬ááºáá«áááºážááá¬áá»á¬ážááᯠáá±á·áá¬áá«-
Docker кПМÑейМеÑÑ ááœááºááááºáá¬ááŸááºáá¯á¶áááºááŒááºážá Kubernetes G.K.E. áááºáá±á¬ááºááŸá¯ááœáẠIstio
-
á¡á±á¬ááºáá«áááááá¬áá»á¬ážááᯠáá±á·áá¬áá«-
-
Kubernetes ááá±á¬ááá¬ážáá»á¬ážááᯠáá±á·áá¬áá«-
ááŒáœáẠáá¯á¶ááŸááºáá»á¬áž áá²áá±á¬áá·áºáá»á¬áž ááºáá±á¬ááºááŸá¯áá»á¬áž ááŒáá·áºáá»ááº
source: www.habr.com