{"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\/fr\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","title":{"rendered":"Comment d\u00e9ployer Istio en utilisant Kubernetes en production. Partie 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Qu'est-ce que <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>Vous pouvez lire sur le m\u00e9canisme de fonctionnement dans <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/concepts\/\">la documentation officielle<\/a><\/noindex>. Istio est vraiment un outil puissant qui permet de r\u00e9soudre de nombreux probl\u00e8mes et t\u00e2ches. Dans cet article, je voudrais r\u00e9pondre aux questions principales qui se posent g\u00e9n\u00e9ralement au d\u00e9but de l'utilisation d'Istio. Cela vous aidera \u00e0 vous familiariser plus rapidement avec cet outil.<\/p>\n<p><img decoding=\"async\" alt=\"Comment d\u00e9ployer Istio en utilisant Kubernetes en production. Partie 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>Principe de fonctionnement<\/h3>\n<p>\nIstio est compos\u00e9 de deux zones principales : le control plane et le data plane. Le control plane contient les principaux composants qui assurent le bon fonctionnement des autres. Dans la version actuelle (1.0), le control plane comprend trois composants principaux : Pilot, Mixer, Citadel. Nous ne traiterons pas Citadel, qui est n\u00e9cessaire pour la g\u00e9n\u00e9ration de certificats pour assurer le fonctionnement de mutual TLS entre les services. Examinons plus en d\u00e9tail la structure et la fonction de Pilot et de Mixer.<\/p>\n<p><img decoding=\"async\" alt=\"Comment d\u00e9ployer Istio en utilisant Kubernetes en production. Partie 1\" src=\"\/wp-content\/uploads\/2019\/04\/1e2b76b5ec12343dee7728e505321908.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPilot est le principal composant de gestion qui diffuse toutes les informations sur ce que nous avons dans le cluster \u2013 les services, leurs points d'acc\u00e8s et les r\u00e8gles de routage (par exemple, les r\u00e8gles pour le d\u00e9ploiement Canary ou les r\u00e8gles du circuit breaker).<\/p>\n<p>Mixer est un composant optionnel du control plane qui permet de collecter des m\u00e9triques, des journaux et toute information sur l'interaction r\u00e9seau. Il s'assure \u00e9galement du respect des r\u00e8gles de politique et des limites de taux.<\/p>\n<p>Le data plane est r\u00e9alis\u00e9 \u00e0 l'aide de conteneurs proxy sidecar. Par d\u00e9faut, un puissant <noindex><a rel=\"nofollow\" href=\"https:\/\/www.envoyproxy.io\/\">serveur proxy envoy<\/a><\/noindex>. Il peut \u00eatre remplac\u00e9 par une autre impl\u00e9mentation, comme nginx (nginmesh).<\/p>\n<p>Pour que Istio fonctionne compl\u00e8tement en transparence pour les applications, il existe un syst\u00e8me d'injection automatique. La derni\u00e8re impl\u00e9mentation convient aux versions Kubernetes 1.9+ (mutational admission webhook). Pour les versions Kubernetes 1.7, 1.8, il est possible d'utiliser Initializer.<\/p>\n<p>Les conteneurs sidecar se connectent \u00e0 Pilot via le protocole GRPC, qui permet d'optimiser le mod\u00e8le de diffusion des modifications se produisant dans le cluster. GRPC a commenc\u00e9 \u00e0 \u00eatre utilis\u00e9 dans Envoy \u00e0 partir de la version 1.6, et dans Istio, il est utilis\u00e9 depuis la version 0.8 et constitue un pilote-agent - un wrapper en golang sur envoy, qui configure les param\u00e8tres de d\u00e9marrage.<\/p>\n<p>Pilot et Mixer sont des composants enti\u00e8rement sans \u00e9tat, toute l'\u00e9tat \u00e9tant conserv\u00e9 en m\u00e9moire. La configuration pour eux est sp\u00e9cifi\u00e9e sous forme de ressources personnalis\u00e9es Kubernetes, qui sont stock\u00e9es dans etcd. <br \/>\nIstio-agent obtient l'adresse de Pilot et ouvre un flux GRPC vers lui. <\/p>\n<p>Comme je l'ai dit, Istio impl\u00e9mente toute la fonctionnalit\u00e9 de mani\u00e8re enti\u00e8rement transparente pour les applications. Voyons comment. L'algorithme est le suivant :<\/p>\n<ol>\n<li>Nous d\u00e9ployons une nouvelle version du service.<\/li>\n<li>En fonction de l'approche d'injection, le conteneur istio-init et le conteneur istio-agent (envoy) sont ajout\u00e9s au moment de l'application de la configuration, ou bien ils peuvent avoir \u00e9t\u00e9 ins\u00e9r\u00e9s manuellement dans la description de l'entit\u00e9 Pod dans Kubernetes.<\/li>\n<li>Le conteneur istio-init se pr\u00e9sente sous la forme d'un script qui applique des r\u00e8gles iptables pour le pod. Il existe deux options pour configurer l'encapsulation du trafic dans le conteneur istio-agent : utiliser des r\u00e8gles iptables de redirection, ou <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kristrev\/tproxy-example\/blob\/master\/tproxy_example.c\">TPROXY<\/a><\/noindex>. Au moment de la r\u00e9daction de cet article, l'approche par d\u00e9faut utilise des r\u00e8gles de redirection. Dans istio-init, il est possible de configurer quel trafic doit \u00eatre intercept\u00e9 et dirig\u00e9 vers istio-agent. Par exemple, pour intercepter tout le trafic entrant et sortant, il faut d\u00e9finir les param\u00e8tres <code>-i<\/code> et <code>-b<\/code> \u00e0 la valeur <code>*<\/code>. On peut sp\u00e9cifier des ports sp\u00e9cifiques \u00e0 intercepter. Pour \u00e9viter d'intercepter un certain sous-r\u00e9seau, il est possible de le sp\u00e9cifier \u00e0 l'aide du drapeau <code>-x<\/code>.<\/li>\n<li>Apr\u00e8s l'ex\u00e9cution des conteneurs init, les principaux conteneurs sont lanc\u00e9s, y compris le pilot-agent (envoy). Il se connecte au Pilot d\u00e9j\u00e0 d\u00e9ploy\u00e9 via GRPC et obtient des informations sur tous les services existants et les politiques de routage dans le cluster. Sur la base des donn\u00e9es re\u00e7ues, il configure les clusters et enregistre directement les points de terminaison de nos applications dans le cluster Kubernetes. Il est \u00e9galement important de noter un point crucial : envoy configure dynamiquement les \u00e9couteurs (paires IP, port) qu'il commence \u00e0 \u00e9couter. Par cons\u00e9quent, lorsque des requ\u00eates entrent dans le pod, elles sont redirig\u00e9es via les r\u00e8gles iptables de redirection vers le sidecar, et envoy peut d\u00e9j\u00e0 traiter ces connexions et comprendre o\u00f9 le trafic doit \u00eatre proxy. \u00c0 ce stade, des informations sont \u00e9galement envoy\u00e9es au Mixer, que nous examinerons plus tard, ainsi que l'envoi de spans de tra\u00e7age.<\/li>\n<\/ol>\n<p>\nEn fin de compte, nous obtenons un r\u00e9seau entier de serveurs proxy envoy, que nous pouvons configurer depuis un seul point (Pilot). Toutes les requ\u00eates inbound et outbound passent par envoy. De plus, seul le trafic TCP est intercept\u00e9. Cela signifie que l'IP du service Kubernetes est r\u00e9solue \u00e0 l'aide de kube-dns par UDP sans modification. Ensuite, apr\u00e8s la r\u00e9solution, l'interception de la requ\u00eate sortante a lieu et est trait\u00e9e par envoy, qui d\u00e9termine quel point de terminaison la requ\u00eate doit atteindre (ou si elle ne doit pas \u00eatre envoy\u00e9e, en cas de politiques d'acc\u00e8s ou de d\u00e9clenchement de l'algorithme de circuit breaker).<\/p>\n<p>Nous avons compris le Pilot, maintenant il faut comprendre comment fonctionne le Mixer et pourquoi il est n\u00e9cessaire. Vous pouvez lire la documentation officielle \u00e0 son sujet. <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/concepts\/policies-and-telemetry\/overview\/\">ici<\/a><\/noindex>.<\/p>\n<p>Le Mixer, dans sa forme actuelle, se compose de deux composants : istio-telemetry et istio-policy (jusqu'\u00e0 la version 0.8, il s'agissait d'un seul composant istio-mixer). Chacun d'eux repr\u00e9sente un mixer, chacun ayant son propre r\u00f4le. Istio telemetry re\u00e7oit des informations de rapport via GRPC des conteneurs sidecar sur qui va o\u00f9 et avec quels param\u00e8tres. Istio-policy re\u00e7oit des requ\u00eates de v\u00e9rification pour s'assurer que les r\u00e8gles de politique sont respect\u00e9es. Les v\u00e9rifications de politique ne sont pas effectu\u00e9es pour chaque requ\u00eate, elles sont mises en cache sur le client (dans le sidecar) pendant une certaine p\u00e9riode. Les rapports sont envoy\u00e9s par lots. Nous verrons plus tard comment configurer cela et quels param\u00e8tres doivent \u00eatre envoy\u00e9s. <\/p>\n<p>Le Mixer est con\u00e7u comme un composant hautement disponible, garantissant un fonctionnement ininterrompu pour la collecte et le traitement des donn\u00e9es de t\u00e9l\u00e9m\u00e9trie. Le syst\u00e8me devient donc un tampon multi-niveaux. Au d\u00e9part, les donn\u00e9es sont mises en cache du c\u00f4t\u00e9 des conteneurs sidecar, puis du c\u00f4t\u00e9 du mixer, avant d'\u00eatre envoy\u00e9es \u00e0 ce qu'on appelle les backend du mixer. Ainsi, si un des composants du syst\u00e8me \u00e9choue, le tampon grandit et, apr\u00e8s la restauration du syst\u00e8me, il est vid\u00e9. Les backends du mixer repr\u00e9sentent les points de terminaison pour l'envoi des donn\u00e9es de t\u00e9l\u00e9m\u00e9trie : statsd, newrelic, etc. On peut \u00e9crire son propre backend, c'est assez simple, et nous verrons comment faire cela.<\/p>\n<p><img decoding=\"async\" alt=\"Comment d\u00e9ployer Istio en utilisant Kubernetes en production. Partie 1\" src=\"\/wp-content\/uploads\/2019\/04\/e7dd11d5ee26a692e1cd213578d47700.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn r\u00e9sum\u00e9, le sch\u00e9ma de fonctionnement avec istio-telemetry est le suivant.<\/p>\n<ol>\n<li>Le service 1 envoie une requ\u00eate au service 2.<\/li>\n<li>\u00c0 la sortie du service 1, la requ\u00eate est envelopp\u00e9e dans son propre sidecar.<\/li>\n<li>Le sidecar envoy surveille le passage de la requ\u00eate au service 2 et pr\u00e9pare les informations n\u00e9cessaires.<\/li>\n<li>Il les envoie ensuite \u00e0 istio-telemetry \u00e0 l'aide d'une requ\u00eate de rapport.<\/li>\n<li>Istio-telemetry d\u00e9termine s'il faut envoyer ce rapport aux backends, lesquels pr\u00e9cis\u00e9ment et quelles donn\u00e9es doivent \u00eatre envoy\u00e9es.<\/li>\n<li>Istio-telemetry envoie les donn\u00e9es de rapport aux backends si cela est n\u00e9cessaire.<\/li>\n<\/ol>\n<p>\nVoyons maintenant comment d\u00e9ployer dans le syst\u00e8me Istio, compos\u00e9 uniquement des composants de base (Pilot et sidecar envoy).<\/p>\n<p>Pour commencer, examinons la configuration principale (mesh) que lit Pilot :<\/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    # Nous ne activons pas encore l'envoi des informations de tracing (le pilot configurera les envoy\u00e9s pour que l'envoi ne se produise pas)\n    enableTracing: false\n\n    # Nous ne sp\u00e9cifions pas encore les endpoints de mixer, pour que les conteneurs sidecar n'envoient pas d'informations l\u00e0-bas\n    #mixerCheckServer: istio-policy.istio-system:15004\n    #mixerReportServer: istio-telemetry.istio-system:15004\n\n    # D\u00e9finissons le d\u00e9lai d'intervalle avec lequel envoy interrogera Pilot (c'est pour l'ancienne version du proxy envoy)\n    rdsRefreshDelay: 5s\n\n    # Configuration par d\u00e9faut pour le sidecar envoy\n    defaultConfig:\n      # Pareil que rdsRefreshDelay\n      discoveryRefreshDelay: 5s\n\n      # Restons par d\u00e9faut (chemin vers la configuration et le binaire envoy)\n      configPath: \"\/etc\/istio\/proxy\"\n      binaryPath: \"\/usr\/local\/bin\/envoy\"\n\n      # Nom par d\u00e9faut du conteneur sidecar lanc\u00e9 (utilis\u00e9, par exemple, dans les noms de service lors de l'envoi des spans de tracing)\n      serviceCluster: istio-proxy\n\n      # Temps que va attendre envoy avant de forcer la fermeture de toutes les connexions \u00e9tablies\n      drainDuration: 45s\n      parentShutdownDuration: 1m0s\n\n      # Par d\u00e9faut, les r\u00e8gles de REDIRECT iptables sont utilis\u00e9es. Peut \u00eatre chang\u00e9 en TPROXY.\n      #interceptionMode: REDIRECT\n\n      # Port sur lequel sera lanc\u00e9e le panneau d'administration de chaque conteneur sidecar (envoy)\n      proxyAdminPort: 15000\n\n      # Adresse \u00e0 laquelle les traces seront envoy\u00e9es selon le protocole zipkin (au d\u00e9but, nous avons d\u00e9sactiv\u00e9 l'envoi lui-m\u00eame, donc ce champ ne sera actuellement pas utilis\u00e9)\n      zipkinAddress: tracing-collector.tracing:9411\n\n      # Adresse statsd pour l'envoi des m\u00e9triques des conteneurs envoy (d\u00e9sactiv\u00e9es)\n      # statsdUdpAddress: aggregator:8126\n\n      # D\u00e9sactivation de l'option de support Mutual TLS\n      controlPlaneAuthPolicy: NONE\n\n      # Adresse sur laquelle istio-pilot \u00e9coutera pour informer tous les conteneurs sidecar sur la d\u00e9couverte des services\n      discoveryAddress: istio-pilot.istio-system:15007\n<\/code><\/pre>\n<p>\nNous allons placer tous les principaux composants de contr\u00f4le (control plane) dans le namespace istio-system dans Kubernetes.<\/p>\n<p>Nous devons au minimum d\u00e9ployer seulement Pilot. Pour cela, nous allons utiliser <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/istio\/istio\/blob\/release-1.0\/install\/kubernetes\/helm\/istio\/charts\/pilot\/templates\/deployment.yaml\">cette configuration.<\/a><\/noindex><\/p>\n<p>Et nous allons configurer manuellement l'injection du conteneur sidecar.<\/p>\n<p>Conteneur d'initialisation :<\/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>\nEt sidecar :<\/p>\n<pre><code class=\"plaintext\">       nom : 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           nom-du-service \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           AUCUN\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>\nPour que tout fonctionne correctement, il est n\u00e9cessaire de cr\u00e9er un ServiceAccount, un ClusterRole, un ClusterRoleBinding, ainsi qu'un CRD pour Pilot, dont les descriptions peuvent \u00eatre trouv\u00e9es. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/istio\/istio\/tree\/release-1.0\/install\/kubernetes\/helm\/istio\/charts\/pilot\/templates\">ici<\/a><\/noindex>. <\/p>\n<p>En fin de compte, le service dans lequel nous injectons le sidecar avec envoy doit d\u00e9marrer correctement, recevoir toute la d\u00e9couverte de Pilot et traiter les requ\u00eates.<\/p>\n<p>Il est important de comprendre que tous les composants du control plane sont des applications sans \u00e9tat et peuvent \u00eatre facilement \u00e9volutifs horizontalement. Toutes les donn\u00e9es sont stock\u00e9es dans etcd sous forme de descriptions de ressources personnalis\u00e9es Kubernetes.<\/p>\n<p>Istio propose \u00e9galement (pour l'instant de mani\u00e8re exp\u00e9rimentale) la possibilit\u00e9 de fonctionner en dehors du cluster et d'observer et partager la d\u00e9couverte de services entre plusieurs clusters Kubernetes. Vous pouvez en savoir plus \u00e0 ce sujet. <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/multicluster-install\/\">ici<\/a><\/noindex>.<\/p>\n<p>Lors d'une installation multicluster, il convient de prendre en compte les limitations suivantes :<\/p>\n<ol>\n<li>Les Pod CIDR et Service CIDR doivent \u00eatre uniques \u00e0 travers tous les clusters et ne doivent pas se chevaucher.<\/li>\n<li>Tous les Pod CIDR doivent \u00eatre accessibles depuis n'importe quel Pod CIDR entre les clusters.<\/li>\n<li>Tous les serveurs API Kubernetes doivent \u00eatre accessibles les uns aux autres.<\/li>\n<\/ol>\n<p>\nCe sont des informations initiales qui vous aideront \u00e0 commencer \u00e0 travailler avec Istio. Cependant, il existe encore de nombreuses subtilit\u00e9s. Par exemple, les particularit\u00e9s du routage du trafic externe (en dehors du cluster), les m\u00e9thodes de d\u00e9bogage des sidecars, le profilage, la configuration de mixer et l'\u00e9criture d'un backend de mixer personnalis\u00e9, la configuration du m\u00e9canisme de tra\u00e7age et son fonctionnement avec envoy.<br \/>\nNous examinerons tout cela dans nos prochaines publications. N'h\u00e9sitez pas \u00e0 poser vos questions, j'essaierai d'y r\u00e9pondre.<br \/>\n<br \/>Source : <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.2 - 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\/fr\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Comment d\u00e9ployer Istio en utilisant Kubernetes en production. Partie 1 | ProHoster","description":"Qu'est-ce qu'Istio ? C'est un Service mesh, une technologie qui ajoute un niveau d'abstraction au-dessus du r\u00e9seau.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/32766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=32766"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/32766\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/24545"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=32766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=32766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=32766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}