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

Puede configurar el entorno de las formas siguientes.

  • Puede añadir la opción --kubecfg a su mandato project select. Por ejemplo:

    ibmcloud ce project select --name PROJECT_NAME --kubecfg
    
  • Puede exportar el archivo kubeconfig directamente. Ejecute el mandato ibmcloud ce project current para localizar su proyecto de destino actual. Este mandato también devuelve el mandato export para el archivo kubeconfig. Por ejemplo:

    ibmcloud ce project current
    

    Salida 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.yaml
    

    A 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.

AutoridadesKubernetes
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,

  1. Autentíquese con IBM Cloud® Identity and Access Management (IAM) para recibir una señal de acceso de IAM.
  2. Consulte el catálogo de IBM Cloud y el controlador de recursos de IBM Cloud para recibir un GUID para su proyecto.
  3. 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.

  1. 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
    
  2. Ejecute el mandato ibmcloud resource.

    ibmcloud resource service-instances --service-name codeengine --long
    
  3. 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.

  1. 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 ID y la vía de acceso JSON es resources[].id.

  2. 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'
    
  3. Identifique el proyecto de Code Engine de su región en la lista de resultados. Localice en la salida el guid que 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_token y de refresh_token de los pasos anteriores.
  • El guid de 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 »

  1. 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
    
  2. Cree el proyecto de Code Engine:

    ibmcloud ce project create --name PROJECT
    
  3. 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.

CRD por lotes para 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.

  1. Utilice kubectl explain --api-version='codeengine.cloud.ibm.com/v1beta1' <Kind>.
  2. 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.

CRD de función para 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.

Servicio de CRD para 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.

CRD de origen a imagen para 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.

Métodos de CRD de suscripción

Puede utilizar CRD de suscripción cuando Trabajar con suscripciones en Code Engine.

CRD de suscripción para 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.