# Obtaining Cluster Certificates

#### Function

This API is used to obtain certificates of a specified cluster in form of kubeconfig file.

#### URI

POST /api/v3/projects/{project_id}/clusters/{cluster_id}/clustercert

Table 1 describes the parameters of this API.

Table 1 Description
Parameter | Mandatory | Description
--- | --- | ---
project_id | Yes | Project ID. For details about how to obtain the project ID, see How to Obtain Parameters in the API URI.
cluster_id | Yes | Cluster ID. For details about how to obtain the cluster ID, see How to Obtain Parameters in the API URI.

#### Request

Request parameters:

Table 2 andTable 3 describes the request parameters.

Table 2 Parameters in the request header
Parameter | Mandatory | Description
--- | --- | ---

Content-Type

Yes

Message body type (format). Possible values:

- application/json;charset=utf-8
- application/json

X-Auth-Token | Yes | Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token. For details on how to obtain a user token, see API Usage Guidelines.

Table 3 Parameters in the request body
Parameter | Mandatory | Type | Description
--- | --- | --- | ---
duration | Yes | Integer | Period during which a cluster certificate is valid, in days. Validity period of the cluster certificate, in days. A cluster certificate can be valid for 1 to 1,825 days. If this parameter is set to -1, the validity period is 1,825 days (about 5 years). Minimum: 1 Maximum: 1825

Example request:

Applying for a cluster access certificate valid for 30 days

    {
      "duration": 30
    }

#### Response

Response parameters:

Table 4 describes the response parameters.

Table 4 Response parameters
Parameter | Type | Description
--- | --- | ---
kind | String | API type. The value is fixed at Config and cannot be changed.
apiVersion | String | API version. The value is fixed at v1 and cannot be changed.
preferences | Object | This field is not used currently and is left unspecified by default.
clusters | Array of clusters objects | Cluster list.
users | Array of users objects | Certificate information and client key information of a specified user.
contexts | Array of contexts objects | Context list.
current-context | String | Current context. If publicIp (VM EIP) exists, the value is external. If publicIp does not exist, the value is internal.

Table 5 Data structure of the clusters field
Parameter | Type | Description
--- | --- | ---

name

String

Cluster name.

- If the publicIp parameter does not exist (that is, no EIP exists), there is only one cluster in the cluster list, and the value of this parameter is internalCluster.
- If the publicIp parameter exists (that is, the EIP exists), there is more than one cluster in the cluster list, and the value of this parameter is externalCluster.

cluster | cluster object | Cluster information.

Table 6 Data structure of the cluster field
Parameter | Type | Description
--- | --- | ---
server | String | Node IP address.
certificate-authority-data | String | Certificate authorization data.
insecure-skip-tls-verify | Boolean | Whether to skip the server certificate verification. If the cluster type is externalCluster, the value is true.

Table 7 Data structure of the users field
Parameter | Type | Description
--- | --- | ---
name | String | The value is fixed to user.
user | user object | Stores the certificate information and ClientKey information of a specified user.

Table 8 Data structure of the user field
Parameter | Type | Description
--- | --- | ---
client-certificate-data | String | Client certificate.
client-key-data | String | Contains PEM encoding data from the TLS client key file.

Table 9 Data structure of the contexts field
Parameter | Type | Description
--- | --- | ---

name

String

Context name.

- If the publicIp parameter does not exist (that is, no EIP exists), there is only one cluster in the cluster list, and the value of this parameter is internal.
- If the publicIp parameter exists (that is, the EIP exists), there is more than one cluster in the cluster list, and the value of this parameter is external.

context | context object | Context information.

Table 10 Data structure of the context field
Parameter | Type | Description
--- | --- | ---
cluster | String | Cluster context.
user | String | User context.

Response example:

    {
        "kind": "Config",
        "apiVersion": "v1",
        "preferences": {},
        "clusters": [
            {
                "name": "internalCluster",
                "cluster": {
                    "server": "https://192.168.1.7:5443",
                    "certificate-authority-data": ""
                }
            }
        ],
        "users": [
            {
                "name": "user",
                "user": {
                    "client-certificate-data": "",
                    "client-key-data": ""
                }
            }
        ],
        "contexts": [
            {
                "name": "internal",
                "context": {
                    "cluster": "internalCluster",
                    "user": "user"
                }
            }
        ],
        "current-context": "internal"
    }

#### Status Code

Table 11 describes the status code of this API.

Table 11 Status code
Status Code | Description
--- | ---
200 | Certificates of the specified cluster are successfully obtained.

For details about error status codes, see Status Code.

Parent topic: Cluster Management