栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Istio如何实现自动注入?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Istio如何实现自动注入?

当命名空间激活istio注入功能时,比如部署一个deployment,会发现业务容器旁多了一个sidecar容器。

istio是如何实现这一点的呢?使用的是Admission Controllers中的两个特殊的控制器:MutatingAdmissionWebhook 和ValidatingAdmissionWebhook

AdmissionController 会在客户端请求经过认证授权验证后,在对象持久化到etcd之前拦截请求。

参考:https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers

时序图

    kubectl 注册一个ValidatingWebhookConfiguration/MutatingWebhookConfiguration对象, 对象包含触发webhook调用的条件,webhook server地址 etc。
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: "pod-policy.example.com"
webhooks:
- name: "pod-policy.example.com"
  # 触发webhook的条件
  rules:
  - apiGroups:   [""]
    apiVersions: ["v1"]
    operations:  ["CREATE"]
    resources:   ["pods"]
    scope:       "Namespaced"
  clientConfig:
    # webhook server的服务地址
    service:
      namespace: "example-namespace"
      name: "example-service"
    caBundle: "Ci0tLS0tQk...<`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.>...tLS0K"
  admissionReviewVersions: ["v1", "v1beta1"]
  sideEffects: None
  timeoutSeconds: 5

    当用户使用kubectl apply 注册了感兴趣的资源,此处为新的Deployment。API Server就会触发webhook调用。

    API Server首先会调用所有的mutating admission webhook, 用于设置资源对象的默认值。
    然后调用所有的validating admission webhook,用于验证资源对象的合法性。

    经过webhook验证的资源对象,最后持久化到etcd中。

调用webhook

第三步的具体流程是:

APIServer发起一个POST HTTP请求,请求体中包含AdmissionReview对象。AdmissionReview包含了更改Resource的信息,
Webhook Server返回一个AdmissionReview对象,作为Response。

触发mutating admission webhook 调用时,可以实现sidecar注入逻辑。只需要webhook server实现处理AdmissionReview的信息,添加sidecar容器信息即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号