Utilización de Kubernetes con Code Engine
IBM Cloud® Code Engine está diseñado para que no necesite interactuar con la tecnología subyacente en la que se basa. Sin embargo, si tiene herramientas existentes basadas en Kubernetes o Knative, puede seguir utilizándolas con Code Engine. Code Engine da soporte a las API de Kubernetes (y a Knative) y sus mandatos de CLI. Para obtener más información sobre Knative, consulte Utilización de Knative con Code Engine.
Si decides utilizar Kubernetes junto con Code Engine, ten en cuenta la siguiente información:
- La mayoría de los contenedores o pods que se ejecutan en Kubernetes también se ejecutan en Code Engine.
- Las construcciones de Kubernetes como, por ejemplo, los despliegues, se ejecutan en Code Engine si no utilizan funciones en todo el clúster, como las políticas de seguridad. Code Engine tiene como ámbito lo que puede ejecutarse en un espacio de nombres de Kubernetes.
Code Engine no da soporte a recursos específicos de OpenShift ni a otras plataformas de orquestación de contenedor como, por ejemplo, Docker Swarm o Compose Swarm.
Instalación de la interfaz de línea de mandatos de Kubernetes
Para instalar la CLI de « Kubernetes », descarga e instala la CLI de « kubectl ».
Asegúrese de añadir el binario kubectl a la variable de entorno PATH del sistema.
Interacción con la API de Kubernetes
Para interactuar con el proyecto desde la interfaz de línea de mandatos de Kubernetes, kubectl, o con Knative, kn debe configurar el entorno para interactuar con la API de Kubernetes de Code Engine.
Antes de empezar
- Debe crear el proyecto y el proyecto debe estar en estado
active(Preparado). - Instale la CLI de Kubernetes (
kubectl) y la CLI de Knative (kn).
Puede configurar el entorno de las formas siguientes.
-
Puede añadir la opción
--kubecfga su mandatoproject select. Por ejemplo:ibmcloud ce project select --name PROJECT_NAME --kubecfg -
Puede exportar el archivo
kubeconfigdirectamente. Ejecute el mandatoibmcloud ce project currentpara localizar su proyecto de destino actual. Este mandato también devuelve el mandatoexportpara el archivokubeconfig. Por ejemplo:ibmcloud ce project currentSalida de ejemplo
Getting the current project context... OK Name: myproject ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Subdomain: aabon2dfwa0 Domain: us-south.codeengine.appdomain.cloud Region: us-south Kubectl Context: 4svg40kna19 Kubernetes Config: Context: aabon2dfwa0 Environment Variable: export KUBECONFIG=/user/myusername/.bluemix/plugins/code-engine/myproject-01234567-abcd-abcd-abcd-abcdabcd1111.yamlA continuación, copie el mandato de exportación, péguelo en la interfaz de línea de mandatos y ejecútelo.
Verifique el entorno esté correctamente configurado ejecutando el mandato kubectl config.
kubectl config current-context
Si el contexto está correctamente establecido, la salida coincide con el valor de Kubectl Context del proyecto. Por ejemplo, si el valor de Kubectl Context del proyecto es 4svg40kna19, el mandato devuelve
4svg40kna19.
Para obtener más información sobre Kubernetes y cómo funciona con la arquitectura Code Engine, consulte Información sobre la arquitectura de Code Engine y el aislamiento de cargas de trabajo.
Autorizaciones de acceso necesarias para trabajar con la API de Kubernetes
Después de configurar el entorno, puede interactuar con la API de Kubernetes. Debe tener el nivel de autorización correcto para tareas específicas. Estos roles se establecen en la gestión de identidad y acceso. Consulte roles de servicio de IBM Cloud.
| Recurso | Rol de gestor | Rol de escritor | Rol de lector |
|---|---|---|---|
serviceaccounts |
get, list, watch |
get, list, watch |
Ninguna |
secrets |
get, list, watch, create, delete, update, patch, apply, edit |
get, list, watch, create, delete, update, patch, apply, edit |
Ninguna |
configmaps |
get, list, watch, create, delete, update, patch, apply, edit |
get, list, watch, create, delete, update, patch, apply, edit |
Ninguna |
events |
get, list, watch |
get, list, watch |
Ninguna |
pods/log |
get, list, watch |
get, list, watch |
get, list, watch |
pods |
get, list, watch, create, delete, patch, apply |
get, list, watch, create, delete, patch, apply |
get, list, watch |
services |
get, list, watch, create, delete, patch, apply |
get, list, watch, create, delete, patch, apply |
get, list, watch |
pods/exec |
create |
create |
Ninguna |
pods/portforward |
create |
create |
Ninguna |
pods/attach |
create |
Ninguna | Ninguna |
pods/status |
get, list |
get, list |
Ninguna |
resourcequotas |
get, list, watch |
get, list, watch |
get, list, watch |
limitranges |
get, list, watch |
get, list, watch |
Ninguna |
deployments |
get, list, watch, create, delete, patch, apply |
get, list, watch, create, delete, patch, apply |
get, list, watch |
daemonset |
get, list, watch |
get, list, watch |
get, list, watch |
pods.metrics.k8s.io |
list | list | list |
Recuperación de la configuración de Kubernetes
Puede recuperar la configuración de Kubernetes con la API REST o la CLI deCode Engine.
Recuperación de la configuración de Kubernetes con la API REST
Para recuperar la configuración de Kubernetes con la API REST,
- Autentíquese con IBM Cloud® Identity and Access Management (IAM) para recibir una señal de acceso de IAM.
- Consulte el catálogo de IBM Cloud y el controlador de recursos de IBM Cloud para recibir un GUID para su proyecto.
- Utilice la API de IBM Cloud Code Engine para recibir una configuración de Kubernetes.
Autenticación con Cloud Identity and Access Management
Cree la señal de acceso de IBM Cloud IAM realizando una solicitud POST a https://iam.cloud.ibm.com/identity/token.
Determinación del GUID del proyecto de Code Engine
Determine el GUID del proyecto de Code Engine consultando el catálogo de IBM Cloud y IBM Cloud. Como este GUID no cambia, solo debe realizar este paso una vez. Si ya conoce el GUID de su proyecto de Code Engine, puede omitir este paso.
Para utilizar la CLI de Code Engine para descubrir el GUID del proyecto Code Engine, realice los pasos siguientes.
-
Inicie una sesión en IBM Cloud y elija como destino una región, una cuenta y un grupo de recursos.
ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP -
Ejecute el mandato
ibmcloud resource.ibmcloud resource service-instances --service-name codeengine --long -
Identifique la instancia de servicio que representa su proyecto de Code Engine y determine el GUID a partir de la salida.
Para utilizar la API REST para descubrir el GUID del proyecto Code Engine, realice los pasos siguientes.
Antes de empezar, debe tener el valor de access_token del paso anterior.
-
Utilice el siguiente método de API de catálogo IBM Cloud: Devuelve entradas de catálogo padre.
Salida de ejemplo
curl -X GET \ 'https://globalcatalog.cloud.ibm.com/api/v1?include=*&q=name:codeengine+active:true' \ -H 'Authorization: Bearer ACCESS_TOKEN'Identifique el ID de recurso exclusivo en la lista de recursos. El nombre del campo es
IDy la vía de acceso JSON esresources[].id. -
Realiza una consulta al controlador de recursos « IBM Cloud » mediante el método de la API del controlador de recursos « IBM Cloud » para obtener una lista de todas las instancias de recursos. Debe tener un nombre de proyecto de Code Engine, la región en la que reside el proyecto y el ID de recurso exclusivo de Code Engine en el catálogo global. Utilice el nombre de su proyecto de Code Engine como el parámetro de la consulta.
Salida de ejemplo
curl -X GET \ 'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \ -H 'Authorization: Bearer ACCESS_TOKEN' -
Identifique el proyecto de Code Engine de su región en la lista de resultados. Localice en la salida el
guidque utilizará en los pasos siguientes.
Consulta de la API de IBM Code Engine
Antes de empezar, debe tener la siguiente información.
- El valor de
access_tokeny derefresh_tokende los pasos anteriores. - El
guidde su proyecto de Code Engine. - La región en la que se encuentra el proyecto de Code Engine.
Utiliza el get kubeconfig for the specified projectCode Engine método de la API para obtener la configuración de Kubernetes.
Salida de ejemplo
curl -X GET \
'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN'
Recupera la configuración de « Kubernetes » mediante la CLI de « Code Engine »
-
Inicie una sesión en IBM Cloud y elija como destino una región, una cuenta y un grupo de recursos.
ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP -
Cree el proyecto de Code Engine:
ibmcloud ce project create --name PROJECT -
Seleccione el proyecto de Code Engine como el contexto y añada el proyecto al archivo de configuración de Kubernetes predeterminado.
ibmcloud ce project select --name PROJECT --kubecfg
Ahora está listo para utilizar los mandatos kubectl con el proyecto.
Para obtener más información sobre cómo utilizar las API de Code Engine, la API de Kubernetes y kubectl, consulte los temas siguientes,
Definición de recurso personalizado (CRD)
En las secciones siguientes se muestran los métodos de definición de recursos personalizados que se utilizan con Code Engine.
Métodos CRD por lotes
Puede utilizar CRD por lotes cuando Trabajar con trabajos y trabajos se ejecuta en Code Engine.
| Grupo | Versión | Tipo |
|---|---|---|
codeengine.cloud.ibm.com |
v1beta1 | JobDefinition |
codeengine.cloud.ibm.com |
v1beta1 | JobRun |
Después de recuperar la configuración de Kubernetes, puede ver los detalles de CRD por lotes con los métodos siguientes.
- Utilice
kubectl explain --api-version='codeengine.cloud.ibm.com/v1beta1' <Kind>. - Descarga la especificación de los CRD en formato Swagger o «
OpenAPI».
Tenga en cuenta que no puede suprimir una ejecución de trabajo sin suprimir también los pods asociados. Se rechaza cualquier intento de supresión con la opción propagationPolicy=Orphan.
Métodos CRD de función
Puede utilizar CRD de función cuando Trabajar con funciones en Code Engine.
| Grupo | Versión | Tipo |
|---|---|---|
codeengine.cloud.ibm.com |
v1beta1 | Function |
Métodos de CRD de servicio
Puede utilizar CRD de servicio al Trabajar con aplicaciones en Code Engine.
| Grupo | Versión | Tipo |
|---|---|---|
serving.knative.dev |
v1 | Configuration |
serving.knative.dev |
v1 | Revision |
serving.knative.dev |
v1 | Route |
serving.knative.dev |
v1 | Service |
Para obtener más información sobre estos CRD, consulta la especificación de la API de Knative Serving.
Métodos CRD de origen a imagen
Puede utilizar CRD de origen a imagen cuando Trabajar con compilaciones y compilaciones se ejecuta en Code Engine.
| Grupo | Versión | Tipo |
|---|---|---|
shipwright.io |
v1beta1 | Build |
shipwright.io |
v1beta1 | BuildRun |
Después de recuperar la configuración de Kubernetes, puede ver los detalles de CRD de origen a imagen utilizando uno de los métodos siguientes.
- Utilice
kubectl explain --api-version='shipwright.io/v1beta1' <KIND>. - Descarga la especificación Swagger o «
OpenAPI» de los CRD.
Métodos de CRD de suscripción
Puede utilizar CRD de suscripción cuando Trabajar con suscripciones en Code Engine.
| Grupo | Versión | Tipo |
|---|---|---|
sources.codeengine.cloud.ibm.com |
v1alpha1 | CosSource |
sources.knative.dev |
v1beta1 | KafkaSource |
sources.knative.dev |
v1 | PingSource |
Después de recuperar la configuración de Kubernetes, puede ver los detalles de CRD de suscripción utilizando uno de los métodos siguientes.
- Utilice
kubectl explain --api-version='sources.knative.dev/<VERSION>' <KIND>. - Descarga la especificación Swagger o «
OpenAPI» de los CRD.