使用Rest API的Azure容器服务

时间:2017-08-31 07:29:46

标签: azure azure-management-api azure-container-service

我想用资源组和特定Orchestrator Kubernetes集群的集群创建azure容器。

我知道使用CLI是可能的,但是我想使用Azure Rest API来为此处给出的链接提供容器服务

docs.microsoft.com/en-us/rest/api/container-service/containerservices/createorupdate

在AAD注册了我的应用并提供了所需的权限。

获取访问令牌并根据链接向api发出请求

PUT management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}?api-version=2017-01-31 但我收到错误

{
"error":  {
"code": "InvalidResource"
"message": "The resource definition is invalid."
}
}

我知道当请求正文中没有任何内容时,我们会收到此错误。

所以我真正的问题是,如果我想使用API​​请求创建包含资源组和集群的容器服务。

请求正文

    {
  "id": "myCluster",
  "name": "myCluster",
  "type": "Microsoft.ContainerService/containerServices",
  "location": "southindia",
  "tags": {
    "tag": "test"
  },
  "properties": {
     "orchestratorProfile": {
      "orchestratorType": "Kubernetes"
    },
    "servicePrincipalProfile": {
      "clientId": "<clientid>,
      "secret": "<secret>"
    },
    "masterProfile": {
      "count": 1,
      "dnsPrefix": "testabc"
    },
    "agentPoolProfiles": {
      "name": "agentPool1234",
      "count": 2,
      "vmSize": "Standard_A1",
      "dnsPrefix": "testabcagents"
    },
    "linuxProfile": {
      "adminUsername": "kubeadmin",
      "ssh": {
        "publicKeys": [
          {
            "keyData": "sshkey"
          }
        ]
      }
    }
  }
}

回应

{
    "code": "BadRequest",
    "message": "An error has occurred in subscription <subscriptionid>, resourceGroup: tobeDeletedResourceGroup request: OrchestratorType has unknown orchestrator: ."
    }

请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

Azure REST API文档中缺少两件事。 1)它需要带orchestratorType的orchestratorRelease版本,如下所示。 “orchestratorProfile”:{       “orchestratorType”:“Kubernetes”,       “orchestratorRelease”:“1.7”     } 2)下一个错误我在Properties.MasterProfile.VMSize中缺少vmSize。 所以我在json中添加了以下更新

“masterProfile”:{       “数”:1,       “dnsPrefix”:“testabc”,        “vmSize”:“Standard_D2_v2”     }

令人惊讶和恼人的是,文档缺少这两个重要的json参数。

答案 1 :(得分:0)

agentPoolProfiles应该是json对象的数组。我从azure-cli's mock unit tests中提取了此示例,以帮助您提供参考框架。

https://gist.github.com/bacongobbler/470b8d139536144edf91174916ec4036