From 7ba7891716390f49de97ad41cef946d2a722c0e2 Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Fri, 20 Nov 2020 14:08:08 +0800 Subject: [PATCH] [zh] sync tasks/extend-kubernetes/setup-konnectivity.md --- .../extend-kubernetes/setup-konnectivity.md | 84 +++++++++++++++---- 1 file changed, 67 insertions(+), 17 deletions(-) diff --git a/content/zh/docs/tasks/extend-kubernetes/setup-konnectivity.md b/content/zh/docs/tasks/extend-kubernetes/setup-konnectivity.md index f34b7a4f4a..ded4526eb6 100644 --- a/content/zh/docs/tasks/extend-kubernetes/setup-konnectivity.md +++ b/content/zh/docs/tasks/extend-kubernetes/setup-konnectivity.md @@ -20,15 +20,6 @@ Konnectivity 服务为控制平面提供集群通信的 TCP 级别代理。 ## Configure the Konnectivity service The following steps require an egress configuration, for example: - -{{< codenew file="admin/konnectivity/egress-selector-configuration.yaml" >}} - -You need to configure the API Server to use the Konnectivity service -and direct the network traffic to the cluster nodes: - -1. Create an egress configuration file such as `admin/konnectivity/egress-selector-configuration.yaml`. -1. Set the `--egress-selector-config-file` flag of the API Server to the path of -your API Server egress configuration file. --> ## 配置 Konnectivity 服务 @@ -36,10 +27,64 @@ your API Server egress configuration file. {{< codenew file="admin/konnectivity/egress-selector-configuration.yaml" >}} -您需要配置 API 服务器来使用 Konnectivity 服务,并将网络流量定向到集群节点: + +你需要配置 API 服务器来使用 Konnectivity 服务,并将网络流量定向到集群节点: + +1. 确保 `ServiceAccountTokenVolumeProjection` + [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/) + 被启用。你可以通过为 kube-apiserver 提供以下标志启用 + [服务账号令牌卷保护](/zh/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume-projection): + + ``` + --service-account-issuer=api + --service-account-signing-key-file=/etc/kubernetes/pki/sa.key + --api-audiences=system:konnectivity-server + ``` + + +{{< codenew file="admin/konnectivity/egress-selector-configuration.yaml" >}} +2. 创建一个出口配置文件比如 `admin/konnectivity/egress-selector-configuration.yaml`。 +3. 将 API 服务器的 `--egress-selector-config-file` 参数设置为你的 API 服务器的 + 离站流量配置文件路径。 + + +为 konnectivity-server 生成或者取得证书和 kubeconfig 文件。 +例如,你可以使用 OpenSSL 命令行工具,基于存放在某控制面主机上 +`/etc/kubernetes/pki/ca.crt` 文件中的集群 CA 证书来 +发放一个 X.509 证书, + +```bash +openssl req -subj "/CN=system:konnectivity-server" -new -newkey rsa:2048 -nodes -out konnectivity.csr -keyout konnectivity.key -out konnectivity.csr +openssl x509 -req -in konnectivity.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out konnectivity.crt -days 375 -sha256 +SERVER=$(kubectl config view -o jsonpath='{.clusters..server}') +kubectl --kubeconfig /etc/kubernetes/konnectivity-server.conf config set-credentials system:konnectivity-server --client-certificate konnectivity.crt --client-key konnectivity.key --embed-certs=true +kubectl --kubeconfig /etc/kubernetes/konnectivity-server.conf config set-cluster kubernetes --server "$SERVER" --certificate-authority /etc/kubernetes/pki/ca.crt --embed-certs=true +kubectl --kubeconfig /etc/kubernetes/konnectivity-server.conf config set-context system:konnectivity-server@kubernetes --cluster kubernetes --user system:konnectivity-server +kubectl --kubeconfig /etc/kubernetes/konnectivity-server.conf config use-context system:konnectivity-server@kubernetes +rm -f konnectivity.crt konnectivity.key konnectivity.csr +``` -接下来,你需要部署 Konnectivity 服务器和代理。[kubernetes-sigs/apiserver-network-proxy](https://github.com/kubernetes-sigs/apiserver-network-proxy) 是参考实现。 +接下来,你需要部署 Konnectivity 服务器和代理。 +[kubernetes-sigs/apiserver-network-proxy](https://github.com/kubernetes-sigs/apiserver-network-proxy) +是一个参考实现。 -在控制平面节点上部署 Konnectivity 服务,下面提供的 `konnectivity-server.yaml` 配置清单假定您在集群中 -将 Kubernetes 组件都是部署为{{< glossary_tooltip text="静态 Pod" term_id="static-pod" >}}。如果不是,你可以将 Konnectivity 服务部署为 DaemonSet。 +在控制面节点上部署 Konnectivity 服务。 +下面提供的 `konnectivity-server.yaml` 配置清单假定在你的集群中 +Kubernetes 组件都是部署为{{< glossary_tooltip text="静态 Pod" term_id="static-pod" >}} 的。 +如果不是,你可以将 Konnectivity 服务部署为 DaemonSet。 {{< codenew file="admin/konnectivity/konnectivity-server.yaml" >}} -在您的集群中部署 Konnectivity 代理: +在你的集群中部署 Konnectivity 代理: {{< codenew file="admin/konnectivity/konnectivity-agent.yaml" >}} -最后,如果您的集群开启了 RBAC,请创建相关的 RBAC 规则: +最后,如果你的集群启用了 RBAC,请创建相关的 RBAC 规则: {{< codenew file="admin/konnectivity/konnectivity-rbac.yaml" >}} +