Skip to main content

Kubernetes 验证

Kubernetes 中的身份验证过程依赖于KubernetesAuthProviders-- 默认提供程序定义在plugins/kubernetes-react/src/kubernetes-auth-provider/KubernetesAuthProviders.ts如果需要,您可以在这里添加自定义提供商。

对这些提供商进行配置后,您的 Kubernetes 插件就能定位并访问您可以访问的集群,其中一些提供商对相关第三方有特殊要求,如 Microsoft Entra ID(前身为 Azure Active Directory)订阅或在集群上激活 Azure RBAC 支持。

目前可提供的供应商概述如下:

服务器端提供商

这些提供商会验证您的应用这意味着任何登录到你的 Backstage 应用程序的人,包括访客用户,都将被授予对 Kubernetes 对象的相同访问权限。

服务器端提供商有

  • aws * azure * googleServiceAccount * localKubectlProxy * `serviceAccount

AWS

对于 AWS,除了 Kubernetes 配置外,您还必须设置 AWS 身份验证。 AWS 服务器端身份验证提供商使用AWS 身份和访问管理 (IAM)来验证目标账户的身份;您可以在集成 AWS 节点.

使用该插件,您可以使用以下两种方式之一对多个 AWS 账户进行身份验证静态 AWS 访问密钥或由担任职务无论哪种情况,您都需要安装AWS CLI 实用程序并按照链接文档中的步骤进行设置。

如果已生成静态 AWS 安全证书,则 AWS 的配置块将如下所示:

aws:
mainAccount:
accounts:
- accountId: '<account-number>'
accessKeyId: ${AWS_ACCESS_KEY_ID}
secretAccessKey: ${AWS_SECRET_ACCESS_KEY}
region: <region>
accountDefaults:

如果您的环境被设置为承担一个角色,那么配置将如下所示:

aws:
mainAccount:
roleName: <name-of-the-role-to-assume>
region: <region>
accounts:
accountDefaults:

这两个部分中的任何一个都必须存在,这样 Kubernetes 配置才能使用aws``authProviderKubernetes 配置如下:

kubernetes:
serviceLocatorMethod:
type: 'multiTenant'
clusterLocatorMethods:
- type: 'config'
clusters:
- url: https://<unique-identifier>.<region>.eks.amazonaws.com
name: ${CLUSTER_NAME_TO_DISPLAY}
authProvider: 'aws'
caData: ${EKS_CA_DATA}
authMetadata:
kubernetes.io/aws-assume-role: ${ROLE_ARN_TO_ASSUME}
kubernetes.io/aws-external-id: ${ID_FROM_AWS_ADMIN}
kubernetes.io/x-k8s-aws-id: ${CLUSTER_NAME_IN_AWS_CONSOLE}

您可以直接从 AWS 控制台获取群集 URL 和 CA,方法是访问EKS>Your cluster>Overview>Details您可以分别在 "API 服务器端点 "和 "证书授权 "下找到它们。

如果 Backstage 需要在与 EKS 群集进行身份验证时扮演某个角色,则应使用kubernetes.io/aws-assume-role参数可设置为所需角色的 ARN。kubernetes.io/aws-external-id参数对应于ExternalId参数的承担角色.

Azure

Azure 提供程序通过 Azure CLI 在服务器上进行身份验证,请注意Microsoft Entra 验证是一项要求,必须在 AKS 群集中启用,然后按照以下步骤操作:

  • 在将运行Backstage应用程序的环境中安装 Azure CLI。 * 在服务器终端使用az login 登录您的 Azure/微软账户。 * 转到 Azure 控制台中 AKS 群集的资源页面,并按照连接选项卡中的步骤设置订阅并获取kubectl集成的凭据。 * 像这样配置您的群集以使用azure验证提供程序:
kubernetes:
clusterLocatorMethods:
- type: 'config'
clusters:
- name: My AKS cluster
url: ${AZURE_CLUSTER_API_SERVER_ADDRESS}
authProvider: azure
skipTLSVerify: true

要获取 Azure 群集的 API 服务器地址,请转到群集资源的 Azure 控制台页面,转到Overview>Properties选项卡 >Networking部分,并直接在其中复制粘贴 API 服务器地址urlfield.

客户端提供商

这些提供商验证用户每个 Backstage 用户都会被提示输入凭据,只要用户已被授权访问该群集,就可以访问该群集。 如果 Backstage 已被配置为与群集通信,但用户未被授权访问该群集,他们将看到群集列表,但在插件页面中看不到该群集的任何资源。 错误将显示为401或类似内容。

客户端可用的提供商有

  • aks * google * oidc