Me pehea te whakahaere i a Istio ma te whakamahi i nga Kubernetes ki te whakaputa. Wāhanga 1

He aha Istio? Koinei te mea e kiia nei ko te Service mesh, he hangarau e taapiri ana i tetahi paparanga tangohanga i runga i te whatunga. Ka haukoti tatou i te katoa, i tetahi waahanga ranei o nga waka i roto i te roopu ka mahi i etahi huinga mahi me taua mea. Ko tēhea? Hei tauira, ka mahi matou i te ararere atamai, ka whakatinana ranei matou i te huarahi ara iahiko, ka taea e matou te whakarite i te "whakaahua kanari", ka huri i tetahi waahanga ki tetahi waahanga hou o te ratonga, ka taea ranei e matou te whakawhāiti i nga taunekeneke o waho me te whakahaere i nga haerenga katoa mai i te roopu ki te whatunga o waho. Ka taea te whakarite ture kaupapa here hei whakahaere i nga haerenga i waenga i nga ratonga miihini rereke. Ka mutu, ka taea e tatou te mapi katoa o te hononga whatunga me te hanga i te kohinga whakakotahi o nga inenga kia tino marama ki nga tono.

Ka taea e koe te panui mo te tikanga o te mahi i roto tuhinga whaimana. Ko Istio he taputapu tino kaha e taea ai e koe te whakaoti i nga mahi maha me nga raru. I roto i tenei tuhinga, ka hiahia ahau ki te whakautu i nga patai matua ka puta ake i te wa e tiimata ana me Istio. Ma tenei ka awhina i a koe kia tere ake te mahi.

Me pehea te whakahaere i a Istio ma te whakamahi i nga Kubernetes ki te whakaputa. Wāhanga 1

Kia pehea te mahi i te reira

E rua nga waahanga matua o Istio - te rererangi whakahaere me te rererangi raraunga. Kei roto i te rererangi whakahaere nga waahanga matua hei whakarite i te mahi tika o era atu. I te putanga o naianei (1.0) e toru nga waahanga matua o te waka rererangi: Pilot, Mixer, Citadel. E kore matou e whakaaro Citadel, e hiahiatia ana ki te whakaputa tiwhikete ki te whakarite TLS tahi i waenganui i nga ratonga. Kia ata titiro ki te taputapu me te kaupapa o te Pilot and Mixer.

Me pehea te whakahaere i a Istio ma te whakamahi i nga Kubernetes ki te whakaputa. Wāhanga 1

Ko te Pilot te waahanga whakahaere matua e tohatoha ana i nga korero katoa mo o taatau kei roto i te roopu - nga ratonga, o raatau mutunga me nga ture ararere (hei tauira, nga ture mo te tuku Canary me nga ture wehenga ara iahiko).

Ko te Mixer he waahanga rererangi mana whakahaere e whakarato ana i te kaha ki te kohi inenga, rakau, me nga korero mo te taunekeneke whatunga. Ka aro turuki ano ia i te hanganga ture ki nga ture kaupapa here me te u ki nga here reiti.

Ka whakatinanahia te rererangi raraunga ma te whakamahi i nga ipu takawaenga taha. Ka whakamahia te kaha ma te taunoa. karere takawaenga. Ka taea te whakakapi e tetahi atu whakatinanatanga, penei i te nginx (nginmesh).

Kia mahi tino marama a Istio ki nga tono, he punaha werohanga aunoa. Ko te whakatinanatanga hou e tika ana mo nga putanga Kubernetes 1.9+ (mutational admission webhook). Mo nga putanga Kubernetes 1.7, 1.8 ka taea te whakamahi i te Initializer.

Ko nga ipu Sidecar e hono ana ki te Pilot ma te whakamahi i te kawa GRPC, e taea ai e koe te arotau i te tauira pana mo nga huringa ka puta i roto i te tautau. Kua whakamahia te GRPC ki Envoy mai i te putanga 1.6, i Istio kua whakamahia mai i te putanga 0.8 a he kaiurungi-kaiwhakahaere - he takai golang i runga i te karere e whirihora ana i nga whiringa whakarewatanga.

