ለኢስቲዮ ማመልከቻ በማዘጋጀት ላይ

ለኢስቲዮ ማመልከቻ በማዘጋጀት ላይ

ኢስቲዮ የተከፋፈሉ አፕሊኬሽኖችን ለማገናኘት፣ ለመጠበቅ እና ለመቆጣጠር ምቹ መሳሪያ ነው። ኢስቲዮ ሶፍትዌሮችን በመጠኑ ለማሄድ እና ለማስተዳደር የተለያዩ ቴክኖሎጂዎችን ይጠቀማል፣ ኮንቴይነሮች የመተግበሪያ ኮድ እና የመሰማራት ጥገኞች፣ እና ኩበርኔትስ እነዚህን ኮንቴይነሮች ለማስተዳደር። ስለዚህ፣ ከኢስቲዮ ጋር ለመስራት በእነዚህ ቴክኖሎጂዎች ላይ የተመሰረተ በርካታ አገልግሎቶች ያለው መተግበሪያ እንዴት እንደሚሰራ ማወቅ አለቦት ያለ ኢስቲዮ እነዚህ መሳሪያዎች እና ፅንሰ-ሀሳቦች እርስዎን የሚያውቁ ከሆኑ ይህንን አጋዥ ስልጠና ለመዝለል ነፃነት ይሰማዎ እና በቀጥታ ወደ ክፍሉ ይሂዱ ኢስቲዮ በGoogle Kubernetes ሞተር (ጂኬኤ) ላይ በመጫን ላይ ወይም ቅጥያ መጫን ኢስቲዮ በ GKE ላይ.

ይህ የደረጃ በደረጃ መመሪያ ሲሆን አጠቃላይ ሂደቱን ከምንጩ ኮድ እስከ GKE ኮንቴይነር ድረስ የምናልፍበት ሲሆን ስለእነዚህ ቴክኖሎጂዎች በምሳሌነት እንዲረዱዎት ያደርጋል። እንዲሁም ኢስቲዮ የእነዚህን ቴክኖሎጂዎች ኃይል እንዴት እንደሚጠቀም ያያሉ። ይህ ስለ ኮንቴይነሮች፣ ኩበርኔትስ፣ የአገልግሎት መረቦች ወይም ኢስቲዮ ምንም የሚያውቁት ነገር እንደሌለ ያስባል።

ተግባራት

በዚህ መማሪያ ውስጥ የሚከተሉትን ተግባራት ያጠናቅቃሉ።

  1. ከበርካታ አገልግሎቶች ጋር ቀላል የሠላም ዓለም መተግበሪያ መማር።
  2. መተግበሪያውን ከምንጭ ኮድ ያሂዱ።
  3. ማመልከቻውን በመያዣዎች ውስጥ ማሸግ.
  4. የኩበርኔትስ ስብስብ መፍጠር።
  5. መያዣዎችን ወደ ክላስተር ማሰማራት.

ከመጀመርዎ በፊት

የKubernetes Engine APIን ለማንቃት መመሪያዎቹን ይከተሉ፡-

  1. ወደ ሂድ የኩበርኔትስ ሞተር ገጽ በGoogle ክላውድ ፕላትፎርም ኮንሶል ውስጥ።
  2. ፕሮጀክት ይፍጠሩ ወይም ይምረጡ።
  3. ኤፒአይ እና ተዛማጅ አገልግሎቶች እስኪነቁ ድረስ ይጠብቁ። ይህ ጥቂት ደቂቃዎችን ሊወስድ ይችላል።
  4. ለGoogle ክላውድ ፕላትፎርም ፕሮጀክት ክፍያ መጠየቂያ መዋቀሩን ያረጋግጡ። የሂሳብ አከፋፈልን እንዴት ማንቃት እንደሚችሉ ይወቁ.

በዚህ መማሪያ ውስጥ ቨርቹዋል ማሽኑን የሚያዘጋጀውን Cloud Shell መጠቀም ይችላሉ። g1-ትንሽ በ Google Compute Engine በዴቢያን ላይ የተመሰረተ ሊኑክስ፣ ወይም ሊኑክስ ወይም ማክኦኤስ ኮምፒውተር።

