作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Kubernetes Python client连接到我的 Kubernetes 集群。 API 在我的 CA 签名的 SSL 证书后面。如果我尝试访问任何 API,我会收到有关证书验证失败的 SSL 错误。
我找到了一个 v1beta1_api_service_spec.py具有用于 ca_bundle 的参数来验证证书的库,但是 core_v1_api.py和 api_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)
最佳答案
似乎有两个答案:
urllib3
and have a pointer to its documentation ,这意味着您显然可以在主机操作系统级别进行此类更改RESTClientObject
accepts kwargs与 SSL 管理相关,包括关闭 SSL 验证的能力,如果您感兴趣的话。提到的 configuration
变量被传递 directly from the ApiClient.__init__ 关于python - 如何在 Kubernetes Python 客户端中指定 ca_bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48351308/
我正在尝试使用 Kubernetes Python client连接到我的 Kubernetes 集群。 API 在我的 CA 签名的 SSL 证书后面。如果我尝试访问任何 API,我会收到有关证书验
我是一名优秀的程序员,十分优秀!