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

2024-01-04

我正在尝试使用Kubernetes Python 客户端 https://github.com/kubernetes-client/python连接到我的 Kubernetes 集群。该 API 位于我的 CA 签署的 SSL 证书后面。如果我尝试访问任何 API,则会收到有关证书验证失败的 SSL 错误。

我找到了一个v1beta1_api_service_spec.py https://github.com/kubernetes-client/python/blob/master/kubernetes/client/models/v1beta1_api_service_spec.py有一个 ca_bundle 参数来验证证书的库,但是core_v1_api.py https://github.com/kubernetes-client/python/blob/master/kubernetes/client/apis/core_v1_api.py and api_client.py https://github.com/kubernetes-client/python/blob/master/kubernetes/client/api_client.pyca_bundle 没有参数选项。

如何通过 CA 证书以便通过 HTTPS 访问 API?

** 解决方案 **

根据马修的指点,我能够找出问题所在。最初,我使用 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. RESTClient 对象中的注释 https://github.com/kubernetes-client/python/blob/v4.0.0/kubernetes/client/rest.py#L64说他们正在使用urllib3 并有一个指向其文档的指针 https://urllib3.readthedocs.io/en/latest/advanced-usage.html#custom-ssl-certificates-and-client-certificates,这意味着您显然可以在主机操作系统级别进行这样的更改
  2. RESTClientObject 接受 kwargs https://github.com/kubernetes-client/python/blob/v4.0.0/kubernetes/client/rest.py#L73-L77与 SSL 管理相关,包括关闭 SSL 验证的功能(如果您感兴趣)。这configuration提到的变量已传递直接来自 ApiClient.__init__ https://github.com/kubernetes-client/python/blob/v4.0.0/kubernetes/client/api_client.py#L62
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Kubernetes Python 客户端中指定 ca_bundle 的相关文章

  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • GUI 测试工具 PyUseCase 与 Dogtail 相比如何?

    GUI测试工具如何Py用例 http pypi python org pypi PyUseCase重命名为故事文本 http pypi python org pypi StoryText 相比于Dogtail http en wikiped
  • 使用 Android WebViewClient 启用特定 SSL 协议

    我的应用程序使用WebViewClient与服务器建立 SSL 连接 服务器配置为仅接受 TLSv1 1 及以上协议 使用 Android 时 如何检查哪些 SSL 协议是 a 支持的和 b 默认启用的WebViewClient在设备上 如
  • 如何替换Python字符串中的正确字母

    任务是 您的任务是纠正数字化文本中的错误 您只需处理以下错误 S 被误解为 5 O 被误解为 0 I 被误解为 1 我的代码 def correct string for i in string if 5 in string string
  • 将 Kubernetes 抓取目标添加到不在 Kubernetes 中的 Prometheus 实例

    I run 普罗米修斯 https prometheus io 本地为 http localhost 9090 targets docker run name prometheus d p 127 0 0 1 9090 9090 prom
  • Python 内置对象的 __enter__() 和 __exit__() 在哪里定义?

    我读到每次使用 with 时都会调用该对象的 enter 和 exit 方法 我知道对于用户定义的对象 您可以自己定义这些方法 但我不明白这对于 打开 等内置对象 函数甚至测试用例是如何工作的 这段代码按预期工作 我假设它使用 exit 关
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 列表推导式和 for 循环中的 Lambda 表达式[重复]

    这个问题在这里已经有答案了 我想要一个 lambda 列表 作为一些繁重计算的缓存 并注意到这一点 gt gt gt j for j in lambda i for i in range 10 9 9 9 9 9 9 9 9 9 9 Alt
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • 使用 ElementTree 在 python 中解析 xml

    我对 python 很陌生 我需要解析一些脏的 xml 文件 这些文件需要先清理 我有以下 python 代码 import arff import xml etree ElementTree import re totstring wit
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • tf.print() vs Python print vs tensor.eval()

    看来在Tensorflow中 至少有三种方法可以打印出张量的值 我一直在读here https www freecodecamp org news debugging tensorflow a starter e6668ce72617 an
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • SQLAlchemy 与 count、group_by 和 order_by 使用 ORM

    我有几个函数需要使用 count group by 和 order by 进行一对多连接 我使用 sqlalchemy select 函数生成一个查询 该查询将返回一组 id 然后我对其进行迭代以对各个记录执行 ORM 选择 我想知道是否有
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip
  • 从 Django 运行 shell 命令

    我正在 Django 中开发一个网页 使用 apache 服务器 需要调用 shell 命令来启用 禁用一些守护进程 我尝试这样做 os system service httpd restart 1 gt HOME out 2 gt HOM
  • Tkinter 将鼠标点击绑定到框架

    我一定错过了一些明显的东西 我的 Tkinter 程序中有两个框架 每个框架在网格布局中都有一堆标签 我想将鼠标点击绑定到其中一个而不是另一个 我目前使用 root bind

