Quomodo currere Istio utens Kubernetes in productione. Pars I

quod Istio? Haec reticulum servitii sic dicta, technicae quae abstractionis iacuit super ornatum addit. Totam vel partem negocii in botro intercipimus et certam partem operationum cum eo exercemus. Quodnam? Exempli gratia, nos callide fundere, seu praevaricator accessus ambitus efficiendi, "instruere canariam" possumus, partim commutandi commercium ad novam servitii versionem, vel interationes externas limitare et omnia itinera ab botro ad externum refrenare. ornatum. Possibile est consilium regit ad itinera moderari inter varias microservices. Denique tabulam mutuam retis integram capere possumus atque collectionem metricam unicam ad applicationes perfecte perspicuas facere.

Legere potes de mechanism operantes in officialis documenta. Istio instrumentum vere validum est quod multa negotia et difficultates solvere potest. In hoc articulo quaestiones praecipuas respondere vellem, quae oriri solent, quando incipiendo ab Istio laborandum est. Hoc proderit tibi ocius agere.

Quomodo currere Istio utens Kubernetes in productione. Pars I

How it works

Istio duabus zonis principalibus constat - dicione plana et planum datae. Imperium planum principales partes continet quae rectam reliquorum operationem invigilant. In emendatione (1.0), moderamen planum tria principalia habet: Gubernator, Mixer, Arcis. Arcem non consideramus, opus est libellos gignere ad operandum mutuae TLS inter officia curanda. Propius inspiciamus consilium et propositum Gubernator et Mixer.

Quomodo currere Istio utens Kubernetes in productione. Pars I

Gubernator principale ditionis est quae omnia distribuit informationes circa ea quae in botro - servitiis habemus, earum terminos et regulas excitandas (exempli gratia: regulas de instruere Canariis vel praevaricatoris circuli regulas).

Mixer est ad libitum ditionis planum componente, quod facultatem praebet colligendi metricos, tigna et quaelibet informationes de retis commercio. Etiam monitores obsequium cum Policy regit et obsequio cum rate limites.

Data planum est utens procuratorem lateralem in vasis. Default potens legatus ineundo server. Reponi potest cum alia exsecutione, exempli gratia nginx (nginmesh).

Ut Istio perlucidum ad applicationes omnino operetur, ratio iniectio est latae sententiae. Novissima exsecutio apta est versionibus Kubernetibus 1.9+ (mutationalis admissionis webhook). Ad Kubernetes versiones 1.7, 1.8 uti potest Initializer.

Vasa sidecar coniungunt cum nauclero GRPC protocollo utente, quod te permittit ad optimize exemplum pro impellendis mutationibus in botro occurrentibus. GRPC in Legato uti incepit cum versione 1.6, in Istio ex versione 0.8 adhibita est et gubernator est agentis - folliculus golang super legatum qui parametros launches conformat.

Gubernator et Mixer partes omnino dissolutae sunt, omnis status in memoria tenetur. Configuratio earum ponitur in forma Resources Customs Kubernetes, quae salvantur in etc.
Istio-agens gubernatorem electronicam accipit et GRPC rivum ei aperit.

Istio, ut dixi, omnem functionem prorsus perspicuam ad applicationes instruit. Sit amet quam. Algorithmus sic est;

  1. Novam versionem servitii explicabimus.
  2. Secundum accessum injiciendi sidecar continentis, istio-initing et istio-agens continens (legatus) adduntur in stadio applicandi schematismi, vel iam manually inseri possunt in Pod descriptionem entitatis Kubernetarum. .
  3. Istio-init continens scriptum est quod regulas iptables ad vasculum applicat. Duae optiones instituendae negotiationis sunt involuti in vase istio-agente: regulae iptabiles redirectae utere, vel TPROXY. In tempore scripto, accessus default cum regulis redirectis. Istio-init te permittit configurare quod genus negotiationis intercipi debet et ad istio-agentem mitti. Exempli gratia, ut omnes advenientes omnesque exitu mercaturae intercipiantur, parametris instituere debes -i и -b in significatione *. Tu certos portus intercipere potes. Ut notam subneti non intercipias, denotare potes utendo vexillum -x.
  4. Post init vasa exsecuta sunt, praecipuae deductae sunt, incluso agente gubernatori (legato). Iungitur gubernatori per GRPC iam instructo et informationem accipit de omnibus officiis existentibus et consiliis in botro excitandis. Secundum notitias acceptas, ligaturas conformat et eas directe ad fines applicationum nostrorum in botro Kubernetes assignat. Oportet etiam notare rem magni momenti: legatus dynamice auditores conformat (IP, portum pairum) qui audire incipit. Cum igitur petitiones legumen intrant et redirectas regulas iptabiles ad sidecar redirectas adhibent, legatus has nexus iam feliciter processit et intellegit ubi negotiatio proximo procuranda sit. Etiam in hac scaena, notitiae ad Mixer mittuntur, quas postea videbimus, et palmorum curricula mittuntur.

Quam ob rem totum retis legatio procuratoris accipimus, quod ex uno puncto configurare possumus (Gubernator). Omnes petitiones inbound et outbound per legatum ire. Praeterea solum TCP mercatura intercipitur. Hoc significat ministerium IP Kubernetes quod kube-dns super UDP sine mutatione usus resolvitur. Deinde, resoluto consilio, intercipitur et discursum rogatio a legato, qui decernit utra petitio mitteretur (vel non mitteretur, si accessus agendi vel ruptor algorithmus ambitus utitur).

Nauclerus nos digessit, nunc intelligere debemus quomodo opera mixtor et cur opus sit. Potes legere documenta publica in ea hic.

Mixer in forma currenti consistit in duobus componentibus: istio-telemetria, istio-consilium (ante versionem 0.8 haec erat una istio-nexor). Uterque mixtor est, quorum uterque sui muneris est responsabilis. Istio telemetria informationes accipit per GRPC a sidecar Renuntiatio continentia de quis iturus ubi et cum quibus parametris. Istio-consilium acceptat Perscriptio petitiones ad reprimendam num regulae Policy occurrant. Poilicy checks sunt, utique non ad singulas petitiones exercendas, sed in cliente (in sidecar) per aliquod tempus condiuntur. Renuntiatio compescit a batch petitiones mittuntur. Videbimus quomodo ad illud configurandum et ad id ipsum quod paulo post parametros mittendos opus est.

Mixer intendit esse elementum maxime promptum quod lenis operatio datorum telemetrii collectionem et processus efficit. Ratio finalis quasi quiddam multi-gradum. Initio data est buffered in lateribus vasis sidecaris, deinde in parte mixti, et deinde ad posteriorem sic dictam turpis. Quam ob rem, si aliqua partium ratio deficit, crescit quiddam et rubescit, postquam ratio restituitur. Mixer backends sunt fines ad data telemetria mittenda: statsd, newrelic, etc. Rescribere tuum rescriptum potes, satis simplex est, et quomodo id facias videbimus.

Quomodo currere Istio utens Kubernetes in productione. Pars I

Summatim ratio haec est.

  1. Servitium 1 petitionem mittit ad officium 2 .
  2. Discedens officium 1 , petitio sua sidecar involvitur.
  3. Legatus sidecar monitores quo modo petitio ad officium 2 accedit et notitias necessarias praeparat.
  4. Deinde eam mittit ad istio-telemetriam Relatione rogatu utens.
  5. Istio-telemetria decernit utrum relatio haec mittere debeat ad backends, quae et quae notitia mittenda sit.
  6. Istio-telemetria mittit Relatione data ad backend si necesse est.

Nunc videamus quomodo explicanda est Istio in systemate, solum principalium partium (gubernator et legatio sidecarus).

Primum inspiciamus figuram principalem quam Nauclerus legit:

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

Omnes principales potestates ponemus in spatio nominali isto-systema in Kubernetes.

Ad minimum, tantum explicandi Gubernatori opus est. Hoc enim utemur cum hoc schemate.

Et manually figurabimus infusum sidecar continentis.

Continens 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

et sidecar;

       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

Ut omnia prospere incipiant, debes creare ServiceAccount, ClusterRole, ClusterRoleBinding, CRD gubernatori, cuius descriptiones inveniri possunt. hic.

Quam ob rem, officium, in quod sidecaro cum legato injicimus, feliciter iniciendum est, omnem inventionem a gubernatore ac processu petitiones accipimus.

Aliquam sit amet intelligere omnes partes planae applicationes state et horizontaliter escendere posse sine problematibus. All notitia reposita est in etcd in descriptione consuetudinis formas facultates Kubernetes.

Istio etiam (adhuc experimentalis) facultatem habet extra botrum currendi et facultatem explorandi ac muneris inveniendi inter plures uvas Kubernetes. De hoc legere potes hic.

Ad institutionem multi- racemi, limitationes sequentes considera:

  1. Vasculum CIDR et ipsum CIDR unicum per omnes ligaturas debent esse nec aliudquam.
  2. Omne Pod CIDRs ab aliquo Pod CIDRs inter ligaturas attingibile esse debet.
  3. Omnes Kubernetes API servitores inter se perviae esse debent.

Haec est fundamentalis introductio ad auxilium tuum ut incipias ab Istio. Sed multae insidiae adhuc sunt. Exempli gratia, lineamenta commercii externi (extra botrum) appropinquat ad debugging siderum, profiling, constituendi mixer et scribendi consuetudo turpis backendi, mechanismum investigandi et operandi utendi legato.
Haec omnia in sequentibus editionibus tractabimus. Interroga tu, conabor ea declarare.

Source: www.habr.com

Add a comment