kubernetes - 如何让 Kubernetes api 服务器实例通过代理连接到外部网络

标签 kubernetes azure-active-directory

目标是当 Kubernetes api 服务器位于只能通过代理访问 Internet 资源的专用网络上时,它能够连接到 Internet 上的资源。

背景:

kubernetes 集群是使用 kubespray 启动的,其中包含两个 apiserver 实例,这些实例在两个 VM 上运行并通过 list 文件进行控制。 Azure AD 用作身份验证的身份提供程序。为了使其正常工作,API 服务器需要通过连接到 Microsoft 并下载一些用于验证 Azure AD 颁发的 token 的 key 来初始化其 OIDC 组件。

由于 Kubernetes 集群在私有(private)网络上,并且需要通过代理才能到达 Internet,因此一种方法是在 kubernetes API 服务器容器环境中设置 https_proxy 和 no_proxy,方法是将其添加到 list 文件中。这种方法的问题在于,当使用 Istio 管理对 API 的访问时,每当向集群添加新服务时都需要更新 no_proxy。一种解决方案可能是为每个服务名称添加后缀,并在无代理中设置 *.suffix。但是,似乎不支持在 no_proxy 配置中使用通配符。

Kubernetes API 服务器是否有其他方法可以在不干扰其他功能的情况下访问 Microsoft?

如果需要任何其他信息或澄清,请告诉我。

最佳答案

我不确定您将如何让 Istio 管理运行 kube-apiservers 的 Kubernetes master 的导出流量,所以我不推荐它。据我了解,Istio 通常用于管理(入口/导出/lb/metrics/etc)集群中的实际工作负载,这些工作负载通常在您的节点上运行,而不是在主节点上运行。我的意思是 kube-apiserver 实际上管理 CRDs Istio 使用的。

大多数人在他们的 master 上使用 Docker,你可以使用 proxy您提到的容器的环境变量。

关于kubernetes - 如何让 Kubernetes api 服务器实例通过代理连接到外部网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52745268/

相关文章:

amazon-web-services - 为什么 Kube 服务没有将 SSL 证书附加到 AWS NLB?

azure - 无法从 AAD 获取不记名 token 来使用 Web API

azure - 创建集群后将 RBAC 添加到 Azure Kubernetes (AKS)

azure - 我需要为 Azure AD 中的用户设置 "job info",例如 "department"。 Set-AzADUser 没有这方面的参数。还有其他命令吗?

azure - 为什么需要为已受 Azure AD 保护的 Azure 服务添加 OAuth 2.0

powershell - 从 powershell 获取当前用户的 Azure Active Directory 资源访问 token ?

Azure 公钥解释了吗?

kubernetes - 如何在 kubernetes 中禁用部署

amazon-web-services - 如何让 kubectl 登录 AWS EKS 集群?

kubernetes - 为 DaemonSet 创建服务