ProHoster > Blog > Pulega > E faʻafefea ona taʻavale Istio faʻaaoga Kubernetes i le gaosiga. Vaega 1
E faʻafefea ona taʻavale Istio faʻaaoga Kubernetes i le gaosiga. Vaega 1
ā Istio? O le mea lea e taʻua o le 'auʻaunaga mesh, o se tekinolosi e faʻaopoopoina ai se vaega o le faʻaogaina i luga o le upega tafailagi. Matou te faʻalavelave uma poʻo se vaega o fefaʻatauaiga i totonu o le fuifui ma faia se seti o gaioiga faʻatasi ma ia. O fea tonu? Mo se faʻataʻitaʻiga, matou te faia faʻataʻitaʻiga atamai, pe matou te faʻatinoina le auala vaʻavaʻavaʻa, e mafai ona matou faʻatulagaina le "faʻapipiʻiina o canary", o se vaega o le fesuiaʻiina o feoaiga i se lomiga fou o le auaunaga, pe mafai foi ona faʻatapulaaina fegalegaleaiga i fafo ma pulea malaga uma mai le fuifui i le. feso'otaiga i fafo. E mafai ona fa'atulaga tulafono fa'avae e pulea ai malaga i le va o microservices eseese. Ma le mea mulimuli, e mafai ona matou maua le faʻafanua fesoʻotaʻiga atoa o fesoʻotaʻiga ma faʻamaonia atoatoa le aoina o fua faʻatatau i talosaga.
E mafai ona e faitau e uiga i le faiga o galuega i pepa aloaia. Istio o se meafaigaluega malosi tele e mafai ai e oe ona foia le tele o galuega ma faʻafitauli. I lenei tusiga, ou te fia tali fesili autu e masani ona tulaʻi mai pe a amata ile Istio. O le a fesoasoani lea ia te oe e taulimaina vave.
Pe faapefea ona galue
Istio e aofia ai vaega autu e lua - o le vaalele pulea ma le vaalele faʻamatalaga. O le vaalele pulea o loʻo i ai vaega autu e faʻamautinoa ai le faʻaogaina saʻo o le isi vaega. I le lomiga o loʻo i ai nei (1.0) o le vaʻalele faʻatonutonu e tolu vaega autu: Pilot, Mixer, Citadel. Matou te le mafaufau i le Citadel, e manaʻomia le faʻatupuina o tusi faamaonia e faʻamautinoa ai le TLS i le va o auaunaga. Se'i o tatou va'ava'ai toto'a ile masini ma le fa'amoemoe ole Pilot and Mixer.
O le pailate o le vaega autu e pulea e tufatufaina atu faʻamatalaga uma e uiga i mea o loʻo ia i tatou i totonu o le fuifui - auaunaga, o latou faʻaiʻuga ma tulafono taʻavale (mo se faʻataʻitaʻiga, tulafono mo le faʻapipiʻiina o Canary poʻo tulafono vaʻavaʻa).
Mixer o se vaega fa'atonutonu va'alele e tu'uina atu ai le agava'a e aoina metrics, ogalaau, ma so'o se fa'amatalaga e uiga i feso'ota'iga feso'ota'iga. Na te mata'itūina fo'i le tausisia o tulafono fa'avae ma le tausisia o tapulaa tau.
O le va'alele fa'amaumauga o lo'o fa'atinoina i le fa'aogaina o koneteina sui o ta'avale. E fa'aaogaina le malosi e ala i le faaletonu. sui sui. E mafai ona suia i se isi faʻatinoga, pei o le nginx (nginmesh).
Ina ia mafai e Istio ona galue manino atoatoa i talosaga, o loʻo i ai se faʻaogaina otometi. Ole fa'atinoga lata mai e talafeagai mo Kubernetes 1.9+ versions (mutational admission webhook). Mo Kubernetes versions 1.7, 1.8 e mafai ona faʻaaoga le Initializer.
O pusa Sidecar e fesoʻotaʻi ma Pilot e faʻaaoga ai le GRPC protocol, lea e mafai ai ona e faʻaogaina le faʻataʻitaʻiga faʻataʻitaʻiga mo suiga o loʻo tutupu i totonu o le fuifui. O le GRPC na faʻaaogaina i le Envoy talu mai le version 1.6, i Istio na faʻaaogaina talu mai le version 0.8 ma o se pailate-agent - o se afifi golang i luga o le avefeʻau e faʻatulagaina filifiliga faʻalauiloa.
Pilot ma Mixer o ni vaega e leai ni setete, o setete uma e teuina i le manatua. O le faʻatulagaga mo i latou o loʻo faʻatulagaina i le tulaga o Kubernetes Custom Resources, o loʻo teuina i etcd.
E maua e le Istio-agent le tuatusi o le pailate ma tatala ai se vaitafe GRPC i ai.
E pei ona ou fai atu, o loʻo faʻatinoina e Istio galuega uma e manino atoatoa i talosaga. Sei o tatou vaai pe faapefea. Ole algorithm ole:
Fa'atuina se fa'afouga fou o le tautua.
Faʻalagolago i le auala e tui ai le atigipusa, o le istio-init container ma le istio-agent container (avefeʻau) e faʻaopoopoina i le tulaga o le faʻaogaina o le faʻatulagaga, pe mafai foi ona tuʻuina ma le lima i le faʻamatalaga o le Kubernetes Pod entity.
O le pusa istio-init o se tusitusiga e faʻaoga tulafono iptables i le pod. E lua filifiliga mo le faʻatulagaina o fefaʻatauaiga e afifi i totonu o se pusa istio-agent: faʻaaoga tulafono faʻasalalau iptables, poʻo TPROXY. I le taimi o le tusitusi, o le auala le faʻaogaina o le toe faʻatonutonu tulafono. I le istio-init, e mafai ona fetuutuunai po o fea felauaiga e tatau ona taofia ma auina atu i le istio-agent. Mo se faʻataʻitaʻiga, ina ia mafai ona faʻalavelave uma feʻaveaʻi o loʻo sau ma fafo, e tatau ona e setiina faʻamau -i и -b i le uiga *. E mafai ona e fa'amaoti ports fa'apitoa e fa'alavelave. Ina ia aua neʻi faʻalavelaveina se subnet patino, e mafai ona e faʻamaonia i le faʻaaogaina o le fuʻa -x.
A maeʻa ona faʻataunuʻuina pusa init, e faʻalauiloa mea autu, e aofia ai le pailate-agent (avefeʻau). E fa'afeso'ota'i i le Pilot ua uma ona fa'atulagaina e ala i le GRPC ma maua fa'amatalaga e uiga i auaunaga uma o lo'o i ai ma faiga fa'aalaala i totonu o le fuifui. E tusa ai ma faʻamatalaga na maua, na te faʻapipiʻiina le fuifui ma tuʻu saʻo i latou i pito oa tatou talosaga i le Kubernetes cluster. E tatau foi ona matauina se mea taua: avefeau dynamically configures faalogologo (IP, port pairs) e amata ona faalogo i ai. O le mea lea, pe a o'o mai talosaga i totonu o le pod, ua toe fa'afeiloa'i i le fa'aogaina o tulafono redirect iptables i totonu o le ta'avale, e mafai e le avefe'au ona fa'agasolo lelei nei feso'ota'iga ma malamalama i le mea e toe sui ai le felauaiga. I le taimi foʻi lea, o loʻo tuʻuina atu faʻamatalaga i le Mixer, lea o le a tatou vaʻavaʻai i ai i se taimi mulimuli ane, ma o le suʻeina o vaʻa e auina atu.
O se taunuuga, matou te maua se fesoʻotaʻiga atoa o sui sui sui e mafai ona matou faʻatulagaina mai le tasi itu (Pilot). O talosaga uma i totonu ma fafo e ala atu i avefe'au. E le gata i lea, na'o le TCP felauaiga e fa'alavelaveina. O lona uiga o le Kubernetes service IP o loʻo foia e ala i le kube-dns i luga ole UDP e aunoa ma se suiga. Ma, a maeʻa le faʻaiuga, o le talosaga i fafo e faʻalavelaveina ma faʻatautaia e le avefeʻau, lea ua uma ona filifili po o fea le pito e tatau ona lafo i ai le talosaga (pe le auina atu, i le tulaga o faiga faʻavae poʻo le vaeluaga o le algorithm).
Na matou iloa le Pilot, o lea e tatau ona matou malamalama i le auala e galue ai Mixer ma pe aisea e manaʻomia ai. E mafai ona e faitau i pepa aloaia mo lea mea iinei.
Mixer i lona tulaga o loʻo i ai nei e aofia ai vaega e lua: istio-telemetry, istio-policy (aʻo leʻi oʻo i le version 0.8 o se tasi vaega o le istio-mixer). O i latou uma e lua o mea faʻafefiloi, o ia mea taʻitasi e nafa ma lana lava galuega. E maua e le Istio telemetry fa'amatalaga po'o ai e alu i fea ma po'o a ni tapula'a mai pusa ta'avale Ripoti e ala i le GRPC. E talia e le Istio-policy talosaga Siaki e fa'amaonia ai ua faamalieina tulafono Fa'avae. O su'esu'ega fa'apolokiki, o le mea moni, e le fa'atinoina mo talosaga uma, ae o lo'o teuina i luga o le kalani (i totonu o le ta'avale) mo se taimi patino. O siaki lipoti e auina atu e pei o talosaga fa'ato'a. Se'i o tatou va'ai pe fa'afefea ona fa'atulaga ma po'o a fa'amaufa'ailoga e tatau ona lafo i se taimi mulimuli ane.
O le Mixer e tatau ona avea o se vaega sili ona avanoa e faʻamautinoa ai le le faʻalavelaveina o galuega i luga o le faʻapotopotoga ma le faʻaogaina o faʻamatalaga telemetry. O le faiga e maua mai o se taunuuga e pei o se multi-level buffer. I le taimi muamua, o faʻamatalaga e faʻapipiʻi i le itu o le taʻavale o koneteina, ona sosoo ai lea ma le itu faʻafefiloi, ona lafo atu lea i le mea e taʻua o le mixer backends. O le i'uga, afai e fa'aletonu nisi o vaega o le system, e tupu le pa'u ma fa'amulumulu pe a uma ona toe fa'afo'isia le faiga. Fa'afefiloi pito i tua o fa'ai'uga ia mo le lafoina o fa'amatalaga telemetry: statsd, newrelic, ma isi. E mafai ona e tusia lau lava pito i tua, e fai si faigofie, ma o le a matou vaʻai pe faʻapefea ona fai.
I se aotelega, o le polokalame mo le galue i le istio-telemetry e faʻapea.
E auina atu e le Auaunaga 1 se talosaga i le auaunaga 2.
Pe a tuua le auaunaga 1, o le talosaga e afifi i lana lava taʻavale.
Sidecar avefe'au e mata'ituina pe fa'afefea ona alu le talosaga ile tautua 2 ma saunia fa'amatalaga talafeagai.
Ona auina atu lea i le istio-telemetry e faʻaaoga ai se Lipoti talosaga.
O le Istio-telemetry e fuafua pe tatau ona auina atu lenei Lipoti i pito i tua, o fea ma o a faʻamatalaga e tatau ona lafo.
E auina atu e le Istio-telemetry faʻamatalaga Lipoti i le pito i tua pe a manaʻomia.
Sei o tatou vaʻai pe faʻapefea ona faʻapipiʻi Istio i totonu o le polokalama, e aofia ai naʻo vaega autu (Pilot ma le avefeʻau pito).
Muamua, seʻi o tatou vaʻavaʻai i le faʻatulagaga autu (mesh) lea e faitauina e 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
O vaega autu uma e pulea (vaalele fa'atonutonu) o le a tu'u i le namespace istio-system i Kubernetes.
I se tulaga maualalo, matou te manaʻomia le faʻapipiʻiina o Pilot. Mo lenei mea o le a matou faʻaaogaina se faatulagaga faapena.
Ma o le a matou faʻapipiʻiina ma le lima le taʻavale tui o le pusa.
Ina ia mafai ona amata manuia mea uma, e tatau ona e fatuina se ServiceAccount, ClusterRole, ClusterRoleBinding, CRD mo Pilot, o faʻamatalaga e mafai ona maua. iinei.
O se taunuuga, o le auaunaga lea tatou te tui ai le taʻavale faʻatasi ma le avefeʻau e tatau ona amata manuia, maua uma mea na maua mai le pailate ma faʻatonuina talosaga.
E taua le malamalama o vaega uma o le vaalele e leai ni fa'aoga ma e mafai ona fa'alava fa'alava e aunoa ma ni fa'afitauli. O faʻamaumauga uma o loʻo teuina i totonu etcd i le tulaga o faʻamatalaga masani o punaoa Kubernetes.
E le gata i lea, Istio (fa'ata'ita'i pea) o lo'o i ai le malosi e tamo'e ai i fafo o le fuifui ma le malosi e matamata ai ma fumble le mauaina o auaunaga i le va o le tele o fuifui Kubernetes. E mafai ona e faitau atili e uiga i lenei mea iinei.
Mo se fa'apipi'i fa'apipi'i tele, ia nofouta i tapula'a nei:
O le Pod CIDR ma le Service CIDR e tatau ona tulaga ese i fuifui uma ma e le tatau ona so'a.
O CIDR Pods uma e tatau ona maua mai so'o se CIDR Pods i le va o fuifui.
O 'au'aunaga uma a Kubernetes API e tatau ona avanoa le tasi i le isi.
O le faʻamatalaga muamua lea e fesoasoani ia te oe e amata ai Istio. Ae ui i lea, o loʻo i ai pea le tele o faʻalavelave. Mo se faʻataʻitaʻiga, faʻataʻitaʻiga o le taʻavaleina o fefaʻatauaiga i fafo (i fafo atu o le fuifui), auala e faʻapipiʻi ai taʻavale, faʻamatalaga, faʻapipiʻi se mea faʻafefiloi ma le tusiaina o se faʻapipiʻi masani i tua, faʻatutuina se masini suʻesuʻe ma lona faʻaogaina e faʻaaoga ai le avefeʻau.
O nei mea uma o le a tatou iloiloina i lomiga o loo mulimuli mai. Fai mai au fesili, o le a ou taumafai e tali.