አማራጭ ሀ፡ ክላውድ ሼል መጠቀም

የክላውድ ሼል አጠቃቀም ጥቅሞች፡-

  • Python 2 እና Python 3 የእድገት አካባቢዎች (ጨምሮ virtualenv) ሙሉ በሙሉ የተዋቀሩ ናቸው.
  • የትእዛዝ መሾመር መሳሪያዎች gcloud, ዳኪር, ሂድ и kubectl, የምንጠቀመው ቀድሞውኑ ተጭኗል.
  • ብዙ የሚመርጡት አለዎት የጽሑፍ አርታኢዎች:
    1. ሬዳክተር ኮዳ, ይህም በ Cloud Shell መስኮት አናት ላይ ባለው የአርትዖት አዶ ይከፈታል.
    2. በCloud Shell ውስጥ ከትዕዛዝ መስመሩ የሚከፈተው ኢማክስ፣ ቪም ​​ወይም ናኖ።

ለመጠቀም ክላውድ ሼል:

  1. ወደ GCP ኮንሶል ይሂዱ።
  2. ጋዜጦች ክላውድ ሼልን ያንቁ (ክላውድ ሼልን አግብር) በጂሲፒ ኮንሶል መስኮት ላይኛው ክፍል ላይ።

ለኢስቲዮ ማመልከቻ በማዘጋጀት ላይ

በታችኛው ክፍል የጂሲፒ ኮንሶል የክላውድ ሼል ክፍለ ጊዜ ከትእዛዝ መስመር ጋር በአዲስ መስኮት ይከፈታል።

ለኢስቲዮ ማመልከቻ በማዘጋጀት ላይ

አማራጭ B፡ የትእዛዝ መስመር መሳሪያዎችን በአካባቢው መጠቀም

ሊኑክስን ወይም ማክሮን በሚያሄድ ኮምፒዩተር ላይ እየሰሩ ከሆነ የሚከተሉትን አካላት ማዋቀር እና መጫን ያስፈልግዎታል።

  1. አብጅ Python 3 እና Python 2 ልማት አካባቢ.

  2. የክላውድ ኤስዲኬን ጫን ከትእዛዝ መስመር መሳሪያ ጋር gcloud.

  3. ጫን kubectl - አብሮ ለመስራት የትእዛዝ መስመር መሣሪያ ኩባንያቶች.

    gcloud components install kubectl

  4. ጫን ዶከር የማህበረሰብ እትም (CE). የትእዛዝ መስመር መሳሪያውን ትጠቀማለህ ዳኪርለናሙና አፕሊኬሽኑ የመያዣ ምስሎችን ለመፍጠር.

  5. መሳሪያውን ይጫኑ Git ስሪት ቁጥጥርየናሙና ማመልከቻውን ከ GitHub ለማግኘት።

የናሙና ኮድ አውርድ

  1. የምንጭ ኮድ ያውርዱ helloserver:

    git clone https://github.com/GoogleCloudPlatform/istio-samples

  2. ወደ ምሳሌ ኮድ ማውጫ ይሂዱ፡-

    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 የመተግበሪያውን ምንጭ ኮድ እና ጥገኞቹን ለመገንባት ትዕዛዞችን የሚገልጽ የጽሑፍ ፋይል ነው። Docker ምስል. አንዴ ከተገነባ በኋላ ምስሉን ወደ መያዣ መዝገብ እንደ Docker Hub ወይም የመያዣ መዝገብ ቤት.

ምሳሌው አስቀድሞ አለው። 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

መያዣ አገልጋይ

  1. ምሳሌው ወደሚገኝበት ማውጫ ይሂዱ አገልጋይ:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

  2. በመጠቀም ምስሉን ያሰባስቡ Dockerfile እና ከዚህ ቀደም የገለጽካቸው የአካባቢ ተለዋዋጮች፡-

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .

መለኪያ -t የ Docker መለያን ይወክላል. ይህ መያዣውን ሲጭኑ የሚጠቀሙበት የምስሉ ስም ነው.

  1. ምስሉን ወደ ኮንቴይነር መዝገብ ስቀል፡-
    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 ቨርቹዋል ማሽኖችን ወደ ክላስተር የሚያጠቃልለው የኮንቴይነር ኦርኬስትራ መድረክ ነው። እያንዳንዱ ምናባዊ ማሽን መስቀለኛ መንገድ ይባላል. የGKE ስብስቦች በክፍት ምንጭ የኩበርኔትስ ክላስተር አስተዳደር ስርዓት ላይ የተመሰረቱ ናቸው። ኩበርኔትስ ከክላስተር ጋር የመግባቢያ ዘዴዎችን ይሰጣል።

የGKE ስብስብ መፍጠር፡-

1) ስብስብ ይፍጠሩ;

gcloud container clusters create istioready 
  --cluster-version latest 
  --machine-type=n1-standard-2 
  --num-nodes 4

ቡድን gcloud በ GCP ፕሮጀክት እና በገለጽከው ነባሪ ዞን ውስጥ ዝግጁ የሆነ ዘለላ ይፈጥራል። Istio ን ለማስኬድ ቢያንስ 4 ኖዶች እና ምናባዊ ማሽን እንዲኖርዎት እንመክራለን n1-መደበኛ-2.

ቡድኑ በጥቂት ደቂቃዎች ውስጥ ክላስተር ይፈጥራል። ክላስተር ዝግጁ ሲሆን ትዕዛዙ እንደዚህ ያለ ነገር ያወጣል። መልእክት.

2) በትእዛዝ መስመር መሳሪያ ውስጥ ምስክርነቶችን ያቅርቡ kubectlክላስተርን ለማስተዳደር ለመጠቀም፡-

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

ኢምፔራቲቭ “ይህን አድርግ” የሚለውን ግስ ያመለክታል።

ኩበርኔትስ ይጠቀማል ገላጭ ሞዴል. ይህ ማለት ለኩበርኔትስ በትክክል ምን ማድረግ እንዳለብን እየነገርን ሳይሆን የሚፈለገውን ሁኔታ መግለጽ ነው። ለምሳሌ, Kubernetes የስርዓቱ ትክክለኛ ሁኔታ ከተፈለገው ሁኔታ ጋር እንዲዛመድ ለማድረግ እንደ አስፈላጊነቱ ኩበርኔትስ ይጀምራል እና ያቆማል.

የሚፈለገውን ሁኔታ በፋይሎች ወይም በፋይሎች ውስጥ ይጠቁማሉ ያማኤል. የ YAML ፋይል ለአንድ ወይም ከዚያ በላይ የኩበርኔትስ ነገሮች ዝርዝር መግለጫዎችን ይዟል።

ምሳሌው የ 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?

ኢስቲዮ ለእነዚህ ሁሉ ጥያቄዎች መልስ ይሰጣል. ይህንን ለማድረግ ኢስቲዮ የጎን መኪና ፕሮክሲን ያስቀምጣል። መልእክተኛ በእያንዳንዱ ፖድ ውስጥ. የመልእክተኛው ተኪ ሁሉንም ገቢ እና ወጪ ወደ መተግበሪያ ኮንቴይነሮች ያቋርጣል። ማለት ነው። አገልጋይ и ሎድገን በ sidecar proxy envoy እና ሁሉንም ትራፊክ ከ ይቀበሉ ሎድገን к አገልጋይ በመልእክተኛው ፕሮክሲ በኩል ይሄዳል።

በመልእክተኛ ፕሮክሲዎች መካከል ያለው ግንኙነት የአገልግሎት መረብ ይመሰርታል። የአገልግሎት ጥልፍልፍ አርክቴክቸር በኩበርኔትስ አናት ላይ የቁጥጥር ንብርብር ይሰጣል።

ለኢስቲዮ ማመልከቻ በማዘጋጀት ላይ