Ko te Pilot me te Whakaranu he waahanga korekore, ka mau tonu nga ahuatanga katoa ki te mahara. Ko te whirihoranga mo ratou kua whakaritea ki te ahua o nga Rauemi Ritenga Kubernetes, kei te rongoa i roto etcd.
Ka whiwhi a Istio-agent i te wahitau o te Kaiurungi me te whakatuwhera i te awa GRPC ki reira.

Ka rite ki taku korero, ka whakatinanahia e Istio nga mahi katoa kia tino marama ki nga tono. Kia kite tatou me pehea. Ko te algorithm tenei:

  1. Te tuku i tetahi putanga hou o te ratonga.
  2. I runga i te huarahi werohanga ipu tahataha, ka taapirihia te ipu istio-init me te ipu-istio-agent (karere) i te wa o te tono whirihoranga, ka taea ranei te whakauru-a-ringa ki te whakaahuatanga o te hinonga Kubernetes Pod.
  3. Ko te ipu istio-init he tuhinga e whakamahi ana i nga ture iptables ki te pod. E rua nga whiringa mo te whirihora i nga waka kia takai ki roto i te ipu istio-agent: whakamahi iptables redirect ture, ranei TPROXY. I te wa e tuhi ana, ko te huarahi taunoa ko nga ture tuku. I roto i te istio-init, ka taea te whirihora ko tehea waka ka haukotia ka tukuna ki te istio-agent. Hei tauira, hei haukoti i nga waka taumai me nga waka puta katoa, me whakarite e koe nga tawhā -i и -b ki te tikanga *. Ka taea e koe te tohu tauranga motuhake hei haukoti. Kia kore ai e haukoti i tetahi kupengaroto motuhake, ka taea e koe te tohu ma te whakamahi i te haki -x.
  4. Ka oti nga ipu init, ka whakarewahia nga mea matua, tae atu ki te kaiurungi-kaiwhakahaere (karere). Ka hono atu ki te Pilot kua tukuna ma te GRPC ka whiwhi korero mo nga ratonga katoa me nga kaupapa here ararere i roto i te roopu. E ai ki nga raraunga kua riro mai, ka whirihorahia e ia nga tautau ka tautapa tika ki nga pito mutunga o a maatau tono i roto i te roopu Kubernetes. Me mahara ano ki tetahi mea nui: ka whirihora te karere i nga kaiwhakarongo (IP, takirua tauranga) ka tiimata te whakarongo. No reira, ka uru mai nga tono ki roto i te pod, ka tukuna ma te whakamahi i nga ture redirect iptables i roto i te waka taha, ka taea e te karere te whakahaere pai i enei hononga me te mohio ki hea hei takawaenga i nga waka. I tenei wa ano, ka tukuna atu nga korero ki te Mixer, ka tirohia e matou a muri ake nei, ka tukuna atu nga waahi tirotiro.

Ko te mutunga, ka whiwhi matou i te whatunga katoa o nga kaitoro takawaenga karere ka taea e matou te whirihora mai i te waahi kotahi (Pilot). Ko nga tono katoa ki roto me waho ka haere ma te karere. I tua atu, ko nga hokohoko TCP anake ka haukotia. Ko te tikanga ka whakatauhia te IP ratonga Kubernetes ma te whakamahi i te kube-dns i runga i te UDP me te kore e huri. Na, i muri i te whakatau, ka haukotia te tono puta, ka whakahaeretia e te karere, e whakatau ana ko tehea te mutunga o te tono kia tukuna atu (kaore ranei e tukuna, mo nga kaupapa here uru, te kaiwawao iahiko ranei o te algorithm).

I whakatauhia e matou te Pilot, inaianei me maarama me pehea te mahi a Mixer me te aha e hiahiatia ana. Ka taea e koe te panui i nga tuhinga mana mo taua mea konei.

E rua nga waahanga o te Mixer i tona ahua o naianei: istio-telemetry, istio-policy (i mua i te putanga 0.8 he waahanga istio-mixer). Ko raua tokorua he kai whakaranu, kei ia tangata te kawenga mo tana ake mahi. Ka whiwhi korero a Istio telemetry mo te hunga e haere ana ki hea, he aha nga tawhā mai i te sidecar Ripoata ipu ma te GRPC. Ka whakaaehia e te Istio-policy nga tono Tirohia hei manatoko kua makona nga ture Kaupapahere. Ko te tikanga, karekau e mahia mo nga tono katoa, engari ka keteroki ki te kaihoko (i roto i te waka taha) mo tetahi wa. Ka tukuna nga arowhai ripoata hei tono puranga. Kia kite tatou me pehea te whirihora me nga tawhā me tuku i muri tata nei.

