Configuración de la API
Puede utilizar la API de IBM Cloud® Kubernetes Service para crear y gestionar los clústeres de Kubernetes de comunidad o de Red Hat OpenShift. Para utilizar la CLI, consulte Configuración de la CLI.
Acerca de la API
La API de IBM Cloud Kubernetes Service automatiza el suministro y la gestión de los recursos de la infraestructura IBM Cloud para los clústeres para que las apps tengan los recursos de cálculo, de red y de almacenamiento que necesitan para ofrecer servicios a los usuarios.
La API es compatible con los distintos proveedores de infraestructura disponibles para que puedas crear clústeres. Para obtener más información, consulte la visión general del proveedor de infraestructura.
Puede utilizar la API de la versión dos (v2) para gestionar tanto los clústeres clásicos como los de VPC. La API v2 se ha diseñado para evitar que se interrumpa la funcionalidad existente siempre que sea posible. Sin
embargo, asegúrese de revisar las siguientes diferencias entre la API v1 y la API v2.
- Prefijo de punto final de API
- API de v1:
https://containers.cloud.ibm.com/global/v1 - API de v2:
https://containers.cloud.ibm.com/global/v2 - v3 API:
https://containers.cloud.ibm.com/global/v3 - Documentación de referencia de API
- v1 y v2 API
- v3 API.
- Estilo de arquitectura de la API
- API de v1: Representational State Transfer (REST) que se centra en los recursos con los que interactúa a través de métodos HTTP como
GET,POST,PUT,PATCHyDELETE. - API de v2: llamadas de procedimiento remoto (RPC) que se centran en acciones a través de los métodos HTTP
GETyPOSTúnicamente. - Plataformas de contenedor admitidas
- API de v1: utilice la API de IBM Cloud Kubernetes Service para gestionar los recursos de infraestructura de IBM Cloud, como nodos de trabajador, para los clústeres de Red Hat OpenShift y de Kubernetes de la comunidad.
- API de v2: utilice la API de IBM Cloud Kubernetes Service
v2para gestionar los recursos de infraestructura de IBM Cloud, como nodos de trabajador, para los clústeres de Red Hat OpenShift y de Kubernetes de la comunidad. - API de Kubernetes
- API de v1: para utilizar la API de Kubernetes con el objetivo de gestionar recursos de Kubernetes dentro del clúster, como pods y espacios de nombres, consulte Cómo trabajar con un clúster mediante la API de Kubernetes.
- API de v2: igual que
v1; consulte Cómo trabajar con un clúster mediante la API de Kubernetes. - API soportadas por tipo de infraestructura
- API de v1:
classic - API de v2:
vpcyclassic- El proveedor
vpcestá diseñado para dar soporte a varios subproveedores de VPC. El subproveedor de VPC admitido esvpc-gen2, que corresponde a un clúster de VPC para recursos de cálculo de Generación 2. - Las solicitudes específicas del proveedor tienen un parámetro path en el URL, como por ejemplo
v2/vpc/createCluster. Algunas API solo están disponibles para un proveedor determinado, como por ejemploGET vlanpara clásico oGET vpcspara VPC. - Las solicitudes que no dependen del proveedor pueden incluir un parámetro de cuerpo específico del proveedor que especifique, normalmente en JSON, como por ejemplo
{"provider": "vpc"}, si desea devolver respuestas solo para el proveedor especificado.
- El proveedor
- Respuestas de
GET - API de v1: el método
GETpara una colección de recursos (como por ejemploGET v1/clusters) devuelve los mismos detalles para cada recurso de la lista como un métodoGETpara un recurso individual (como por ejemploGET v1/clusters/{idOrName}). - API de v2: para devolver las respuestas más rápidamente, el método
GETde v2 para una colección de recursos (como por ejemploGET v2/clusters) devuelve únicamente un subconjunto de información que se detalla en un métodoGETpara un recurso individual (como por ejemploGET v2/clusters/{idOrName}). Algunas respuestas de lista incluyen una propiedad de proveedores que identifica si el elemento devuelto se aplica a la infraestructura clásica o de VPC. Por ejemplo, la listaGET zonesdevuelve algunos resultados comomon01que solo están disponibles en el proveedor de infraestructura clásica, mientras que otros resultados comous-south-01solo están disponibles en el proveedor de infraestructura de VPC. - Respuestas de clúster, de nodo trabajador y de agrupación de nodos trabajadores
- API de v1: las respuestas incluyen solo información específica del proveedor de infraestructura clásica, como las VLAN en las respuestas de trabajador y el clúster de
GET. - API de v2: la información devuelta depende del proveedor de infraestructura. Para las respuestas específicas del proveedor, puede especificar el proveedor en la solicitud. Por ejemplo, los clústeres de VPC no devuelven información de VLAN porque no tienen VLAN. En lugar de ello, devuelven información de subred y de red CIDR.
Automatización de despliegues de clústeres con la API
Puede utilizar la API de IBM Cloud Kubernetes Service para automatizar la creación, el despliegue y la gestión de clústeres de Kubernetes.
La API de IBM Cloud Kubernetes Service precisa de información de cabecera que debe proporcionar en su solicitud de la API y que depende del tipo de API utilizado. Para determinar qué información de encabezado se necesita para tu API, consulta la documentación de la API de IBM Cloud Kubernetes Service.
Para autenticarse con IBM Cloud Kubernetes Service, debe especificar su señal de IBM Cloud Identity and Access Management (IAM) que se genera con las credenciales de IBM Cloud y que incluye el ID de la cuenta de IBM Cloud en la que se ha creado el clúster. Dependiendo de la forma en que se autentique con IBM Cloud, puede elegir entre las siguientes opciones para automatizar la creación de la señal de IBM Cloud IAM.
- ID no federado
-
- Generar una clave API de IBM Cloud: como alternativa al uso del nombre de usuario y la contraseña de IBM Cloud, puede utilizar claves API de IBM Cloud. Las claves API de IBM Cloud dependen de la cuenta de IBM Cloud para la que se generan. No puede combinar la clave de API de IBM Cloud con un ID de cuenta diferente en la misma señal de IBM Cloud IAM. Para acceder a los clústeres que se han creado con una cuenta distinta de aquella en la que se basa la clave de API de IBM Cloud, debe iniciar una sesión en la cuenta para generar una nueva clave de API.
- Nombre de usuario y contraseña de IBM Cloud: Puede seguir los pasos de este tema para automatizar por completo la creación de la señal de acceso de IBM Cloud IAM.
- ID federado
-
- Generar una clave de API de IBM Cloud: las claves de API de IBM Cloud dependen de la cuenta de IBM Cloud para la que se generan. No puede combinar la clave de API de IBM Cloud con un ID de cuenta diferente en la misma señal de IBM Cloud IAM. Para acceder a los clústeres que se han creado con una cuenta distinta de aquella en la que se basa la clave de API de IBM Cloud, debe iniciar una sesión en la cuenta para generar una nueva clave de API.
- Utilizar un código de acceso de un solo uso: si se autentica con IBM Cloud utilizando un código de acceso de un solo uso, no puede automatizar completamente la creación de la señal de IBM Cloud IAM porque la recuperación de su código de acceso de un solo uso requiere una interacción manual con el navegador web. Para automatizar por completo la creación de la señal de IBM Cloud IAM, debe crear en su lugar una clave de API de IBM Cloud.
- Clave API: Para generar su IBM Cloud API key haga lo siguiente.
- En la barra de menús, pulse Gestionar > Acceso (IAM).
- Pulse la página Usuarios y, a continuación, selecciónese usted mismo.
- En el panel Claves de API, pulse Crear una clave de API de IBM Cloud.
- Especifique un Nombre y una Descripción para la clave de API y, a continuación, pulse Crear.
- Pulse Mostrar para ver la clave de API generada en su nombre.
- Copie la clave de API de forma que la pueda utilizar para recuperar su señal de acceso de IBM Cloud IAM.
-
Cree la señal de acceso de IBM Cloud IAM. La información del cuerpo incluida en la solicitud varía en función del método de autenticación de IBM Cloud que utilice.
POST https://iam.cloud.ibm.com/identity/token- Cabecera
-
Content-Type: application/x-www-form-urlencodedAuthorization: Basic Yng6Yng=dondeYng6Yng=equivale a la autorización de codificación URL para el nombre de usuario bx y la contraseña bx.
- Cuerpo para el nombre de usuario y la contraseña de IBM Cloud
-
grant_type: passwordusername: su nombre de usuario de IBM Cloud.password: Su contraseña de IBM Cloud.
- Cuerpo para las claves de API de IBM Cloud
-
grant_type: urn:ibm:params:oauth:grant-type:apikeyapikey: Su clave de API de IBM Cloud
- Cuerpo para el código de acceso único de IBM Cloud
-
grant_type: urn:ibm:params:oauth:grant-type:passcodepasscode: Su código de acceso puntual de IBM Cloud. Ejecuteibmcloud login --ssoy siga las instrucciones de la salida de la CLI para recuperar el código de acceso puntual mediante su navegador web.
El ejemplo siguiente muestra la salida de la petición anterior.
{ "access_token": "<iam_access_token>", "refresh_token": "<iam_refresh_token>", "token_type": "Bearer", "expires_in": 3600, "expiration": 1493747503 "scope": "ibm openid" }Puede encontrar el token IAM de IBM Cloud en el campo
access_tokende la salida de su API. Anote la señal de IBM Cloud IAM para recuperar información de cabecera adicional en los pasos siguientes. -
Recupere el ID de la cuenta de IBM Cloud con la que desee trabajar. Sustituye
TOKENpor el token IAM de IBM Cloud que has obtenido del campoaccess_tokende la salida de la API en el paso anterior. En la salida de la API, puede encontrar el ID de su cuenta de IBM Cloud en el campo resources.metadata.guid.GET https://accounts.cloud.ibm.com/coe/v2/accounts- Cabecera
-
Content-Type: application/jsonAuthorization: bearer TOKENAccept: application/json
El ejemplo siguiente muestra la salida de la petición anterior.
{ "next_url": null, "total_results": 5, "resources": [ { "metadata": { "guid": "<account_ID>", "url": "/coe/v2/accounts/<account_ID>", "created_at": "2016-09-29T02:49:41.842Z", "updated_at": "2018-08-16T18:56:00.442Z", "anonymousId": "1111a1aa1a1111a1aa11aa11111a1111" }, "entity": { "name": "<account_name>", -
Genere una nueva señal de IBM Cloud IAM que incluya sus credenciales de IBM Cloud y el ID de la cuenta con el que desea trabajar.
Si utiliza una clave de API de IBM Cloud, debe utilizar el ID de cuenta de IBM Cloud y la clave de API se ha creado para la misma. Para acceder a clústeres de otras cuentas, inicia sesión en esta cuenta y crea una clave de API de IBM Cloud basada en esta cuenta.
POST https://iam.cloud.ibm.com/identity/token- Cabecera
-
Content-Type: application/x-www-form-urlencodedAuthorization: Basic Yng6Yng=dondeYng6Yng=equivale a la autorización de codificación URL para el nombre de usuario bx y la contraseña bx.
- Cuerpo para el nombre de usuario y la contraseña de IBM Cloud
-
grant_type: passwordusername: su nombre de usuario de IBM Cloud.password: Su contraseña de IBM Cloud.bss_account: el ID de cuenta de IBM Cloud que ha recuperado en el paso anterior.
- Cuerpo para las claves de API de IBM Cloud
-
grant_type: urn:ibm:params:oauth:grant-type:apikeyapikey: Su clave de API de IBM Cloud.bss_account: el ID de cuenta de IBM Cloud que ha recuperado en el paso anterior.
- Cuerpo para el código de acceso único de IBM Cloud
-
grant_type: urn:ibm:params:oauth:grant-type:passcodepasscode: su código de acceso de IBM Cloud.bss_account: el ID de cuenta de IBM Cloud que ha recuperado en el paso anterior.
El ejemplo siguiente muestra la salida de la petición de API.
{ "access_token": "<iam_token>", "refresh_token": "<iam_refresh_token>", "token_type": "Bearer", "expires_in": 3600, "expiration": 1493747503 }Puedes encontrar el token IAM IBM Cloud en el campo y
access_tokenel token de actualización en el camporefresh_tokende la salida de tu API. -
Obtenga una lista de todos los clústeres clásicos o de VPC de su cuenta. Si desea ejecutar solicitudes de API de Kubernetes en un clúster, asegúrese de anotar el nombre o el ID del clúster con el que desea trabajar. Solicitud de ejemplo para listar clústeres clásicos.
GET https://containers.cloud.ibm.com/global/v2/classic/getClusters- Cabecera
Authorization: bearer <iam_token>
Mandato de ejemplo para listar clústeres de VPC.
GET https://containers.cloud.ibm.com/global/v2/vpc/getClusters?provider=vpc-gen2- Cabecera
Authorization: la señal de acceso de IBM Cloud IAM (bearer <iam_token>).
-
Consulte la documentación de la API IBM Cloud Kubernetes Service para obtener una lista de las API compatibles.
Cuando utilice la API para la automatización, asegúrese de basarse en las respuestas de la API, no en los archivos de dichas respuestas. Por ejemplo, el archivo de configuración de Kubernetes del contexto de clúster está sujeto a cambios, por
lo que no debe basar la automatización en ningún contenido específico de este archivo al utilizar la llamada GET /v1/clusters/{idOrName}/config.
Cómo trabajar con el clúster utilizando la API de Kubernetes
Puedes usar la API Kubernetes para interactuar con tu clúster en IBM Cloud Kubernetes Service.
Las instrucciones siguientes requieren acceso a la red pública en el clúster para conectar con el punto final de servicio en la nube público del nodo maestro de Kubernetes.
-
Siga los pasos descritos en Automatización de implementaciones de clústeres con la API para obtener su token de acceso de IAM de IBM Cloud, su clave de API de IBM Cloud, el ID del clúster en el que desea realizar las solicitudes de la API de Kubernetes y la región de IBM Cloud Kubernetes Service en la que se encuentra su clúster.
-
Recupere un ID de IAM, un acceso de IAM y un token de actualización de IAM de IBM Cloud utilizando la clave de API de IBM Cloud. En la salida de la API, encontrarás el token de identificación de IAM en el campo
id_token, el token de acceso de IAM en elaccess_tokencampo y el token de actualización de IAM en elrefresh_tokencampo.POST https://iam.cloud.ibm.com/identity/token- Cabecera
-
Content-Type: application/x-www-form-urlencodedAuthorization: Basic a3ViZTprdWJla3ViZTprdWJlequivale a la autorización codificada con URL para el nombre de usuario ykubela contraseñakube.
- Cuerpo
-
grant_type: urn:ibm:params:oauth:grant-type:apikeyapikey:Su clave de API de IBM Cloud.
En el ejemplo siguiente se muestra la salida de la solicitud de API anterior.
{ "access_token": "<iam_access_token>", "id_token": "<iam_id_token>", "refresh_token": "<iam_refresh_token>", "token_type": "Bearer", "expires_in": 3600, "expiration": 1553629664, "refresh_token_expiration": 1761334993, "scope": "ibm openid containers-kubernetes" }Alternativamente, utilizando el comando CLI
ibmcloud ks cluster config --cluster <cluster_name> --output jsonse mostrará elid_tokeny elrefresh_token. -
Antes de poder acceder a su clúster con su identidad actual, debe ejecutar la siguiente solicitud.
POST https://containers.cloud.ibm.com/global/v2/applyRBAC- Cabecera
Authorization: bearer <TOKEN>Tu token de acceso IAM de IBM Cloud- Cuerpo
cluster: <cluster_name_or_ID>
-
Ten en cuenta que la sincronización RBAC es asíncrona, así que ejecuta la siguiente petición hasta que se haya sincronizado.
GET https://containers.cloud.ibm.com/global/v2/getRBACStatus?cluster=<cluster_name_or_ID>
-H "Autorización: ${BEARER2} " ``` Header : Authorization: bearer <TOKEN> Your IBM Cloud IAM access token
Example response. Ensure the output shows `synchronized:true`.
```json {: screen}
{"synchronized":true,"error":false}
```
-
Recupere el URL del punto final de servicio predeterminado para el nodo maestro de Kubernetes mediante la señal de acceso de IAM y el nombre o el ID del clúster. Encontrará el URL en el valor
masterURLde la salida de la API.Si solo el punto final de servicio en la nube público o solo el punto final de servicio en la nube privado está habilitado para el clúster, dicho punto final se muestra como
masterURL. Si tanto el punto final de servicio en la nube público como el privado están habilitados para el clúster, el punto final de servicio en la nube público se muestra de forma predeterminada para elmasterURL. Para utilizar en su lugar el punto final de servicio en la nube privado, busque el URL en el campoprivateServiceEndpointURLde la salida.GET https://containers.cloud.ibm.com/global/v2/getCluster?cluster=<cluster_name_or_ID>- Cabecera
-
Authorization: Su señal de acceso de IBM Cloud IAM.
- Vía de acceso
-
<cluster_name_or_ID>: el nombre o el ID del clúster que ha recuperado con la API deGET https://containers.cloud.ibm.com/global/v2/classic/getClustersoGET https://containers.cloud.ibm.com/global/v2/vpc/getClusters?provider=vpc-gen2en Automatización de despliegues de clúster con la API.
En el siguiente ejemplo se muestra la salida correspondiente a una solicitud de punto final de servicio de nube pública.
... "etcdPort": "31593", "masterURL": "https://c2.us-south.containers.cloud.ibm.com:30422", "ingress": { ...}En el siguiente ejemplo se muestra la salida correspondiente a una solicitud de punto final de servicio de nube privada.
... "etcdPort": "31593", "masterURL": "https://c2.private.us-south.containers.cloud.ibm.com:30422", "ingress": { ...} -
Para utilizar un punto final de servicio de nube privado, primero debe exponer el punto final de servicio de nube privada utilizando una IP de equilibrador de carga que se pueda direccionar desde la conexión VPN a la red privada.
-
Ejecute solicitudes de API de Kubernetes en el clúster utilizando la señal de ID de IAM que ha recuperado anteriormente. Por ejemplo, liste la versión de Kubernetes que se ejecuta en el clúster.
Si ha habilitado la verificación de certificados SSL en la infraestructura de prueba de API, asegúrese de inhabilitar esta característica.
GET <masterURL>/api- Cabecera
-
Authorization: bearer <id_token>
- Vía de acceso
-
<masterURL>: el punto final de servicio del maestro de Kubernetes que ha recuperado en el paso anterior.
En el ejemplo siguiente se muestra la salida de la solicitud de API anterior.
{ "kind": "APIVersions", "versions": [ "v1" ], "serverAddressByClientCIDRs": [ { "clientCIDR": "0.0.0.0/0", "serverAddress": "xxx.xx.x.x:xxxx" } ] } -
Consulta la documentación de la API Kubernetes para encontrar una lista de las API compatibles con la última versión Kubernetes. Asegúrese de utilizar la documentación de la API que coincida con la versión de Kubernetes del clúster. Si no utiliza la última versión de Kubernetes, añada su versión al final del URL. Por ejemplo, para acceder a la documentación de la API para la versión 1.12, añada
v1.12.
Actualización de tokens de acceso de IAM mediante la API
Cada señal de acceso de IBM Cloud Identity and Access Management (IAM) que se emite mediante la API caduca transcurrida una hora. Debe renovar la señal de acceso de forma periódica para garantizar el acceso a la API de IBM Cloud.
Antes de empezar, asegúrese de que dispone de una clave de API IBM Cloud que pueda utilizar para solicitar un nuevo token de acceso.
Siga los siguientes pasos si desea obtener un nuevo token IAM de IBM Cloud.
-
Genere un nuevo token de acceso IAM de IBM Cloud utilizando la clave API de IBM Cloud.
POST https://iam.cloud.ibm.com/identity/token- Cabecera
-
Content-Type: application/x-www-form-urlencoded
- Cuerpo
-
grant_type: urn:ibm:params:oauth:grant-type:apikeyapikey:Su clave de API de IBM Cloud.
En el ejemplo siguiente se muestra la salida de la solicitud de API anterior.
{ "access_token": "<iam_token>", "refresh_token": "<iam_refresh_token>", "token_type": "Bearer", "expires_in": 3600, "expiration": 1493747503, "scope": "ibm openid" }Puede encontrar su nuevo token IAM de IBM Cloud en el campo
access_tokende la salida de su API. -
Sigue trabajando con la documentación de la API de IBM Cloud Kubernetes Service utilizando el token del paso anterior.