You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用自定义脚本扩展在ARM模板创建的AKS集群部署K8s应用

在Azure托管应用中通过自定义脚本扩展部署K8s应用的实现方法

可行性确认

完全可以在AKS集群基础设施部署完成后,用Azure自定义脚本扩展来初始化K8s应用组件。需要注意的是,这个扩展是作用于VM节点的,所以得针对AKS的节点池配置,或者用AKS原生支持的节点部署脚本注入能力。

具体实现步骤

1. 修改ARM模板,添加自定义脚本扩展配置

在AKS的节点池定义里加入extensions字段,配置自定义脚本扩展。示例ARM模板片段:

"agentPoolProfiles": [
  {
    "name": "agentpool",
    "count": 3,
    "vmSize": "Standard_DS2_v2",
    "osType": "Linux",
    "extensions": [
      {
        "name": "customScript",
        "properties": {
          "publisher": "Microsoft.Azure.Extensions",
          "type": "CustomScript",
          "typeHandlerVersion": "2.1",
          "autoUpgradeMinorVersion": true,
          "settings": {
            "fileUris": ["https://your-storage-account.blob.core.windows.net/scripts/init-k8s-app.sh"],
            "commandToExecute": "bash init-k8s-app.sh"
          }
        }
      }
    ]
  }
]

2. 编写K8s应用初始化脚本

脚本要完成kubectl配置、应用部署等操作,示例init-k8s-app.sh:

#!/bin/bash

# 等待kubectl可用
until kubectl version &> /dev/null; do
  echo "等待kubectl就绪..."
  sleep 5
done

# 部署你的应用资源(替换成实际的清单地址)
kubectl apply -f https://your-storage-account.blob.core.windows.net/manifests/app-deployment.yaml
kubectl apply -f https://your-storage-account.blob.core.windows.net/manifests/app-service.yaml

# 初始化其他依赖组件,比如Ingress、监控等
kubectl create namespace monitoring
kubectl apply -f https://your-storage-account.blob.core.windows.net/manifests/prometheus.yaml

3. 脚本存储与权限设置

  • 把脚本和K8s清单上传到Azure存储Blob容器,要么设置容器为匿名读取,要么生成SAS令牌,保证节点能访问这些文件。
  • 如果用SAS令牌,直接把文件URI换成带SAS的地址,或者在脚本里用wget/curl时带上SAS参数。

4. 托管应用专属注意点

  • 托管应用的ARM模板会按依赖顺序执行,节点池扩展会在节点创建后自动运行,不用额外设置依赖。
  • 不同节点池需要不同脚本的话,在对应的agentPoolProfiles里分别配置扩展就行。
  • 排查问题可以去Azure门户看AKS节点的扩展状态,或者在脚本里把日志输出到节点本地文件。

可选替代方案

要是觉得节点级扩展不够灵活,也可以用AKS的kubeadmConfigPatches注入初始化脚本,或者在托管应用里加个后续步骤,用Azure Function或逻辑应用调用AKS API部署应用,这种方式更适合复杂的初始化场景。

内容的提问来源于stack exchange,提问作者Gianvito Grassi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:33:28