快速入门:使用 Azure 资源管理器 (ARM) 模板部署具有 OS Guard 的 Azure Linux(预览版)Azure Kubernetes 服务 (AKS)群集

Note

带有 OS Guard(预览版)的 Azure Linux 正被 Azure Container Linux(ACL)取代。

Azure容器 Linux 是用于Azure Kubernetes 服务 (AKS)的长期、不可变、容器优化的 Linux 操作系统(OS)。 它提供了一个安全、最少且可操作一致的主机 OS,旨在大规模运行容器化工作负荷。

有关详细信息,请参阅 Azure 容器 Linux (ACL) 概述

通过使用 Azure 资源管理器 (ARM) 模板在 AKS 上部署启用了 OS Guard(预览版)的 Azure Linux 群集,开始使用 Azure Linux 容器主机。

在此快速入门中,您将学习如何:

  • 安装 aks-preview Azure CLI 扩展。
  • 注册AzureLinuxOSGuardPreview功能标志。
  • 安装 Kubernetes CLI kubectl
  • 创建 SSH 密钥对。
  • 查看 ARM 模板。
  • 部署 ARM 模板并对其进行验证。
  • 将示例应用程序部署到群集。

Azure 资源管理器模板是一个 JavaScript 对象表示法(JSON)文件,用于定义项目的基础结构和配置。 模板使用声明性语法。 你可以在不编写用于创建部署的编程命令序列的情况下,描述预期部署。

