Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.1k views
in Technique[技术] by (71.8m points)

azure devops - VSTS create service connection via API

I'm trying to create a service connection using the Azure DevOps API. This is the reference I'm using:

MS Docs VSTS Endpoints - Create

I've build the request using this address type as specified:

https://dev.azure.com/organization/project/_apis/serviceendpoint/endpoints?api-version=5.0-preview.2

It is a POST request that has been submitted and the json payload below has been added to the body and submission made with content-type: application/json.

For some reason I'm receiving the following error:

The remote server returned an error: (400) Bad Request.

There's no specific details with this error, so it's very difficult to know what is causing the error.

{
"data": {
    "authorizationtype": "kubeconfig",
    "acceptUntrustedCerts": "true"
},
"name": "AKS1",
"id": "bbdb1f31-e6cf-4806-ba75-58ae5b52c920",
"type": "kubernetes",
"url": "https://serviceaddress.azmk8s.io",
"authorization": {
    "parameters": {
        "generatePfx": true
    },
    "acceptUntrustedCerts": true,
    "scheme": "none"
},
"isReady": true

}

Also, another question, the documentation doesn't say how or which field should be used to add the kubeconfig yaml authorization data to the request (see below in the image as highlighted). How should this be added to the json payload, which field should be used?

I'm running my code via Powershell.

Just to be clear, I have managed to run a load of GET requests successfully, so am able to access our project via the api successfully. This is more a question about POST request payload formats

thanks

Add service connection via a browser

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The simple way to check the detail request is capture the actual request of creating target service endpoint manually (Fiddler or F12 developer tool)

The sample REST API to create kubernetes service endpoint:

Post https://dev.azure.com/{organization}/{project}/_apis/serviceendpoint/endpoints?api-version=5.0-preview.2

Body:

{

    "description": "",
    "administratorsGroup": null,
    "authorization": {
        "parameters": {
            "kubeconfig": "apiVersion: v1
kind: Config
clusters:
- name: local
  cluster:
    insecure-skip-tls-verify: true
    server: https://192.168.43.66:6443
contexts:
- context:
    cluster: local
    user: admin
  name: kubelet-context
current-context: kubelet-context
users:
- name: admin
  user:
    password: admin
    username: admin",
            "username": "admin",
            "password": "admin"
        },
        "scheme": "UsernamePassword"
    },
    "createdBy": null,
    "data": {
        "authorizationType": "Kubeconfig",
        "acceptUntrustedCerts": "false"
    },
    "name": "{endpoint name}",
    "type": "kubernetes",
    "url": "{url}",
    "readersGroup": null,
    "groupScopeId": null,
    "isReady": false,
    "operationStatus": null
}

Sample kubeconfig: cni-plugin/kubeconfig.sample


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...