gpt4 book ai didi

python - 如何在 Kubernetes Python 客户端中指定 ca_bundle

转载 作者:行者123 更新时间:2023-11-28 19:04:43 25 4
gpt4 key购买 nike

我正在尝试使用 Kubernetes Python client连接到我的 Kubernetes 集群。 API 在我的 CA 签名的 SSL 证书后面。如果我尝试访问任何 API,我会收到有关证书验证失败的 SSL 错误。

我找到了一个 v1beta1_api_service_spec.py具有用于 ca_bundle 的参数来验证证书的库,但是 core_v1_api.pyapi_client.py没有 ca_bundle 的参数选项。

如何传递 CA 证书以便我可以通过 HTTPS 访问 API?

** 解决方案 **

根据 Matthew 的指示,我找到了问题所在。最初,我使用 Kubernetes 配置模块从 ~/.kube/config 文件加载配置。

from kubernetes import client, config
config.load_kube_config()

这在我测试的客户端上不起作用,但 kubectl 在我的 PC 上运行,所以我检查了一下,发现 .kube/config 文件没有指定 CA 证书。我将其添加进去,然后它就起作用了。

apiVersion: v1
clusters:
- cluster:
api-version: v1
certificate-authority: /path/to/ca_chain.crt
server: "https://my-kubernetes-cluster"
...

如果您不想在主机上创建 .kube/config 文件,我还能够弄清楚如何手动构建配置。

from kubernetes import client
from kubernetes.client import Configuration, ApiClient
config = Configuration()
config.api_key = {'authorization': 'Bearer <api_key>'}
config.host = 'https://my-kubernetes-cluster'
config.ssl_ca_cert = "/path/to/ca_chain.crt"

api_client = ApiClient(configuration=config)
v1 = client.CoreV1Api(api_client)

v1.list_pod_for_all_namespaces(watch=False)

最佳答案

似乎有两个答案:

  1. > the comment in RESTClientObject说他们正在使用 urllib3 and have a pointer to its documentation ,这意味着您显然可以在主机操作系统级别进行此类更改
  2. RESTClientObject accepts kwargs与 SSL 管理相关,包括关闭 SSL 验证的能力,如果您感兴趣的话。提到的 configuration 变量被传递 directly from the ApiClient.__init__

关于python - 如何在 Kubernetes Python 客户端中指定 ca_bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48351308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com