E kiia ana ko te Mixer he waahanga tino watea hei whakarite kia kore e haukotia te mahi mo te huihuinga me te tukatuka o nga raraunga waea. Ka whiwhihia te punaha na te mea he paatete taumata-maha. I te timatanga, ka tukuna nga raraunga ki te taha taha o nga ipu, katahi ki te taha whakaranu, ka tukuna atu ki nga mea e kiia nei ko nga pito tuara. Ko te mutunga mai, ki te rahua etahi o nga waahanga o te punaha, ka tipu te kaitapaa, ka peehia i muri i te whakahokinga mai o te punaha. Ko nga pito o muri o te whakaranu he tohu mutunga mo te tuku raraunga waea: statsd, newrelic, etc. Ka taea e koe te tuhi i to ake tuara, he maamaa noa, ka kite maatau me pehea te mahi.

Me pehea te whakahaere i a Istio ma te whakamahi i nga Kubernetes ki te whakaputa. Wāhanga 1

Hei whakarāpopoto, ko te kaupapa mo te mahi me te istio-telemetry e whai ake nei.

  1. Ka tukuna e te Ratonga 1 he tono ki te ratonga 2.
  2. I te wehenga atu i te ratonga 1, ka takai te tono ki roto i tana ake motuka.
  3. Ka aro turuki te karere Sidecar me pehea te haere o te tono ki te ratonga 2 me te whakarite i nga korero e tika ana.
  4. Na ka tukuna ki te istio-telemetry ma te tono Ripoata.
  5. Ka whakatauhia e Istio-telemetry mena me tuku tenei Ripoata ki nga pito o muri, ki hea me nga raraunga me tuku.
  6. Ka tukuna e Istio-telemetry nga raraunga Ripoata ki te tuara ki te hiahiatia.

Inaianei kia kite tatou me pehea te whakauru i a Istio ki roto i te punaha, ko nga waahanga matua anake (Pilot me te kaikawe taha).

Tuatahi, me titiro ki te whirihoranga matua (mesh) e panuitia ana e te Pilot:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio
  namespace: istio-system
  labels:
    app: istio
    service: istio
data:
  mesh: |-

    # пока что не включаем отправку tracing информации (pilot настроит envoy’и таким образом, что отправка не будет происходить)
    enableTracing: false

    # пока что не указываем mixer endpoint’ы, чтобы sidecar контейнеры не отправляли информацию туда
    #mixerCheckServer: istio-policy.istio-system:15004
    #mixerReportServer: istio-telemetry.istio-system:15004

    # ставим временной промежуток, с которым будет envoy переспрашивать Pilot (это для старой версии envoy proxy)
    rdsRefreshDelay: 5s

    # default конфигурация для envoy sidecar
    defaultConfig:
      # аналогично как rdsRefreshDelay
      discoveryRefreshDelay: 5s

      # оставляем по умолчанию (путь к конфигурации и бинарю envoy)
      configPath: "/etc/istio/proxy"
      binaryPath: "/usr/local/bin/envoy"

      # дефолтное имя запущенного sidecar контейнера (используется, например, в именах сервиса при отправке tracing span’ов)
      serviceCluster: istio-proxy

      # время, которое будет ждать envoy до того, как он принудительно завершит все установленные соединения
      drainDuration: 45s
      parentShutdownDuration: 1m0s

      # по умолчанию используются REDIRECT правила iptables. Можно изменить на TPROXY.
      #interceptionMode: REDIRECT

      # Порт, на котором будет запущена admin панель каждого sidecar контейнера (envoy)
      proxyAdminPort: 15000

      # адрес, по которому будут отправляться trace’ы по zipkin протоколу (в начале мы отключили саму отправку, поэтому это поле сейчас не будет использоваться)
      zipkinAddress: tracing-collector.tracing:9411

      # statsd адрес для отправки метрик envoy контейнеров (отключаем)
      # statsdUdpAddress: aggregator:8126

      # выключаем поддержку опции Mutual TLS
      controlPlaneAuthPolicy: NONE

      # адрес, на котором будет слушать istio-pilot для того, чтобы сообщать информацию о service discovery всем sidecar контейнерам
      discoveryAddress: istio-pilot.istio-system:15007