随机推荐

  • 使用 TeamCity 和 Fakes Framework 进行构建和测试

    我们正在运行 TeamCity 8 1 4 构建服务器 计算机上安装了 VS2013 我最近介绍了依赖于 Microsoft Fakes Framework 的测试 因此 我必须添加一些对新 Fake 程序集和Microsoft Visua
  • SQLiteException:未知错误(代码0):本机无法创建新字节[]

    当尝试查询最多 30 个对象时 我收到此错误 每个对象都有字段字节 其权重为 100x100 ARGB 8888 位图数据 39kb 我使用的是 OrmLite 4 45 版本 在 Samsung GT n8000 平板电脑上 最大堆大小
  • 如何检测用户何时按下 Android 设备上的“菜单”键?

    我知道我可以覆盖onBackPressed 在更高的 API 级别上检测是否按下了后退键 对于菜单按钮有类似的方法吗 我不太喜欢在 KeyEvents 中检查键码 谢谢 您在寻找这个吗 public boolean onKeyDown in
  • R函数返回值以及警告消息

    我调用了其他库函数 它执行计算并抛出警告消息 我尝试使用 tryCatch 捕获消息 但不知道如何保留计算值和警告消息 这是示例 简化 代码 我希望 mydiv 函数同时具有计算值和警告消息 现在 mydiv 调用将返回除法值或警告 但不会
  • 如何在 Alamofire 中使用 PUT 请求

    我是 swift 的新手 我也尝试使用 Alamofire 从 API 调用数据 我对如何使用它感到很困惑放置请求更新数据 我已经在这里阅读了一些解决方案 但我不知道如何在我的应用程序上应用 我正在创建一个事件应用程序 场景应该是 当参与者
  • 模块“AppModule”导入了意外值“MyCustomModule”

    我正在尝试将我的 angular2 自定义库之一迁移到 RC 6 Webpack 我的目录结构是 src source TS files lib transpiled JS files definition files dev develo
  • 使用 gcc 使用 gets 函数编译我的程序[重复]

    这个问题在这里已经有答案了 每当我尝试这样做时 我都会得到 警告 gets 函数很危险 不应使用 现在 我知道为什么这个功能很糟糕了 但是为了编译我已经编写的程序 我必须使用这个函数 我应该怎么做才能不出现此警告 或具有完全相同属性的函数
  • 以编程方式查找应用程序的 URL

    我需要从我自己的应用程序中启动另一个应用程序 但我没有它的 URL 所以我的问题是 有没有办法根据另一个应用程序的包标识符或 trackid 以编程方式查找其 url 如果你只想启动其他应用程序 你可以使用ios私有api interfac
  • ORA-02303: 无法删除或替换具有类型或表相关项的类型

    我是甲骨文新手 我尝试改变varchar 50 to 250 CREATE OR REPLACE TYPE CEQ OWNER TYPE REC PARAE2 AS OBJECT BONETAT DESC VARCHAR2 250 我收到
  • Android recyclerview v.23.2.0 和设计库 v.23.2.0 已损坏

    更新到 v23 2 0 后 recyclerview 项目有奇怪的行为 非常大 但空间空白 更新到设计库 23 2 0 后 菜单溢出图标变成黑色 应用程序有黑色操作栏 UPDATE在我的 Nexus 5 上 溢出图标和回收器视图行已修复 但
  • 在 jinja for 循环中调用 JavaScript 函数[重复]

    这个问题在这里已经有答案了 我有一个 HTML 页面 在变量中schedule具有以秒为单位的连续十进制数 我的目的是创建一个函数 使用 JavaScript jQuery 及时转换所有这些数字 但我无法理解 如何调用我的函数来转换所有项目
  • WPF 中的命令链接

    有人可以告诉我如何在 WPF 窗口中添加 CommandLink 控件吗 这就是我所说的 CommandLink 的意思 http msdn microsoft com en us library aa511455 aspx http ms
  • CouchDB 组级别和键范围

    谁能向我解释为什么以下不起作用 假设以下文档结构 id 520fb089a6cb538b1843cdf3cca39a15 rev 2 f96c27d19bf6cb10268d6d1c34799931 type nosql location
  • 为什么 Meltdown 和 Spectre 错误这么长时间都没有被发现?

    为什么 Meltdown 和 Spectre 错误这么长时间都没有被发现 近 20 年来 这些错误一直存在于 CPU 中 考虑到对所有使用这些处理器的计算机的严重影响 为什么不尽早发现呢 答案非常简单 现代 CPU 拥有数十亿个晶体管 例如
  • 如何在android中使用rawQuery()

    我有一个这样的sql查询 String loadFav SELECT id title name favorite FROM table1 where favorite 1 UNION ALL SELECT id title name fa
  • 如何在AWS SES html模板中添加添加if条件?

    要求是根据从 api 接收到的正文数据发送模板邮件 BodyData 可能不包含某些标签 请参阅下面的示例模板部分 p sender has invited you to join team teamName p 因此正文数据可能不包含团队
  • 在持续时间参数(# 行、秒、#Tweets 等)后停止 Tweepy 流

    我正在使用 Tweepy 捕获基于主题标签 WorldCup 的流式推文 如下面的代码所示 它按预期工作 class StdOutListener StreamListener Handles data received from the
  • 使用 boost.python 时 C++ 流有什么问题?

    更新 2 我不知道为什么这个仍然被投票 2014 年 3 月 自从我多年前问过这个问题以来 这个问题似乎已经解决了 确保您使用的是最新版本的 boost 更新 也许 C 流需要初始化才能格式化数字 而在 Python 中加载共享库时初始化没
  • 索引/匹配 - 如果第一个值为空,则查找第二个值

    我希望在用 Excel 编写公式时得到一些帮助 我有一个表 其中包含员工列表及其手机号码 但是 该表的结构方式存在许多空白行和重复行 本质上 我希望通过对相应的手机号码执行查找来创建一个没有任何重复项和空白的新表 问题是 当我执行标准索引
  • 如何在 Kubernetes Python 客户端中指定 ca_bundle

    我正在尝试使用Kubernetes Python 客户端 https github com kubernetes client python连接到我的 Kubernetes 集群 该 API 位于我的 CA 签署的 SSL 证书后面 如果我