3.9.3.6. 创建服务主体
由于 OpenShift Container Platform 及其安装程序必须通过 Azure Resource Manager 创建 Microsoft Azure 资源,因此您必须创建一个能代表它的服务主体。
先决条件
- 安装或更新 Azure CLI。
-
安装
jq
软件包。 - 您的 Azure 帐户具有您所用订阅所需的角色。
流程
登录 Azure CLI:
$ az login
在 Web 控制台中,使用您的凭证登录 Azure。
如果您的 Azure 帐户使用订阅,请确保使用正确的订阅。
查看可用帐户列表并记录您要用于集群的订阅的
tenantId
值:$ az account list --refresh
输出示例
[ { "cloudName": "AzureCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", "user": { "name": "you@example.com", "type": "user" } } ]
查看您的活跃帐户详情,确认
tenantId
值与您要使用的订阅匹配:$ az account show
输出示例
{ "environmentName": "AzureCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", 1 "user": { "name": "you@example.com", "type": "user" } }
- 1
- 确定
tenantId
参数的值是正确订阅的 UUID。
如果您使用的订阅不正确,请更改活跃的订阅:
$ az account set -s <id> 1
- 1
- 替换您要用于
<id>
的订阅的id
值。
如果您更改了活跃订阅,请重新显示您的帐户信息:
$ az account show
输出示例
{ "environmentName": "AzureCloud", "id": "33212d16-bdf6-45cb-b038-f6565b61edda", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "8049c7e9-c3de-762d-a54e-dc3f6be6a7ee", "user": { "name": "you@example.com", "type": "user" } }
-
记录前面输出中
tenantId
和id
参数的值。OpenShift Container Platform 安装过程中需要这些值。 为您的帐户创建服务主体:
$ az ad sp create-for-rbac --role Contributor --name <service_principal> 1
- 1
- 将
<service_principal>
替换要您要分配给服务主体的名称。
输出示例
Changing "<service_principal>" to a valid URI of "http://<service_principal>", which is the required format used for service principal names Retrying role assignment creation: 1/36 Retrying role assignment creation: 2/36 Retrying role assignment creation: 3/36 Retrying role assignment creation: 4/36 { "appId": "8bd0d04d-0ac2-43a8-928d-705c598c6956", "displayName": "<service_principal>", "name": "http://<service_principal>", "password": "ac461d78-bf4b-4387-ad16-7e32e328aec6", "tenant": "6048c7e9-b2ad-488d-a54e-dc3f6be6a7ee" }
-
记录前面输出中
appId
和password
参数的值。OpenShift Container Platform 安装过程中需要这些值。 为服务主体授予额外权限。
-
您必须始终将
Contributor
和User Access Administrator
角色添加到应用程序注册服务主体中,以便集群可以为组件分配凭证。 -
要以 mint 模式操作 Cloud Credential Operator(CCO),应用程序注册服务主体还需要
Azure Active Directory Graph/Application.ReadWrite.OwnedBy
API 权限。 - 要以 passthrough 模式 操作 CCO,应用程序注册服务主体不需要额外的 API 权限。
如需有关 CCO 模式的更多信息,请参阅 Red Hat Operator 参考内容中的 Cloud Credential Operator 条目。
要分配
User Access Administrator
角色,请运行以下命令:$ az role assignment create --role "User Access Administrator" \ --assignee-object-id $(az ad sp list --filter "appId eq '<appId>'" \ | jq '.[0].id' -r) 1
- 1
- 将
<appId>
替换为服务器主体的appId
参数值。
要分配
Azure Active Directory Graph
权限,请运行以下命令:$ az ad app permission add --id <appId> \ 1 --api 00000002-0000-0000-c000-000000000000 \ --api-permissions 824c81eb-e3f8-4ee6-8f6d-de7f50d565b7=Role
- 1
- 将
<appId>
替换为服务器主体的appId
参数值。
输出示例
Invoking "az ad app permission grant --id 46d33abc-b8a3-46d8-8c84-f0fd58177435 --api 00000002-0000-0000-c000-000000000000" is needed to make the change effective
如需进一步了解可通过此命令授予的具体权限,请参阅 Windows Azure Active Directory 权限的 GUID 表。
批准权限请求。如果您的帐户没有 Azure Active Directory 租户管理员角色,请按照您的组织的准则请租户管理员批准您的权限请求。
$ az ad app permission grant --id <appId> \ 1 --api 00000002-0000-0000-c000-000000000000
- 1
- 将
<appId>
替换为服务器主体的appId
参数值。
-
您必须始终将