Below you will find pages that utilize the taxonomy term “istio”
September 5, 2023
istio 中 sidecar 注入实现原理
"在 istio 中为了对流量进行有效的管理,一般通过注入的方式将代理 istio-proxy 与应用程序一起位于同一个Pod,然后通过 istio-init initContainer修改 iptables 实现 ingress 或 egress,那么在 istio 中这个注入是如何实现的呢,本节对其实现原理进行一些分析。\n实现原理 在上一节《apiserver 中的webhook开发教程》 我们介绍过admission controller 基本实现原理,由此得知当创建一个资源对象的时候,可以通过定义 ValidatingWebhookConfiguration 或 MutatingWebhookConfiguration 实现在创建的进程中对这些 webhook 进行调用。而 MutatingWebhookConfiguration 则可以对请求的资源进行修改。在istio中的 injection 正是基于此原理实现的。\nwebhook配置 当我们在k8s集群中安装 istio 后,会创建一些资源,如 deployment、service、crd 等\n$ istioctl …"
April 25, 2023
istio之pilot-agent 源码分析
"源码版本:istio-v1.11.3\n为了方便理解,本文会介绍到 vm 和 容器 两种部署形式的情况,一般会在讲解时提到,因此需要注意当前的部署方式,不过他们的架构是完全一样的。\n架构 pilot 共分两个主要模块,一个是 pilot-agent 用来提供 pod 中的服务发现 客户端,另一个是 polot-discovery 提供服务发现 服务端。\n其中 envoy 和 Istio Agent 就是我们上面所讲的 pilot-agent 模块,其为 数据面 组件,而 Istiod 则为 控制面,模块对应源码见\npilot-agent 对于 polot-agent 它运行在每个pod中 ,并以 sidecar 方式与应用容器运行在同一个pod。如果你使用的是 vm 的话,则可以在当前主机通过 pstree 命令看到进程视图\n# pstree -pu 24530 su(24530)───pilot-agent(24611,istio-proxy)─┬─envoy(24619)─┬─{envoy}(24620) │ ├─{envoy}(24621) │ ├─{envoy}(24622) │ …"
September 13, 2021
istio在虚拟机vm下的安装方法
"建议参考官方文档 https://istio.io/latest/zh/docs/setup/install/virtual-machine/ ,这里提醒大家对于命令中文版部分命令与英文版不一致,请以 英文版 为准。\n对于istio在vm上的安装教程主要分为三部分。首先是在k8s的master节点生成vm连接主节点的一些配置信息,其实是在vm上应用这些配置信息,最后也就是验证连接是否成功。\n本篇主要介绍“单网络”的情况, 对于”多网络“请自行参考官方文档。\nvm环境准备 生成vm通讯配置信息 这里主要介绍一些新手迷惑的部分。如环境变量设置及vm注册的方式\n设置环境变量 在设置变量时,对于”单网络“来讲 CLUSTER_NETWORK 和 VM_NETWORK 保留空值即可。如我这里设置如下\n$ VM_APP=\u0026#34;myapp\u0026#34; $ VM_NAMESPACE=\u0026#34;vm\u0026#34; $ WORK_DIR=\u0026#34;/root/myapp\u0026#34; $ SERVICE_ACCOUNT=\u0026#34;vm-sa\u0026#34; $ CLUSTER_NETWORK=\u0026#34;\u0026#34; $ …"
August 7, 2021
服务网格Istio之服务入口 ServiceEntry
"使用服务入口(Service Entry) 来添加一个服务入口到 Istio 内部维护的服务注册中心。添加了服务入口后,Envoy 代理可以向服务发送流量,就好像它是网格内部的服务一样,可参考 https://istio.io/latest/zh/docs/concepts/traffic-management/#service-entries。\n简单的理解就是允许内网向外网服务发送流量请求,但你可能会说正常情况下在pod里也是可以访问外网的,这两者有什么区别呢?\n确实默认情况下,Istio 配置 Envoy 代理可以将请求传递给外部服务。但是无法使用 Istio 的特性来控制没有在网格中注册的目标流量。这也正是 ServiceEntry 真正发挥的作用,通过配置服务入口允许您管理运行在网格外的服务的流量。\n此外,可以配置虚拟服务和目标规则,以更精细的方式控制到服务条目的流量,就像为网格中的其他任何服务配置流量一样。\n为了更好的理解这一块的内容,我们先看一下普通POD发送请求的流程图普通 Pod 请求\n创建 ServiceEntry 资源 举例来说:\nsvc-entry.yaml …"