• 动态准入 Webhook 概述
    • 验证动态准入 Webhook 前置条件

    动态准入 Webhook 概述

    来自 Kubernetes 准入控制机制:

    准入 Webhook 是 HTTP 方式的回调,接收准入请求并对其进行相关操作。可定义两种类型的准入 Webhook,Validating 准入 Webhook 和 Mutating 准入 Webhook。 使用 Validating Webhook,可以通过自定义的准入策略来拒绝请求;使用 Mutating Webhook,可以通过自定义默认值来修改请求。

    Istio 使用 ValidatingAdmissionWebhooks 验证 Istio 配置,使用 MutatingAdmissionWebhooks 自动将 Sidecar 代理注入至用户 Pod。

    Webhook 设置过程需要了解 Kubernetes 动态准入 Webhook 相关的知识。有关 Validating 和 Mutating Webhook 配置的详细文档,请参考 Kubernetes API。

    验证动态准入 Webhook 前置条件

    请参阅 Kubernetes 快速入门中的前置条件章节。如果群集配置错误,Webhook 将无法正常工作。如集群配置后,动态 Webhook 和依赖的相关功能无法正常工作,可以通过以下步骤进行检查。

    • 验证 kubectl 是否是最新版本(>= 1.10),并且 Kubernetes 服务器版本 >= 1.9。
    1. $ kubectl version --short
    2. Client Version: v1.10.2
    3. Server Version: v1.10.4-gke.0
    • admissionregistration.k8s.io/v1beta1 应是启用状态
    1. $ kubectl api-versions | grep admissionregistration.k8s.io/v1beta1
    2. admissionregistration.k8s.io/v1beta1
    • 验证 MutatingAdmissionWebhookValidatingAdmissionWebhookkube-apiserver —enable-admission-plugins 配置中是否被启用。通过特定提供者提供的步骤来检查此标志。

    • 验证 Kubernetes api-server 与 Webhook 所在 Pod 的网络连通是否正常。例如不正确的 http_proxy 设置可能会使 api-server 操作无法正常完成(有关详细信息,请参阅这里和这里的相关问题)。