delete blank lines
This commit is contained in:
@@ -7,36 +7,22 @@ assignees:
|
|||||||
title: Webhook Mode
|
title: Webhook Mode
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% capture overview %}
|
{% capture overview %}
|
||||||
WebHook 是一个 HTTP 回调:当某些事情发生时的一个 HTTP POST 请求;通过 HTTP POST 发送的一个简单事件通知。一个继续 web 应用实现的 WebHook 会在特定事件发生时把消息发送给特定的 URL 。
|
WebHook 是一个 HTTP 回调:当某些事情发生时的一个 HTTP POST 请求;通过 HTTP POST 发送的一个简单事件通知。一个继续 web 应用实现的 WebHook 会在特定事件发生时把消息发送给特定的 URL 。
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% capture body %}
|
{% capture body %}
|
||||||
具体来说,当在判断用户权限时,`Webhook` 模式会使 Kubernetes 查询外部的 REST 服务。
|
具体来说,当在判断用户权限时,`Webhook` 模式会使 Kubernetes 查询外部的 REST 服务。
|
||||||
|
|
||||||
|
|
||||||
## 配置文件格式
|
## 配置文件格式
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`Webhook` 模式需要一个 HTTP 配置文件,通过 `--authorization-webhook-config-file=SOME_FILENAME` 的参数声明。
|
`Webhook` 模式需要一个 HTTP 配置文件,通过 `--authorization-webhook-config-file=SOME_FILENAME` 的参数声明。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
配置文件的格式使用 [kubeconfig](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)。
|
配置文件的格式使用 [kubeconfig](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)。
|
||||||
在文件中,"users" 代表着 API 服务器的 webhook,而 "cluster" 代表着远程服务。
|
在文件中,"users" 代表着 API 服务器的 webhook,而 "cluster" 代表着远程服务。
|
||||||
|
|
||||||
|
|
||||||
使用 HTTPS 客户端认证的配置例子:
|
使用 HTTPS 客户端认证的配置例子:
|
||||||
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# clusters 代表远程服务。
|
# clusters 代表远程服务。
|
||||||
clusters:
|
clusters:
|
||||||
@@ -64,18 +50,7 @@ contexts:
|
|||||||
|
|
||||||
## 请求载荷
|
## 请求载荷
|
||||||
|
|
||||||
|
在做认证决策时,API 服务器会 POST 一个 JSON 序列化的 api.authorization.v1beta1.SubjectAccessReview 对象来描述这个动作。这个对象包含了描述用户请求的字段,同时也包含了需要被访问资源或者请求特征的具体信息。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
在做认证决策时,API 服务器会 POST 一个 JSON 序列化的 api.authorization.v1beta1.SubjectAccessReview
|
|
||||||
对象来描述这个动作。这个对象包含了描述用户请求的字段,同时也包含了需要被访问资源或者请求特征的具体信息。
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
需要注意的是 webhook API 对象对于 [versioning compatibility rules](/docs/api/) 和其他 Kuberntes API 来说是同一个主题。
|
需要注意的是 webhook API 对象对于 [versioning compatibility rules](/docs/api/) 和其他 Kuberntes API 来说是同一个主题。
|
||||||
实施人员应该了解 beta 对象的松耦合承诺,同时确认请求的 "apiVersion" 字段以确保能被正确地反序列化。
|
实施人员应该了解 beta 对象的松耦合承诺,同时确认请求的 "apiVersion" 字段以确保能被正确地反序列化。
|
||||||
@@ -104,9 +79,6 @@ contexts:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
远程服务被预期能填写请求和反馈的 SubjectAccessReviewStatus 字段,无论是允许访问还是拒绝访问。
|
远程服务被预期能填写请求和反馈的 SubjectAccessReviewStatus 字段,无论是允许访问还是拒绝访问。
|
||||||
反馈内容的 "spec" 字段是被忽略的,也是可以被省略的。一个允许的反馈的返回值会是:
|
反馈内容的 "spec" 字段是被忽略的,也是可以被省略的。一个允许的反馈的返回值会是:
|
||||||
|
|
||||||
@@ -156,18 +128,12 @@ contexts:
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
非资源类的路径包括:`/api`, `/apis`, `/metrics`, `/resetMetrics`,
|
非资源类的路径包括:`/api`, `/apis`, `/metrics`, `/resetMetrics`,
|
||||||
`/logs`, `/debug`, `/healthz`, `/swagger-ui/`, `/swaggerapi/`, `/ui`, and
|
`/logs`, `/debug`, `/healthz`, `/swagger-ui/`, `/swaggerapi/`, `/ui`, and
|
||||||
`/version`。 客户端需要访问 `/api`, `/api/*`, `/apis`, `/apis/*`, 和 `/version` 以便
|
`/version`。 客户端需要访问 `/api`, `/api/*`, `/apis`, `/apis/*`, 和 `/version` 以便
|
||||||
能发现服务器上有什么资源和版本。对于其他非资源类的路径访问在没有 REST api 访问限制的情况下拒绝。
|
能发现服务器上有什么资源和版本。对于其他非资源类的路径访问在没有 REST api 访问限制的情况下拒绝。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
更多信息可以参考 uthorization.v1beta1 API 对象和
|
更多信息可以参考 uthorization.v1beta1 API 对象和
|
||||||
[webhook.go](https://git.k8s.io/kubernetes/staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go).
|
[webhook.go](https://git.k8s.io/kubernetes/staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user