|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
创建 AKS 集群
您可以使用 Rancher 创建一个托管在 Microsoft Azure Kubernetes Service (AKS) 中的集群。
Microsoft Azure 的先决条件
|
部署到 AKS 将产生费用。 |
要与 Azure API 交互,AKS 集群需要一个 Azure Active Directory (AD) 服务主体。服务主体用于动态创建和管理其他 Azure 资源,并为您的集群提供与 AKS 通信的凭据。有关服务主体的更多信息,请参阅 AKS 文档。
在创建服务主体之前,您需要从 Microsoft Azure 门户 获取以下信息:
-
订阅 ID
-
客户端 ID(也称为应用 ID)
-
客户端密钥
以下部分描述如何使用 Azure 命令行工具或 Azure 门户设置这些先决条件。
使用 Azure 命令行工具设置服务主体
您必须为服务主体分配角色,以便它具有与 AKS API 通信的权限。它还需要访问权限以创建和列出虚拟网络。
在以下示例中,该命令创建服务主体并赋予其贡献者角色。贡献者角色可以管理 AKS 上的任何内容,但不能授予其他人访问权限。请注意,您必须提供`scopes`至少一个Azure资源的完整路径:
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
结果应显示有关新服务主体的信息:
{
"appId": "xxxx--xxx",
"displayName": "<service-principal-name>",
"name": "http://<service-principal-name>",
"password": "<secret>",
"tenant": "<tenant-name>"
}
以下内容创建一个 资源组以容纳您的Azure资源:
az group create --location <azure-location-name> --resource-group <resource-group-name>
从Azure门户设置服务主体
按照这些说明从Azure门户设置服务主体并授予基于角色的访问权限。
-
转到Microsoft Azure门户 主页。
-
单击*Azure Active Directory*。
-
单击*应用注册*。
-
单击*新注册*。
-
输入您的服务主体的名称。
-
可选:选择哪些帐户可以使用该服务主体。
-
单击*注册*。
-
您现在应该在下看到您的服务主体的名称。
-
单击您的服务主体的名称。请记下应用程序 ID(也称为应用程序 ID 或客户端 ID),以便在配置您的 AKS 集群时使用。然后单击*证书和机密*。
-
单击*新客户端机密*。
-
输入简短描述,选择过期时间,然后单击*添加*。请记下客户端密钥,以便在配置AKS集群时使用。
*结果:*您已创建服务主体,应该能够在*Azure Active Directory*部分的*应用注册*中看到它。您仍然需要为服务主体授予对AKS的访问权限。
要为您的服务主体提供基于角色的访问权限,
-
请在左侧导航栏中单击 所有服务。然后单击 订阅。
-
单击您想要与 Kubernetes 集群关联的订阅名称。请记下订阅 ID,以便在配置 AKS 集群时使用。
-
单击 访问控制 (IAM)。
-
在 添加角色分配 部分,单击 添加。
-
在 角色 字段中,选择一个将有权访问 AKS 的角色。例如,您可以使用 贡献者 角色,该角色有权管理除授予其他用户访问权限外的所有内容。
-
在 分配访问权限给 字段中,选择 Azure AD 用户、组或服务主体。
-
在 选择 字段中,选择您的服务主体的名称,然后单击 保存。
*结果:*您的服务主体现在可以访问 AKS。
创建 AKS 云凭据
-
在 Rancher UI 中,单击 ☰ > 集群管理。
-
点击 云凭据。
-
单击*创建*。
-
单击 Azure。
-
填写表单。有关填写表单的帮助,请参见 配置参考。
-
单击*创建*。
创建 AKS 集群
使用 Rancher 设置和配置您的 Kubernetes 集群。
-
单击 ☰ > 集群管理。
-
在 集群 部分,单击 创建。
-
单击 Azure AKS。
-
填写表单。有关填写表单的帮助,请参见 配置参考。
-
单击*创建*。
*结果:*您的集群已创建并被分配为*正在配置*状态。Rancher 正在启动您的集群。
在集群状态更新为*活动*后,您可以访问您的集群。
AKS 集群配置参考
有关如何从 Rancher UI 配置 AKS 集群的更多信息,请参见 配置参考。
私有集群
通常,AKS 工作节点不会获得公共 IP,无论集群是否为私有。在私有集群中,控制平面没有公共端点。
Rancher 可以通过两种方式连接到私有 AKS 集群。
第一种方式是确保 Rancher 运行在与 AKS 节点相同的 NAT 上。
第二种方式是运行命令将集群注册到 Rancher。一旦集群被配置,您可以在任何可以连接到集群的 Kubernetes API 的地方运行显示的命令。当您启用私有 API 端点配置 AKS 集群时,此命令会在弹出窗口中显示。
|
请注意,当注册现有的 AKS 集群时,集群可能需要一些时间(可能是几个小时)才能出现在 |
有关连接到 AKS 私有集群的更多信息,请参见 AKS 文档。
使用 Azure 命令行工具设置最低权限角色
-
通过运行以下命令创建最低 Rancher AKSv2 权限角色:
cat >> rancher-azure.json << EOF
{
"Name": "Rancher AKSv2",
"IsCustom": true,
"Description": "Everything needed by Rancher AKSv2 operator",
"Actions": [
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/locations/DiskOperations/read",
"Microsoft.Compute/locations/vmSizes/read",
"Microsoft.Compute/locations/operations/read",
"Microsoft.Compute/proximityPlacementGroups/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachineScaleSets/manualUpgrade/action",
"Microsoft.Compute/virtualMachineScaleSets/delete",
"Microsoft.Compute/virtualMachineScaleSets/read",
"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read",
"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ipconfigurations/publicipaddresses/read",
"Microsoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/read",
"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/read",
"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/write",
"Microsoft.Compute/virtualMachineScaleSets/write",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.ContainerService/managedClusters/read",
"Microsoft.ContainerService/managedClusters/write",
"Microsoft.ContainerService/managedClusters/delete",
"Microsoft.ContainerService/managedClusters/accessProfiles/listCredential/action",
"Microsoft.ContainerService/managedClusters/agentPools/read",
"Microsoft.ContainerService/managedClusters/agentPools/write",
"Microsoft.ContainerService/managedClusters/agentPools/delete",
"Microsoft.ManagedIdentity/userAssignedIdentities/assign/action",
"Microsoft.Network/applicationGateways/read",
"Microsoft.Network/applicationGateways/write",
"Microsoft.Network/loadBalancers/write",
"Microsoft.Network/loadBalancers/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/delete",
"Microsoft.Network/loadBalancers/read",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/publicIPAddresses/delete",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/publicIPAddresses/write",
"Microsoft.Network/publicIPPrefixes/join/action",
"Microsoft.Network/privatednszones/*",
"Microsoft.Network/routeTables/read",
"Microsoft.Network/routeTables/routes/delete",
"Microsoft.Network/routeTables/routes/read",
"Microsoft.Network/routeTables/routes/write",
"Microsoft.Network/routeTables/write",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/joinLoadBalancer/action",
"Microsoft.OperationalInsights/workspaces/sharedkeys/read",
"Microsoft.OperationalInsights/workspaces/read",
"Microsoft.OperationsManagement/solutions/write",
"Microsoft.OperationsManagement/solutions/read",
"Microsoft.Resources/subscriptions/resourcegroups/read",
"Microsoft.Resources/subscriptions/resourcegroups/write",
"Microsoft.Storage/operations/read",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/SUBSCRIPTION_ID"
]
}
EOF
-
应用 Rancher AKSv2 角色:
az role definition create --role-definition rancher-azure.json
-
验证 Rancher AKSv2 角色是否已创建:
az role definition list | grep "Rancher AKSv2"
以编程方式创建 AKS 集群
通过 Rancher 以编程方式部署 AKS 集群的最常见方式是使用 Rancher2 Terraform 提供程序。使用 Terraform 创建集群的文档在 这里。