Azure 云上的基础结构部署是使用 terraform 配置定义的。可通过两种不同的方法在 Azure 上部署基础结构。您可以根据自己的要求,选择使用配置生成器或配置模板来部署基础结构。
执行以下步骤,以使用 Identity Manager 配置生成器生成配置文件。
重要说明:必须有一台已安装并运行 Docker 的计算机才能执行以下步骤。
创建共享卷。有关更多信息,请参见 管理容器卷数据。
将您的域的证书复制到共享卷。
运行以下命令装载 Docker 映像:
docker load --input docker-images/IDM_490_idm_conf_generator.tar.gz
导航到解压缩位置,并运行以下命令来部署配置生成器容器:
docker run --rm -it --name=idm_conf_generator -v /data:/config idm_conf_generator:idm-4.9.0-580
下表提供了有关新提示的信息:
注:有关所有现有提示,请参见了解配置参数一节。
|
Prompt |
说明 |
|---|---|
|
是否要在 Azure 上部署 Identity Manager 容器?对于次要服务器部署,请选择“n”并继续进行无提示属性生成 (y/n)? |
指定您是否要部署 Identity Manager 容器。
|
|
指定 Kubernetes 部署的名称空间。 |
输入 Kubernetes 部署的名称空间。例如 idm。 |
|
是否要创建新的 Azure PostgreSQL 服务器实例? |
指定您是否要创建新的 Azure PostgreSQL 服务器实例。
|
|
输入用于访问 Identity Manager Web 应用程序的完全限定域名 (FQDN)。 |
指定 FQDN 以访问 Identity Manager Web 应用程序。例如 identitymanager.eastus.cloudapp.azure.com。 注:Identity Manager Web 应用程序包括 Identity Applications、Identity Reporting、SSPR、OSP 以及 Identity Console。 |
|
输入 TLS 证书文件。 |
指定 PEM 格式的 TLS 证书文件,其中包含上面指定的域的主题备用名称和常用名。例如 /config/tls.crt。 |
|
输入 TLS 证书的私用密钥文件。 |
指定 TLS 证书的私用密钥文件。例如 /config/tls.key。 |
|
输入要在 Azure 上为 Identity Manager 引擎部署的实例(Pod 复本)数量? |
指定要在 Azure 上为 Identity Manager 引擎部署的实例(Pod 复本)数量。例如,5 位。 |
|
输入要在 Azure 上为 OSP 部署的实例(Pod 复本)数量? |
指定要在 Azure 上为 OSP 部署的实例(Pod 复本)数量。例如,5 位。 |
|
输入要在 Azure 上为 Identity Applications 部署的实例(Pod 复本)数量? |
指定要在 Azure 上为 Identity Applications 部署的实例(Pod 复本)数量。例如,5 位。 |
|
输入 Azure 服务主体 ID。 |
指定在“规划部署”一章的“步骤 5”中生成的 Azure 服务主体 ID。 |
|
输入 Azure 服务口令。 |
指定在“规划部署”一章的“步骤 5”中生成的 Azure 服务口令。 |
|
输入您的服务主体的租户 ID。 |
指定在“规划部署”一章的“步骤 5”中生成的租户 ID。 |
|
输入现有的 Azure 容器注册表服务器名称。 |
指定 Azure 容器注册表服务器名称。请参考步骤 3.c。 |
|
输入 Azure 容器注册表用户名。 |
指定 Azure 容器注册表用户名。请参考步骤 3.c。 |
|
输入 Azure 容器注册表用户口令。 |
指定 Azure 容器注册表口令。请参考步骤 3.c。 |
|
按原样输入上面列显的相应 Azure 帐户 ID(不包括双引号)。 |
指定在上述步骤中生成的 Azure 帐户 ID。 |
|
输入 Azure 资源组名称。 |
指定 Azure 资源组名称。例如 idvault-rg。 |
|
输入 Azure 资源组位置。 |
指定资源组位置。例如 eastus。 |
回答所有提示后,Identity Manager 配置生成器将执行以下操作:
如果 Azure 中没有可用的资源组,则会创建一个资源组。
将在资源组下创建一个密钥保管库和储存帐户。
所有敏感信息将推送到密钥保管库。
注:要访问 Azure 密钥保管库中的敏感信息,请参见《Quickstart: Azure Key Vault》(快速入门:Azure 密钥保管库)。
将在共享卷下创建 IDM_4.9.0_Cloud_Deployment_files.zip 文件,其中包括 Terraform 文件和 Helm 图表。
登录到 Azure 门户。
注:将使用初始登录帐户自动对 Azure Cloud Shell 进行鉴定。如果您需要使用其他帐户,请运行 az login 命令并登录到 Azure-CLI。
执行以下步骤,将 IDM_4.9.0_Cloud_Deployment_files.zip 文件上载到 Azure Cloud Shell。
单击
。
在终端窗口中单击
。
选择要上载到 Azure 的 zip 文件。
运行以下命令以解压缩 zip 文件的内容:
unzip IDM_4.9.0_Cloud_Deployment_files.zip
导航到 IDM_4.9.0_Cloud_Deployment_files 目录。
在 values.yaml 文件中进行以下更改:
|
部分 |
字段 |
说明 |
|---|---|---|
|
Identity Manager Web 应用程序的 TLS 配置 |
kubernetesSecret |
将值指定为 false。 |
|
azurekeyVault |
将值指定为 true。 入口 TLS 证书将作为 kubernetes 机密进行管理。 |
|
|
敏感数据的机密管理器 |
kubernetesSecret |
将值指定为 false。 |
|
azurekeyVault |
将值指定为 true。 Azure 密钥保管库用作机密管理器。 |
|
|
AWS Secret Manager 用作机密管理器 |
awsSecretManager |
将值指定为 false。 |
(可选)查看 terraform.tfvars 和 values.yaml。
(可选)运行以下命令创建储存帐户密钥:
ACCOUNT_KEY=$(az storage account keys list --resource-group $AZURE_RESOURCE_GROUP_NAME --account-name $AZURE_STORAGE_ACCOUNT_FOR_TFSTATE --query '[0].value' -o tsv)
例如:
ACCOUNT_KEY=$(az storage account keys list --resource-group idvault-rg --account-name stract10226600913781 --query '[0].value' -o tsv)
(可选)运行以下命令:
export ARM_ACCESS_KEY=$ACCOUNT_KEY
运行以下命令,以下载基础结构部署所需的所有必要插件。
terraform init
运行以下命令以根据输入规划和了解部署。
terraform plan
运行以下命令以创建输入中定义的基础结构。
terraform apply --auto-approve
(可选)运行以下命令以识别 Azure 帐户特定的信息,例如储存帐户名称、密钥保管库名称和数据库管理员细节。
terraform output
成功执行 Terraform 命令后,执行Azure Kubernetes 服务上的 Identity Manager 容器部署中所述的步骤以完成 Azure 上的 Identity Manager 容器部署。
执行以下步骤以更新虚拟机中的配置模板。
导航到 Identity_Manager_4.9.0_Containers.tar.gz 文件的解压缩目录。
导航到 Identity_Manager_4.9.0_Containers/terraform/ 目录,并运行以下命令来解压缩 zip 文件的内容。
unzip IDM_4.9.0_Azure_Terraform_Configuration.zip
转到 IDM_Azure_Terraform_Configuration 文件夹,并更新 terraform.tfvars 文件中的以下字段。
表 25-1
|
字段 |
说明 |
|---|---|
|
resource_group_name |
指定 Azure 资源组名称。例如 idvault-rg。 |
|
resource_group_location |
指定资源组位置。例如 eastus。 |
|
resource_group_exists |
指定您是否想要知道是否存在现有的资源组。例如 true。 |
|
keyvault_name |
指定唯一的密钥保管库名称。 |
|
keyvault_exists |
指定您是否想要知道是否存在现有的密钥保管库。例如 true。 |
|
image_registry_server |
指定 Azure 容器注册表服务器名称。 |
|
image_registry_server_username |
指定 Azure 容器注册表用户名。 |
|
image_registry_server_password |
指定 Azure 容器注册表口令。 |
|
aks_kubernetes_namespace |
输入 Kubernetes 部署的名称空间。例如 idm。 |
|
azure_postgres_server_name |
指定 Azure PostgreSQL 服务器名称。例如 idmpgserver。 |
注:生成 terraform.tfvars 文件时会预填充所有剩余字段。
运行以下命令并登录到 Azure-CLI。
az login
执行以下步骤,以将 terraform 状态文件储存在 Azure 储存帐户中:
运行以下命令以在 Azure 中创建储存帐户。
az storage account create --name "${AZURE_STORAGE_ACCOUNT_FOR_TFSTATE}" --resource-group "${AZURE_RESOURCE_GROUP_NAME}" --location "${AZURE_RESOURCE_GROUP_LOCATION}" --sku Standard_LRS --encryption-services blob
例如:
az storage account create --name stract10226600913781 --resource-group idvault-rg --location eastus --sku Standard_LRS --encryption-services blob
运行以下命令创建 Azure 储存容器:
az storage container create -n terraform-state --account-name "${AZURE_STORAGE_ACCOUNT_FOR_TFSTATE}"
例如:
az storage container create -n terraform-state --account-name stract10226600913781
导航到 Identity_Manager_4.8.7_Containers/terraform/IDM_Azure_Terraform_Configuration/ 目录,转到 main.tf 文件,并更新 backend "azurerm" 字段下的以下细节。
|
字段 |
说明 |
|---|---|
|
resource_group_name |
指定 Azure 资源组名称。例如 idvault-rg。 |
|
storage_account_name |
指定 Azure 储存帐户名称。例如 stract89671501132193。 |
|
container_name |
指示 Azure 容器名称。此字段是自动生成的。 |
|
key |
指示 Azure 密钥名称。此字段是自动生成的。 |
查看 terraform.tfvars 和 main.tf 文件中已修改的细节,然后将已更新的 IDM_4.9.0_Azure_Terraform_Configuration.zip 文件上载到 Azure Cloud Shell。
运行以下命令,以下载基础结构部署所需的所有必要插件。
terraform init
运行以下命令以根据输入规划和了解部署。
terraform plan
运行以下命令以创建输入中定义的基础结构。
terraform apply --auto-approve
(可选)运行以下命令以识别 Azure 帐户特定的信息,例如储存帐户名称、密钥保管库名称和数据库管理员细节。
terraform output
运行以下命令,以在密钥保管库中创建机密值。
az keyvault secret set --name idm-common-password --vault-name <key vault name> --value "novell@123"
注:您可以根据自己的要求使用 Values.yaml 文件指定多个机密值。
导航到在其中生成了 TLS 证书的目录,运行以下命令以将证书和密钥导出为 .pfx 格式。
openssl pkcs12 -export -out tls.pfx -inkey tls.key -in tls.crt -passout pass:''
注:tls.pfx 文件将在密钥保管库中用于验证机密值和密钥。
在 Azure Cloud Shell 中上载 tls.pfx 文件,并运行以下命令以将该文件导入密钥保管库。
az keyvault certificate import --vault-name <key vault name> -n "ingress-tls-cert" -f tls.pfx
例如:
az keyvault certificate import --vault-name idmkv20220712 -n "ingress-tls-cert" -f tls.pfx
导航到 Identity_Manager_4.9.0_Containers/helm_charts/ 目录并更新 value.yaml 文件中的以下字段。
表 25-2
|
部分 |
字段 |
说明 |
|---|---|---|
|
Identity Manager Advanced Edition |
IS_ADVANCED_EDITION |
指定您是否要部署 Identity Manager Advanced Edition。(true/false) |
|
Azure PostgreSQL 服务器实例 |
AZURE_POSTGRESQL_REQUIRED |
指定您是否要使用 Azure PostgreSQL 服务器实例作为 Identity Applications 和 Identity Reporting 的数据库服务器。(y/n) |
|
Identity Manager Docker 映像的注册表身份凭证 |
注册表 |
指定 Azure 容器注册表服务器名称。 |
|
name |
指定包含注册表登录身份凭证的 Kubernetes 机密的名称。 |
|
|
数据持久化 |
Identity Engine 的持久储存 volumeClaimTemplate:
|
指定 Identity Engine 使用的卷声明模板的储存类名和储存大小。 |
|
共享持久储存
dynamicClaim:
|
如果您想要使用现有的持久卷声明 (PVC),请输入现有声明的名称。 否则,请指定储存类名和储存大小进行 PVC 动态供应。 |
|
|
口令、密钥和证书等敏感数据的机密管理器 |
azureKeyVaultName: |
指定 Azure 密钥保管库的名称。 |
|
azureKeyVaultTenantId |
指定 Azure 密钥保管库租户 ID。请参考步骤 10 的 terraform 输出。 |
|
|
azureUserAssignedIdentityID |
指定 Azure 密钥保管库机密提供程序使用的用户定义受管身份的客户端 ID。可以运行以下 az cli 命令来检索身份的客户端 ID: az aks show -g <资源组> -n <AKS 群集名称> --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId -o tsv |
|
|
入口配置 |
host |
指定用于访问 Identity Manager Web 应用程序的域名。 |
|
azureKeyVaultCertificateName |
指定包含 TLS 证书和私用密钥的 Azure 密钥保管库证书的名称。 |
|
|
Identity Engine 配置 |
部署 |
指定您是否要部署 Identity Engine。(true/false) |
|
replicaCount |
指定 Identity Engine 复本 Pod 的数量。例如:“2”。 |
|
|
ID_VAULT_TREENAME |
指定身份库树名称。 |
|
|
ID_VAULT_SERVER_CONTEXT |
指定身份库服务器环境。 |
|
|
ID_VAULT_DRIVER_SET |
指定身份库默认驱动程序集名称。 |
|
|
ID_VAULT_DEPLOY_CTX |
指定身份库默认驱动程序集部署环境。 |
|
|
ID_VAULT_ADMIN_LDAP |
指定身份库管理员 DN。 |
|
|
ID_VAULT_PASSWORD: secret |
指定包含身份库管理员口令的 Azure 密钥保管库机密。 |
|
|
ID_VAULT_RSA_KEYSIZE |
指定用于创建 RSA 证书颁发机构密钥和服务器密钥的密钥大小。 |
|
|
ID_VAULT_EC_CURVE |
指定用于创建 EC 证书颁发机构密钥和服务器密钥的椭圆曲线算法。 |
|
|
ID_VAULT_CA_LIFE |
指定用于创建默认服务器证书的证书寿命。 |
|
|
资源请求和限制
|
指定 Identity Engine 的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
One SSO Provider (OSP) 配置 |
部署 |
指定您是否要部署 OSP。(true/false) |
|
replicaCount |
指定 Identity Engine 复本 Pod 的数量。例如:“2”。 |
|
|
OSP_CUSTOM_NAME |
指定 OSP 自定义登录屏幕名称。 |
|
|
SSO_SERVICE_PWD: secret |
指定包含 OSP 客户端口令的 Azure 密钥保管库机密。 |
|
|
资源请求和限制
|
指定 OSP 的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
Identity Applications 配置 |
部署 |
指定您是否要部署 Identity Applications。(true/false) |
|
replicaCount |
指定 Identity Engine 复本 Pod 的数量。例如:“2”。 |
|
|
UA_ADMIN |
指定 Identity Applications 管理员 DN |
|
|
UA_ADMIN_PWD: secret |
指定包含 Identity Applications 管理员口令的 Azure 密钥保管库机密。 |
|
|
UA_WFE_DB_PLATFORM_OPTION |
指定 Identity Applications 和工作流程引擎数据库平台。支持的值为:postgres、oracle 和 mssql |
|
|
UA_ORACLE_DATABASE_TYPE |
如果数据库平台为 Oracle, 请指定数据库的配置。(sid/服务) |
|
|
UA_WFE_DB_HOST |
指定 Identity Applications 和工作流程引擎数据库服务器主机。 |
|
|
UA_WFE_DB_PORT |
指定 Identity Applications 和工作流程引擎数据库服务器端口号。 |
|
|
UA_DATABASE_NAME |
指定 Identity Applications 数据库名称。 |
|
|
WFE_DATABASE_NAME |
指定工作流程引擎数据库名称。 |
|
|
UA_WFE_DATABASE_USER |
指定 Identity Applications 数据库用户名。 |
|
|
UA_WFE_DATABASE_PWD: secret |
指定包含 Identity Applications 数据库用户口令的 Azure 密钥保管库机密。 |
|
|
资源请求和限制
|
指定 Identity Application 的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
表单渲染器配置 |
部署 |
指定您是否要部署表单渲染器。(true/false) |
|
资源请求和限制
|
指定表单渲染器的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
ActiveMQ 配置 |
部署 |
指定您是否要部署 ActiveMQ。(true/false) |
|
资源请求和限制
|
指定表单渲染器的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
Identity Reporting 配置 |
部署 |
指定您是否要部署 Identity Reporting。(true/false) |
|
RPT_ADMIN |
指定 Identity Reporting 管理员 DN |
|
|
RPT_ADMIN_PWD: secret |
指定包含 Identity Reporting 管理员口令的 Azure 密钥保管库机密。 |
|
|
RPT_DATABASE_PLATFORM_OPTION |
指定 Identity Reporting 数据库平台。支持的值为:postgres、oracle 和 mssql |
|
|
RPT_ORACLE_DATABASE_TYPE |
如果数据库平台为 Oracle, 请指定数据库的配置。(sid/服务) |
|
|
RPT_DATABASE_HOST |
指定 Identity Reporting 数据库主机。 |
|
|
RPT_DATABASE_PORT |
指定 Identity Reporting 数据库端口号。 |
|
|
RPT_DATABASE_NAME |
指定 Identity Reporting 数据库名称。 |
|
|
RPT_DATABASE_USER |
指定 Identity Reporting 数据库用户。 |
|
|
RPT_DATABASE_SHARE_PASSWORD: secret |
指定包含 Identity Reporting 数据库帐户口令的 Azure 密钥保管库机密 |
|
|
资源请求和限制
|
指定表单渲染器的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
Self Service Password Reset (SSPR) 配置 |
部署 |
指定您是否要部署 SSPR。(true/false) |
|
CONFIGURATION_PWD: secret: |
指定要为管理员创建的、用于配置 SSPR 的口令。 |
|
|
资源请求和限制
|
指定 SSPR 的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
Identity Console 配置 |
部署 |
指定您是否要部署 Identity Console。(true/false) |
|
ID_CONSOLE_USE_OSP |
不支持使用 One SSO Provider (OSP) 作为 Identity Console 的登录方法,因此默认值应为“n”。 |
|
|
资源请求和限制
|
指定 Identity Console 的资源请求和限制的 CPU 和内存值。有关更多细节,请参见 Resource Management for Pods and Containers(Pod 和容器的资源管理) |
|
|
高级配置 |
DATA_CONTAINERS: DATA_CONTAINERS_LDIF ROOT_CONTAINER GROUP_ROOT_CONTAINER USER_CONTAINER ADMIN_CONTAINER |
指定用于创建数据容器的 LDIF 配置。 指定根容器、组根容器、用户容器和管理员容器的 DN |
|
Kubernetes 群集域: KUBE_SUB_DOMAIN |
指定 Kubernetes 群集域 |
|
|
Identity Manager Web 应用程序的 TLS 配置 |
kubernetesSecret |
将值指定为 false。 |
|
azurekeyVault |
将值指定为 true。 入口 TLS 证书将作为 kubernetes 机密进行管理。 |
|
|
敏感数据的机密管理器 |
kubernetesSecret |
将值指定为 false。 |
|
azurekeyVault |
将值指定为 true。 Azure 密钥保管库用作机密管理器。 |
|
|
AWS Secret Manager 用作机密管理器 |
awsSecretManager |
将值指定为 false。 |
更新 terraform.tfvars 和 values.yaml 文件后,按照Azure Kubernetes 服务上的 Identity Manager 容器部署中所述的步骤完成 Azure 上的 Identity Manager 容器部署。