先决条件

  • 如果您没有 Azure 试用订阅,请在开始之前创建 试用订阅

  • 如果想要在本地运行 CLI 引用命令,安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用本地安装,请使用 az login 命令登录到Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 将扩展与 Azure CLI 配合使用

    • 运行 az version 以查找已安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 如果尚未安装 kubectl,请使用 az aks install-cli 命令通过 Azure CLI 安装它,或按照 upstream 说明安装。

  • 若要使用 ARM 模板创建 AKS 群集,请提供 SSH 公钥。 如果需要此资源,请参阅以下部分;否则请跳到查看模板部分。

  • 用于创建群集的标识具有合适的的最低权限。 有关 AKS 的访问和标识的详细信息,请参阅 Azure Kubernetes 服务 (AKS) 的访问和标识选项

  • 若要部署 Bicep 文件或 ARM 模板,需要对要部署的资源具有写入权限,并且需要对 Microsoft.Resources/deployments 资源类型的所有操作具有访问权限。 例如,若要部署虚拟机(VM),需要Microsoft。Compute/virtualMachines/writeMicrosoft。resources/deployments/* 权限。 有关角色和权限的列表,请参阅 Azure 内置角色

Azure Linux 使用 OS Guard 时的注意事项和限制

在开始之前,请查看以下 Azure Linux 与 OS Guard 的注意事项和限制(预览版):

安装 aks-preview Azure CLI 扩展

Important

AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

使用 aks-preview 命令安装 az extension add 扩展。

az extension add --name aks-preview

使用aks-preview命令将az extension update扩展更新到最新版本。

az extension update --name aks-preview

注册 AzureLinuxOSGuardPreview 功能标志

  1. 使用 AzureLinuxOSGuardPreview 命令注册 az feature register 功能标志。

    az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    

    几分钟后,状态将显示为“已注册”

  2. 使用 az feature show 命令验证注册状态。

    az feature show --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    
  3. 当状态反映为已注册时,使用 命令刷新 az provider register 资源提供程序的注册。

    az provider register --namespace "Microsoft.ContainerService"
    

创建 SSH 密钥对

若要访问 AKS 节点,请使用通过 ssh-keygen 命令生成的 SSH 密钥对(公钥和私钥)进行连接。 默认情况下,这些文件在 ~/.ssh 目录中创建。 运行 ssh-keygen 命令会覆盖给定位置中同名的任何 SSH 密钥对。

  1. 前往浏览器中打开 Bash。

  2. 运行 ssh-keygen 命令。 以下示例使用 RSA 加密和 4096 位长度创建 SSH 密钥对:

    ssh-keygen -t rsa -b 4096
    

有关创建 SSH 密钥的详细信息,请参阅在 Azure 中创建和管理用于身份验证的 SSH 密钥

查看模板

以下部署使用来自 Azure 快速入门模板的 ARM 模板

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.1",
    "parameters": {
        "clusterName": {
            "defaultValue": "osguardakscluster",
            "type": "String",
            "metadata": {
                "description": "The name of the Managed Cluster resource."
            }
        },
        "location": {
            "defaultValue": "[resourceGroup().location]",
            "type": "String",
            "metadata": {
                "description": "The location of the Managed Cluster resource."
            }
        },
        "dnsPrefix": {
            "type": "String",
            "metadata": {
                "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
            }
        },
        "agentCount": {
            "defaultValue": 3,
            "minValue": 1,
            "maxValue": 50,
            "type": "Int",
            "metadata": {
                "description": "The number of nodes for the cluster."
            }
        },
        "agentVMSize": {
            "defaultValue": "Standard_DS2_v2",
            "type": "String",
            "metadata": {
                "description": "The size of the Virtual Machine."
            }
        },
        "osSKU": {
            "defaultValue": "AzureLinuxOSGuard",
            "allowedValues": [
                "AzureLinuxOSGuard",
                "AzureLinux3OSGuard"
            ],
            "type": "String",
            "metadata": {
                "description": "The Linux SKU to use."
            }
        }
    },
    "resources": [
        {
            "type": "Microsoft.ContainerService/managedClusters",
            "apiVersion": "2025-05-01",
            "name": "[parameters('clusterName')]",
            "location": "[parameters('location')]",
            "identity": {
                "type": "SystemAssigned"
            },
            "properties": {
                "dnsPrefix": "[parameters('dnsPrefix')]",
                "agentPoolProfiles": [
                    {
                        "name": "agentpool",
                        "mode": "System",
                        "count": "[parameters('agentCount')]",
                        "vmSize": "[parameters('agentVMSize')]",
                        "osType": "Linux",
                        "osSKU": "[parameters('osSKU')]",
                        "osDiskType": "Managed",
                        "enableFIPS": true,
                        "securityProfile": {
                            "enableSecureBoot": true,
                            "enableVTPM": true
                        },
                    }
                ]
            }
        }
    ],
    "outputs": {
        "controlPlaneFQDN": {
            "type": "String",
            "value": "[reference(parameters('clusterName')).fqdn]"
        }
    }
}

若要使用 OS Guard 将 Azure Linux 添加到现有 ARM 模板,需要将以下属性添加到模板的 agentPoolProfiles 部分:

  • "osSKU": "AzureLinuxOSGuard"
  • "mode": "System"agentPoolProfiles
  • "osDiskType": "Managed"agentPoolProfiles
  • "enableFIPS": trueagentPoolProfiles
  • "securityProfile": {enableSecureBoot: true enableVTPM: true}agentPoolProfiles
  • apiVersion 设置为 2025-05-01 或更高版本("apiVersion": "2025-05-01")。

部署模板

  1. 在Azure 门户中,选择 Deploy 自定义模板>生成自己的模板,然后将 ARM 模板粘贴到模板编辑器中。

  2. “自定义部署 ”页中配置模板参数。 对于本快速入门,请保留“OS 磁盘大小(GB)”、“代理计数”、“代理 VM 大小”、“OS 类型”和“Kubernetes 版本”的默认值。 为以下模板参数提供自己的值:

    • Subscription:选择Azure订阅。
    • 资源组:选择“新建”。 输入资源组的唯一名称,例如 ttestAzureLinuxOSGuardResourceGroup,然后选择 “确定”。
    • 位置:选择位置,如 中国北部 3
    • 群集名称:输入 AKS 群集的唯一名称,例如 testAzureLinuxOSGuardCluster
    • DNS 前缀:输入群集的唯一 DNS 前缀,例如 myAzureLinuxOSGuardCluster
    • Linux 管理员用户名:输入一个用户名用于通过 SSH 进行连接,例如 azureUser。
    • SSH RSA 公钥:复制并粘贴 SSH 密钥对中的 公钥 部分(默认为 ~/.ssh/id_rsa.pub 的内容)。
  3. 选择 “审阅 + 创建”。

创建 Azure Linux 容器主机群集需要几分钟的时间。 等待群集成功部署,然后转到下一步骤。

连接至群集

若要管理 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl

  1. 使用 kubectl 命令在本地安装 az aks install-cli

    az aks install-cli
    
  2. 使用 kubectl 命令将 az aks get-credentials 配置为连接到你的 Kubernetes 群集。 此命令将下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。

    az aks get-credentials --resource-group testAzureLinuxOSGuardResourceGroup --name testAzureLinuxCluster
    
  3. 使用 kubectl get 命令验证与群集之间的连接。 此命令将返回群集节点的列表。

    kubectl get nodes
    

    以下示例输出显示在前面的步骤中创建的三个节点。 确保节点状态为 Ready

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-agentpool-12345678-0   Ready    agent   6m44s   v1.12.6
    aks-agentpool-12345678-1   Ready    agent   6m46s   v1.12.6
    aks-agentpool-12345678-2   Ready    agent   6m45s   v1.12.6
    

删除群集

不再需要时可以清理不必要的资源,避免产生 Azure 费用。

使用 az group delete 命令删除Azure资源组和所有相关资源。

az group delete --name $RESOURCE_GROUP --yes --no-wait

在本快速入门中,你部署了包含 OS Guard 群集的 Azure Linux。 若要详细了解如何使用 OS Guard Azure Linux,请参阅以下资源: