{"id":32766,"date":"2019-10-31T21:48:48","date_gmt":"2019-10-31T18:48:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1\/"},"modified":"2019-10-31T21:48:48","modified_gmt":"2019-10-31T18:48:48","slug":"kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","title":{"rendered":"Hur man k\u00f6r Istio med Kubernetes i produktion. Del 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vad \u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\">Istio<\/a><\/noindex>? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e. \u041c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c. \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 circuit breaker, \u043c\u043e\u0436\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00abcanary deployment\u00bb, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u0445\u043e\u0434\u044b \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c policy \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u043e\u0445\u043e\u0434\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u044e \u043a\u0430\u0440\u0442\u0443 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u0441\u0435\u0442\u0438 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0431\u043e\u0440 \u043c\u0435\u0442\u0440\u0438\u043a \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>Du kan l\u00e4sa om hur mekanismen fungerar i <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/concepts\/\">den officiella dokumentationen<\/a><\/noindex>. Istio \u00e4r verkligen ett kraftfullt verktyg som kan l\u00f6sa m\u00e5nga uppgifter och problem. I den h\u00e4r artikeln skulle jag vilja besvara de viktigaste fr\u00e5gorna som vanligtvis dyker upp i b\u00f6rjan av arbetet med Istio. Det kommer att hj\u00e4lpa dig att f\u00f6rst\u00e5 det snabbare.<\/p>\n<p><img decoding=\"async\" alt=\"Hur man k\u00f6r Istio med Kubernetes i produktion. Del 1\" src=\"\/wp-content\/uploads\/2019\/04\/7ab676ec42cacafc97099d5af9f6332a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Arbetsprincip.<\/h3>\n<p>\nIstio best\u00e5r av tv\u00e5 huvudsakliga zoner \u2014 kontrollplanen och dataplans. Kontrollplanen inneh\u00e5ller de viktigaste komponenterna som s\u00e4kerst\u00e4ller att de andra fungerar korrekt. I den aktuella versionen (1.0) har kontrollplanen tre huvudkomponenter: Pilot, Mixer, Citadel. Citadel kommer vi inte att titta p\u00e5, den beh\u00f6vs f\u00f6r att generera certifikat f\u00f6r att s\u00e4kerst\u00e4lla anv\u00e4ndningen av mutual TLS mellan tj\u00e4nster. L\u00e5t oss ta en n\u00e4rmare titt p\u00e5 hur Pilot och Mixer \u00e4r konstruerade och deras syfte.<\/p>\n<p><img decoding=\"async\" alt=\"Hur man k\u00f6r Istio med Kubernetes i produktion. Del 1\" src=\"\/wp-content\/uploads\/2019\/04\/1e2b76b5ec12343dee7728e505321908.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPilot \u00e4r den huvudsakliga styrkomponenten som sprider all information om vad vi har i klustret \u2013 tj\u00e4nster, deras endpoints och routingregler (till exempel, regler f\u00f6r Canary deployment eller regler f\u00f6r circuit breaker).<\/p>\n<p>Mixer \u00e4r en valfri komponent i kontrollplanen som ger m\u00f6jlighet att samla in m\u00e4tv\u00e4rden, loggar och all information om n\u00e4tverksinteraktion. Den \u00f6vervakar ocks\u00e5 efterlevnaden av policyregler och efterlevnaden av begr\u00e4nsningar f\u00f6r hastighet.<\/p>\n<p>Data plane implementeras med hj\u00e4lp av sidecar proxycontainrar. Som standard anv\u00e4nds en kraftfull <noindex><a rel=\"nofollow\" href=\"https:\/\/www.envoyproxy.io\/\">proxyserver envoy<\/a><\/noindex>. Den kan ers\u00e4ttas med en annan implementering, till exempel nginx (nginmesh).<\/p>\n<p>F\u00f6r att Istio ska fungera helt transparent f\u00f6r applikationerna finns det ett automatiskt injektionssystem. Den senaste implementeringen passar f\u00f6r versioner av Kubernetes 1.9+ (mutational admission webhook). F\u00f6r versioner av Kubernetes 1.7, 1.8 finns m\u00f6jlighet att anv\u00e4nda Initializer.<\/p>\n<p>Sidecarcontainrarna kopplar ihop med Pilot via GRPC-protokollet, vilket g\u00f6r att man kan optimera modellen f\u00f6r att push:a \u00e4ndringar som sker i klustret. GRPC b\u00f6rjade anv\u00e4ndas i Envoy fr\u00e5n och med version 1.6, i Istio anv\u00e4nds det sedan version 0.8 och representerar pilot-agent \u2014 ett wrapper i golang \u00f6ver envoy, som konfigurerar startparametrarna.<\/p>\n<p>Pilot och Mixer \u00e4r helt stateless komponenter, allt tillst\u00e5nd h\u00e5lls i minnet. Konfigurationen f\u00f6r dem anges i form av Kubernetes Custom Resources, som sparas i etcd. <br \/>\nIstio-agenten f\u00e5r adressen till Pilot och \u00f6ppnar en GRPC-stream till den. <\/p>\n<p>Som jag redan n\u00e4mnt, implementerar Istio all funktionalitet helt transparent f\u00f6r applikationerna. L\u00e5t oss f\u00f6rst\u00e5 hur. Algoritmen \u00e4r f\u00f6ljande:<\/p>\n<ol>\n<li>Vi distribuerar en ny version av tj\u00e4nsten.<\/li>\n<li>Beroende p\u00e5 tillv\u00e4gag\u00e5ngss\u00e4ttet f\u00f6r injektering l\u00e4ggs istio-init-container och istio-agent-container (envoy) till under konfigurationens till\u00e4mpningssteg, eller s\u00e5 kan de redan ha h\u00e5rdputsats in i Pod-entiteten i Kubernetes.<\/li>\n<li>istio-init-container \u00e4r ett skript som till\u00e4mpar iptables-regler f\u00f6r podden. Det finns tv\u00e5 alternativ f\u00f6r att konfigurera hur trafiken ska dirigeras till istio-agent-container: att anv\u00e4nda omdirigeringsregler f\u00f6r iptables, eller <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kristrev\/tproxy-example\/blob\/master\/tproxy_example.c\">TPROXY<\/a><\/noindex>. Vid tidpunkten f\u00f6r artikelskrivandet anv\u00e4nds som standard tillv\u00e4gag\u00e5ngss\u00e4ttet med omdirigeringsregler. I istio-init finns m\u00f6jlighet att st\u00e4lla in vilken trafik som ska f\u00e5ngas och dirigeras till istio-agent. Till exempel, f\u00f6r att f\u00e5nga all inkommande och all utg\u00e5ende trafik, m\u00e5ste f\u00f6ljande parametrar st\u00e4llas in <code>-i<\/code> och <code>-b<\/code> till v\u00e4rdet <code>*<\/code>. Specifika portar kan anges som beh\u00f6ver f\u00e5ngas. F\u00f6r att undvika att f\u00e5nga en viss undern\u00e4t kan den anges med hj\u00e4lp av flaggan <code>-x<\/code>.<\/li>\n<li>Efter att init-containrarna har k\u00f6rts startas huvudcontainrarna, inklusive pilot-agent (envoy). Den ansluter till redan distribuerat Pilot via GRPC och f\u00e5r information om alla existerande tj\u00e4nster och routingpolicys i klustret. Utifr\u00e5n den mottagna informationen konfigurerar den kluster och registrerar direkt endpointarna f\u00f6r v\u00e5ra applikationer i Kubernetes-klustret. Det \u00e4r ocks\u00e5 viktigt att notera att envoy dynamiskt konfigurerar lyssnare (par av IP, port) som den b\u00f6rjar lyssna p\u00e5. D\u00e4rf\u00f6r, n\u00e4r f\u00f6rfr\u00e5gningar g\u00e5r in i podden, omdirigeras de med hj\u00e4lp av omdirigeringsregler f\u00f6r iptables till sidecar, och envoy kan framg\u00e5ngsrikt hantera dessa anslutningar och f\u00f6rst\u00e5 vart trafiken ska proxys. Vid denna tidpunkt sker ocks\u00e5 \u00f6verf\u00f6ring av information till Mixer, som vi kommer att titta n\u00e4rmare p\u00e5 senare, och \u00f6verf\u00f6ring av tracing spanar.<\/li>\n<\/ol>\n<p>\nResultatet blir ett helt n\u00e4tverk av envoy-proxy-servrar som vi kan konfigurera fr\u00e5n en enda punkt (Pilot). Alla inkommande och utg\u00e5ende f\u00f6rfr\u00e5gningar passerar genom envoy. Endast TCP-trafik f\u00e5ngas. Det betyder att Kubernetes-tj\u00e4nstens IP l\u00f6ses med hj\u00e4lp av kube-dns via UDP utan f\u00f6r\u00e4ndringar. Efter att namnl\u00f6sningen sker f\u00e5ngas den utg\u00e5ende f\u00f6rfr\u00e5gan och bearbetas av envoy, som sedan beslutar vilken endpoint f\u00f6rfr\u00e5gan ska skickas till (eller om den inte ska skickas, vid \u00e5tkomstpolicies eller om circuit breaker-algoritmen aktiveras).<\/p>\n<p>Nu n\u00e4r vi har f\u00f6rst\u00e5tt Pilot, m\u00e5ste vi f\u00f6rst\u00e5 hur Mixer fungerar och varf\u00f6r det beh\u00f6vs. Den officiella dokumentationen kan l\u00e4sas. <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/concepts\/policies-and-telemetry\/overview\/\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>.<\/p>\n<p>Mixer i sin nuvarande form best\u00e5r av tv\u00e5 komponenter: istio-telemetry och istio-policy (tidigare var detta en komponent som hette istio-mixer fram till version 0.8). B\u00e5da dessa utg\u00f6r mixer, d\u00e4r var och en ansvarar f\u00f6r sin specifika uppgift. Istio telemetry tar emot rapporter via GRPC fr\u00e5n sidecar-containrarna om vem som g\u00e5r vart och med vilka parametrar. Istio-policy tar emot Check-f\u00f6rfr\u00e5gningar f\u00f6r att verifiera efterlevnaden av Policy-regler. Policy-kontroller utf\u00f6rs givetvis inte f\u00f6r varje f\u00f6rfr\u00e5gan, utan cachas p\u00e5 klienten (i sidecar) under en viss tid. Rapportkontroller skickas som batch-f\u00f6rfr\u00e5gningar. Hur man konfigurerar och vilka specifika parametrar som ska skickas kommer vi att titta p\u00e5 lite senare. <\/p>\n<p>Mixer f\u00f6rv\u00e4ntas vara en h\u00f6g tillg\u00e4nglig komponent som s\u00e4kerst\u00e4ller en oavbruten drift av insamling och behandling av telemetrydata. Systemet blir i slut\u00e4ndan en flerv\u00e4rdsbuffert. Ursprungligen buffras data p\u00e5 sidan av sidecar-containrar, sedan p\u00e5 sidan av mixer och skickas sedan till s\u00e5 kallade mixer-backends. Om n\u00e5gon komponent i systemet skulle sluta fungera v\u00e4xer bufferten, och efter att systemet \u00e5terst\u00e4lls spolas den. Mixer-backends utg\u00f6r slutpunkter f\u00f6r att skicka telemetrydata: statsd, newrelic osv. Du kan skriva din egen backend, och det \u00e4r ganska enkelt, och vi kommer att se hur man g\u00f6r det.<\/p>\n<p><img decoding=\"async\" alt=\"Hur man k\u00f6r Istio med Kubernetes i produktion. Del 1\" src=\"\/wp-content\/uploads\/2019\/04\/e7dd11d5ee26a692e1cd213578d47700.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSammanfattningsvis \u00e4r arbetsfl\u00f6det f\u00f6r istio-telemetry s\u00e5 h\u00e4r.<\/p>\n<ol>\n<li>Tj\u00e4nst 1 skickar en beg\u00e4ran till tj\u00e4nst 2.<\/li>\n<li>Vid utg\u00e5ng fr\u00e5n tj\u00e4nst 1 packas beg\u00e4ran in i dess egen sidecar.<\/li>\n<li>Sidecar envoy \u00f6vervakar hur beg\u00e4ran passerar till tj\u00e4nst 2 och f\u00f6rbereder den n\u00f6dv\u00e4ndiga informationen.<\/li>\n<li>Den skickar sedan denna information till istio-telemetry med hj\u00e4lp av en Rapport-beg\u00e4ran.<\/li>\n<li>Istio-telemetry avg\u00f6r om rapporten ska skickas till backends, till vilka specifika backends och vilka data som ska skickas.<\/li>\n<li>Istio-telemetry skickar rapportdata till backend om det \u00e4r n\u00f6dv\u00e4ndigt.<\/li>\n<\/ol>\n<p>\nL\u00e5t oss nu titta p\u00e5 hur man implementerar Istio-systemet som bara best\u00e5r av de grundl\u00e4ggande komponenterna (Pilot och sidecar envoy).<\/p>\n<p>F\u00f6rst tittar vi p\u00e5 den grundl\u00e4ggande konfigurationen (mesh) som Pilot l\u00e4ser:<\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: istio\n  namespace: istio-system\n  labels:\n    app: istio\n    service: istio\ndata:\n  mesh: |-\n\n    # F\u00f6r tillf\u00e4llet skickar vi inte n\u00e5gon tracing information (pilot kommer att konfigurera envoy s\u00e5 att skickande inte kommer att ske)\n    enableTracing: false\n\n    # F\u00f6r tillf\u00e4llet anger vi inte mixer-endpointar, s\u00e5 att sidecar-containrarna inte skickar information dit\n    #mixerCheckServer: istio-policy.istio-system:15004\n    #mixerReportServer: istio-telemetry.istio-system:15004\n\n    # Vi st\u00e4ller in tidsintervallet som envoy kommer att fr\u00e5ga Pilot (detta \u00e4r f\u00f6r den gamla versionen av envoy proxy)\n    rdsRefreshDelay: 5s\n\n    # Standardkonfiguration f\u00f6r envoy sidecar\n    defaultConfig:\n      # som rdsRefreshDelay\n      discoveryRefreshDelay: 5s\n\n      # h\u00e5ll standard (v\u00e4g till konfiguration och bin\u00e4r f\u00f6r envoy)\n      configPath: \"\/etc\/istio\/proxy\"\n      binaryPath: \"\/usr\/local\/bin\/envoy\"\n\n      # standardnamn f\u00f6r den k\u00f6rande sidecar-containern (anv\u00e4nds till exempel i servicenamn vid skickande av tracing spans)\n      serviceCluster: istio-proxy\n\n      # tid som envoy kommer att v\u00e4nta innan den tvingat avslutar alla etablerade anslutningar\n      drainDuration: 45s\n      parentShutdownDuration: 1m0s\n\n      # som standard anv\u00e4nds REDIRECT-regler f\u00f6r iptables. Kan \u00e4ndras till TPROXY.\n      #interceptionMode: REDIRECT\n\n      # Port d\u00e4r adminpanelen f\u00f6r varje sidecar-container (envoy) kommer att k\u00f6ras\n      proxyAdminPort: 15000\n\n      # Adress dit trace kommer att skickas via zipkin-protokollet (i b\u00f6rjan st\u00e4ngde vi av sj\u00e4lva \u00f6verf\u00f6ringen, s\u00e5 detta f\u00e4lt kommer f\u00f6r n\u00e4rvarande inte att anv\u00e4ndas)\n      zipkinAddress: tracing-collector.tracing:9411\n\n      # statsd-adress f\u00f6r att skicka metrics f\u00f6r envoy-containrar (st\u00e4nger av)\n      # statsdUdpAddress: aggregator:8126\n\n      # St\u00e4nger av st\u00f6d f\u00f6r alternativet Mutual TLS\n      controlPlaneAuthPolicy: NONE\n\n      # Adress d\u00e4r istio-pilot kommer att lyssna f\u00f6r att informera alla sidecar-containrar om service discovery\n      discoveryAddress: istio-pilot.istio-system:15007\n<\/code><\/pre>\n<p>\nVi kommer att placera alla huvudkomponenter f\u00f6r kontrollplanet (control plane) i namespace istio-system i Kubernetes.<\/p>\n<p>Minimalt beh\u00f6ver vi bara implementera Pilot. F\u00f6r detta kommer vi att anv\u00e4nda <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/istio\/istio\/blob\/release-1.0\/install\/kubernetes\/helm\/istio\/charts\/pilot\/templates\/deployment.yaml\">denna konfiguration.<\/a><\/noindex><\/p>\n<p>Och vi kommer att konfigurera manuell injecting av sidecar-containern.<\/p>\n<p>Init-container:<\/p>\n<pre><code class=\"plaintext\">initContainers:\n - name: istio-init\n   args:\n   - -p\n   - \"15001\"\n   - -u\n   - \"1337\"\n   - -m\n   - REDIRECT\n   - -i\n   - '*'\n   - -b\n   - '*'\n   - -d\n   - \"\"\n   image: istio\/proxy_init:1.0.0\n   imagePullPolicy: IfNotPresent\n   resources:\n     limits:\n       memory: 128Mi\n   securityContext:\n     capabilities:\n       add:\n       - NET_ADMIN\n<\/code><\/pre>\n<p>\nOch sidecar:<\/p>\n<pre><code class=\"plaintext\">       name: istio-proxy\n       args:\n         - \"bash\"\n         - \"-c\"\n         - |\n           exec \/usr\/local\/bin\/pilot-agent proxy sidecar \n           --configPath \n           \/etc\/istio\/proxy \n           --binaryPath \n           \/usr\/local\/bin\/envoy \n           --serviceCluster \n           service-name \n           --drainDuration \n           45s \n           --parentShutdownDuration \n           1m0s \n           --discoveryAddress \n           istio-pilot.istio-system:15007 \n           --discoveryRefreshDelay \n           1s \n           --connectTimeout \n           10s \n           --proxyAdminPort \n           \"15000\" \n           --controlPlaneAuthPolicy \n           NONE\n         env:\n         - name: POD_NAME\n           valueFrom:\n             fieldRef:\n               fieldPath: metadata.name\n         - name: POD_NAMESPACE\n           valueFrom:\n             fieldRef:\n               fieldPath: metadata.namespace\n         - name: INSTANCE_IP\n           valueFrom:\n             fieldRef:\n               fieldPath: status.podIP\n         - name: ISTIO_META_POD_NAME\n           valueFrom:\n             fieldRef:\n               fieldPath: metadata.name\n         - name: ISTIO_META_INTERCEPTION_MODE\n           value: REDIRECT\n         image: istio\/proxyv2:1.0.0\n         imagePullPolicy: IfNotPresent\n         resources:\n           requests:\n             cpu: 100m\n             memory: 128Mi\n           limits:\n             memory: 2048Mi\n         securityContext:\n           privileged: false\n           readOnlyRootFilesystem: true\n           runAsUser: 1337\n         volumeMounts:\n         - mountPath: \/etc\/istio\/proxy\n           name: istio-envoy\n<\/code><\/pre>\n<p>\nF\u00f6r att allt ska starta framg\u00e5ngsrikt m\u00e5ste du skapa en ServiceAccount, ClusterRole, ClusterRoleBinding, CRD f\u00f6r Pilot, vars beskrivningar kan hittas. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/istio\/istio\/tree\/release-1.0\/install\/kubernetes\/helm\/istio\/charts\/pilot\/templates\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>. <\/p>\n<p>I slut\u00e4ndan m\u00e5ste tj\u00e4nsten, d\u00e4r vi injicerar sidecar med envoy, lyckas starta, f\u00e5 all discovery fr\u00e5n piloten och hantera f\u00f6rfr\u00e5gningar.<\/p>\n<p>Det \u00e4r viktigt att f\u00f6rst\u00e5 att alla komponenter i kontrollplanet \u00e4r stateless-applikationer och kan enkelt skalas horisontellt. All data finns i etcd som anpassade resursbeskrivningar av Kubernetes.<\/p>\n<p>Dessutom har Istio (\u00e4n s\u00e5 l\u00e4nge experimentellt) m\u00f6jlighet att k\u00f6ras utanf\u00f6r klustret och att se och dela service discovery mellan flera Kubernetes-kluster. Mer om detta kan du l\u00e4sa. <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/multicluster-install\/\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>.<\/p>\n<p>Vid installation av flera kluster b\u00f6r f\u00f6ljande begr\u00e4nsningar beaktas:<\/p>\n<ol>\n<li>Pod CIDR och Service CIDR m\u00e5ste vara unika \u00f6ver alla kluster och f\u00e5r inte \u00f6verlappa varandra.<\/li>\n<li>Alla Pod CIDR m\u00e5ste vara tillg\u00e4ngliga fr\u00e5n alla Pod CIDR mellan klustren.<\/li>\n<li>Alla Kubernetes API-servrar m\u00e5ste vara tillg\u00e4ngliga f\u00f6r varandra.<\/li>\n<\/ol>\n<p>\nDetta \u00e4r grundl\u00e4ggande information som hj\u00e4lper dig att b\u00f6rja arbeta med Istio. Men det finns m\u00e5nga f\u00e4llor. Till exempel specifikationer f\u00f6r extern trafikrouting (utanf\u00f6r klustret), metoder f\u00f6r att fels\u00f6ka sidecars, profilering, konfigurering av mixer och skriva en anpassad mixer backend, samt konfigurering av tracing-mekanismen och dess arbete med hj\u00e4lp av envoy.<br \/>\nVi kommer att g\u00e5 igenom allt detta i kommande publiceringar. St\u00e4ll g\u00e4rna era fr\u00e5gor s\u00e5 ska jag f\u00f6rs\u00f6ka belysa dem.<br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/419319\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e. \u041c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c. \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 circuit breaker, \u043c\u043e\u0436\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00abcanary deployment\u00bb, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24545,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32766","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Istio, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Kubernetes \u0432 production. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:48:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:48:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Hur man startar Istio med Kubernetes i produktion. Del 1 | ProHoster","description":"Vad \u00e4r Istio? Det \u00e4r en s\u00e5 kallad Service mesh, en teknik som l\u00e4gger till en abstraheringsniv\u00e5 \u00f6ver n\u00e4tverket.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Istio, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Kubernetes \u0432 production. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:description":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:48:48+00:00","article:modified_time":"2019-10-31T18:48:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32766","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 12:27:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:53:24","updated":"2026-01-21 12:27:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/32766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=32766"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/32766\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/24545"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=32766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=32766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=32766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}