diff --git a/content/zh/docs/tasks/administer-cluster/access-cluster-api.md b/content/zh/docs/tasks/administer-cluster/access-cluster-api.md index 7b1c9bed98..37f80f26af 100644 --- a/content/zh/docs/tasks/administer-cluster/access-cluster-api.md +++ b/content/zh/docs/tasks/administer-cluster/access-cluster-api.md @@ -18,7 +18,6 @@ This page shows how to access clusters using the Kubernetes API. {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} - 许多[样例](https://github.com/kubernetes/examples/tree/master/) -提供了使用 kubectl 的介绍。完整文档请见 [kubectl 手册](/zh/docs/reference/kubectl/overview/)。 +提供了使用 kubectl 的介绍。完整文档请见 [kubectl 手册](/zh/docs/reference/kubectl/)。 -1. 以代理模式运行 kubectl(推荐)。 +1. 以代理模式运行 kubectl(推荐)。 推荐使用此方法,因为它用存储的 apiserver 位置并使用自签名证书验证 API 服务器的标识。 使用这种方法无法进行中间人(MITM)攻击。 2. 另外,你可以直接为 HTTP 客户端提供位置和身份认证。 @@ -160,8 +159,25 @@ export CLUSTER_NAME="some_server_name" # 指向引用该集群名称的 API 服务器 APISERVER=$(kubectl config view -o jsonpath="{.clusters[?(@.name==\"$CLUSTER_NAME\")].cluster.server}") -# 获得令牌 -TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='default')].data.token}"|base64 -d) +# 创建一个 secret 来保存默认服务账户的令牌 +kubectl apply -f - </dev/null; do + echo "waiting for token..." >&2 + sleep 1 +done + +# 获取令牌 +TOKEN=$(kubectl get secret default-token -o jsonpath='{.data.token}' | base64 --decode) # 使用令牌玩转 API curl -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure @@ -185,30 +201,6 @@ curl -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure } ``` - -使用 `jsonpath` 方式: - -```shell -APISERVER=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}') -TOKEN=$(kubectl get secret $(kubectl get serviceaccount default -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode ) -curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure -``` - -```json -{ - "kind": "APIVersions", - "versions": [ - "v1" - ], - "serverAddressByClientCIDRs": [ - { - "clientCIDR": "0.0.0.0/0", - "serverAddress": "10.0.1.149:443" - } - ] -} -``` -