የመልእክት ፕሮክሲዎች በራሳቸው ኮንቴይነሮች ውስጥ ስለሚሰሩ ኢስቲዮ በ GKE ክላስተር ላይ በመተግበሪያው ኮድ ላይ ምንም ለውጦች ሳይደረጉ መጫን ይችላሉ። ነገር ግን ማመልከቻዎን በኢስቲዮ እንዲተዳደር ለማድረግ አንዳንድ ስራዎችን ሰርተዋል፡-

  • ለሁሉም እቃዎች አገልግሎት. ወደ ማሰማራት አገልጋይ и ሎድገን ከ Kubernetes አገልግሎት ጋር የተሳሰረ. እንኳን ሎድገን, ገቢ ጥያቄዎችን የማይቀበል, አገልግሎት አለ.
  • በአገልግሎቶች ውስጥ ያሉ ወደቦች ስሞች ሊኖራቸው ይገባል. ምንም እንኳን የአገልግሎት ወደቦች በGKE ውስጥ ስማቸው ሳይገለጽ ሊቀር ቢችልም፣ ኢስቲዮ እንዲገልጹ ይፈልጋል የወደብ ስም በእሱ ፕሮቶኮል መሰረት. በ YAML ፋይል ውስጥ ወደብ ለ አገልጋይ ተጠርቷል httpምክንያቱም አገልጋዩ ፕሮቶኮሉን ይጠቀማል HTTP. ከሆነ አገልግሎት ተጠቅሟል ጂአርፒሲወደቡን ስም ትሰጣለህ grpc.
  • ማሰማራት ተጠቁሟል። ስለዚህ የኢስቲዮ የትራፊክ አስተዳደር ባህሪያትን ለምሳሌ ትራፊክን በተመሳሳዩ አገልግሎት ስሪቶች መካከል መከፋፈልን መጠቀም ይችላሉ።

መጫን

Istio ን ለመጫን ሁለት መንገዶች አሉ። ይችላል Istio በ GKE ቅጥያ ላይ አንቃ ወይም የ Istio ክፍት ምንጭ ስሪት ጫን በክላስተር ላይ. በGKE ላይ በIstio፣ በGKE ክላስተር የህይወት ኡደት ውስጥ የIstio ጭነቶችን እና ማሻሻያዎችን በቀላሉ ማስተዳደር ይችላሉ። የቅርብ ጊዜውን የIstio ስሪት ወይም ተጨማሪ ቁጥጥር በIstio የቁጥጥር ፓነል ውቅር ላይ ከፈለጉ በGKE ቅጥያ ላይ ካለው Istio ይልቅ የክፍት ምንጭ ስሪቱን ይጫኑ። በአቀራረብ ላይ ለመወሰን, ጽሑፉን ያንብቡ በ GKE ላይ Istio ያስፈልገኛል?.

አንድ አማራጭ ይምረጡ፣ ተገቢውን መመሪያ ይገምግሙ እና Istio ን በክላስተርዎ ላይ ለመጫን መመሪያዎቹን ይከተሉ። Istio ን በአዲስ ከተዘረጋው መተግበሪያዎ ጋር መጠቀም ከፈለጉ፣ የጎን መኪና ትግበራን አንቃ ለስም ቦታ ነባሪ.

ማጽዳት

በዚህ ማጠናከሪያ ትምህርት ለተጠቀሙባቸው ግብአቶች ወደ ጉግል ክላውድ ፕላትፎርም አካውንትዎ እንዳይከፍሉ ኢስቲዮ ከጫኑ እና ከናሙና አፕሊኬሽኑ ጋር ከተጫወቱ በኋላ የእቃ መያዣውን ክላስተር ይሰርዙ። ይህ እንደ ማስላት ምሳሌዎች፣ ዲስኮች እና የአውታረ መረብ ሀብቶች ያሉ ሁሉንም የክላስተር ሀብቶች ያስወግዳል።

ቀጥሎ ምንድነው?

ምንጭ: hab.com

አስተያየት ያክሉ