Ko nga waahanga whakahaere matua katoa (rererangi whakahaere) ka noho ki te mokowā-ingoa istio-system i Kubernetes.

I te iti rawa, me tuku noa i te Pilot. Mo tenei ka whakamahia e matou he whirihoranga pera.

A ka whirihora a ringatia e matou te waka taha werohanga o te ipu.

ipu Init:

initContainers:
 - name: istio-init
   args:
   - -p
   - "15001"
   - -u
   - "1337"
   - -m
   - REDIRECT
   - -i
   - '*'
   - -b
   - '*'
   - -d
   - ""
   image: istio/proxy_init:1.0.0
   imagePullPolicy: IfNotPresent
   resources:
     limits:
       memory: 128Mi
   securityContext:
     capabilities:
       add:
       - NET_ADMIN

Me te waka taha:

       name: istio-proxy
       args:
         - "bash"
         - "-c"
         - |
           exec /usr/local/bin/pilot-agent proxy sidecar 
           --configPath 
           /etc/istio/proxy 
           --binaryPath 
           /usr/local/bin/envoy 
           --serviceCluster 
           service-name 
           --drainDuration 
           45s 
           --parentShutdownDuration 
           1m0s 
           --discoveryAddress 
           istio-pilot.istio-system:15007 
           --discoveryRefreshDelay 
           1s 
           --connectTimeout 
           10s 
           --proxyAdminPort 
           "15000" 
           --controlPlaneAuthPolicy 
           NONE
         env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: POD_NAMESPACE
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
         - name: INSTANCE_IP
           valueFrom:
             fieldRef:
               fieldPath: status.podIP
         - name: ISTIO_META_POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: ISTIO_META_INTERCEPTION_MODE
           value: REDIRECT
         image: istio/proxyv2:1.0.0
         imagePullPolicy: IfNotPresent
         resources:
           requests:
             cpu: 100m
             memory: 128Mi
           limits:
             memory: 2048Mi
         securityContext:
           privileged: false
           readOnlyRootFilesystem: true
           runAsUser: 1337
         volumeMounts:
         - mountPath: /etc/istio/proxy
           name: istio-envoy

Kia pai ai te tiimata o nga mea katoa, me hanga e koe he Pūkete Ratonga, ClusterRole, ClusterRoleBinding, CRD mo te Pilot, ka kitea nga whakaahuatanga konei.

Ko te mutunga mai, ko te ratonga e werohia ana e matou te waka taha ki te karere me timata pai, ka whiwhi i nga kitenga katoa mai i te kaiurungi me nga tono tono.

He mea nui kia maarama ko nga waahanga rererangi whakahaere katoa he tono kore whenua, ka taea te whakatau whakapae me te kore raru. Ko nga raraunga katoa ka rongoa ki roto etcd i te ahua o nga whakaahuatanga ritenga o nga rauemi Kubernetes.

I tua atu, kei a Istio (he whakamatautau tonu) te kaha ki te rere ki waho o te roopu me te kaha ki te maataki me te whakakorikori i nga kitenga ratonga i waenga i etahi tautau Kubernetes. Ka taea e koe te panui atu mo tenei konei.

Mo te whakaurunga huinga-maha, kia mohio koe ki nga here e whai ake nei:

  1. Ko te Pod CIDR me te CIDR Ratonga me ahurei puta noa i nga tautau katoa, kaua hoki e inaki.
  2. Me uru nga Pod CIDR katoa mai i nga Pod CIDR i waenga i nga tautau.
  3. Me uru nga tūmau API Kubernetes katoa ki a raatau ano.

Koinei nga korero tuatahi hei awhina i a koe ki te timata me Istio. Heoi ano, he maha tonu nga mahanga. Hei tauira, ko nga ahuatanga o te arataki i nga waka o waho (waho o te kapoi), he huarahi ki te patuiro i nga motuka taha, te whakaputa korero, te whakatu i te whakaranu me te tuhi i te tuara whakaraerae ritenga, te whakatuu i te huarahi tirotiro me tana mahi ma te whakamahi i te karere.
Ko enei mea katoa ka whakaarohia e tatou i roto i nga pukapuka e whai ake nei. Uia mai o patai, ka ngana ahau ki te hipoki.

Source: will.com

Tāpiri i te kōrero