【问题标题】:Accessing the Kubernetes REST end points using bearer token使用不记名令牌访问 Kubernetes REST 端点
【发布时间】:2019-10-06 10:57:34
【问题描述】:

要求:我们需要从我们的 java 代码中访问 Kubernetes REST 端点。我们使用 REST 端点的基本操作是创建/更新/删除/获取部署。

我们已经下载了 kubectl 并在我们的 Linux 机器上配置了集群的 kubeconfig 文件。 我们可以使用 kubectl 在该集群中执行操作。我们获得了运行命令“kubectl get pods -v=8”的集群的不记名令牌。我们在 REST 端点中使用此不记名令牌来执行我们所需的操作。

问题:

  1. 获取不记名令牌的更好方法是什么?
  2. 不记名令牌会在集群的生命周期内发生变化吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    问:获取不记名令牌的更好方法是什么?

    A:由于您已经配置了对集群的访问权限,您可以使用

    kubectl describe secrets
    

    问:不记名令牌会在集群的生命周期内发生变化吗?

    A:静态令牌不会过期。

    请参阅Accessing Clusters 和Authenticating 了解更多详情。

    【讨论】:

      【解决方案2】:

      按照这个简单的方法

      kubectl proxy --port=8080 &
      
      curl http://localhost:8080/api/
      
      

      从java代码使用下面的方法

      # Check all possible clusters, as you .KUBECONFIG may have multiple contexts:
      kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
      
      # Select name of cluster you want to interact with from above output:
      export CLUSTER_NAME="some_server_name"
      
      # Point to the API server refering the cluster name
      APISERVER=$(kubectl config view -o jsonpath="{.clusters[?(@.name==\"$CLUSTER_NAME\")].cluster.server}")
      
      # Gets the token value
      TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='default')].data.token}"|base64 -d)
      
      # Explore the API with TOKEN
      curl -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
      

      【讨论】:

        【解决方案3】:

        如果您的令牌来自 ServiceAccount,最好的方法应该是将此服务帐户添加到您的 java 运行的部署/statefull 或 daemonSet。这将导致令牌写入您的 pod 中的“/var/run/secrets” /kubernetes.io/serviceaccount/token”。配置解释here

        大多数 kubernetes 客户端库都知道如何发现链接到正在运行的上下文的服务帐户并“自动”使用它。不是专家,Java 客户端似乎是的,请参阅:github

        除非有人强制滚动,否则 kubernetes 不会自动刷新此令牌。

        【讨论】:

          猜你喜欢
          • 2021-04-14
          • 2021-11-10
          • 1970-01-01
          • 2017-10-11
          • 2023-02-02
          • 2020-10-15
          • 2017-04-12
          • 2018-05-06
          • 1970-01-01
          相关资源
          最近更新 更多