IBM Cloud Docs
Conexión de Event Streams a IBM Cloud Object Storage utilizando Kubernetes Service

Conexión de Event Streams a IBM Cloud Object Storage utilizando Kubernetes Service

Consigue que el tiempo de ejecución de Kafka Connect se ejecute en un clúster Kubernetes Service. A continuación, inicie el IBM Cloud® Object Storage Sink Connector para archivar datos de temas Kafka en Event Streams a una instancia del servicio IBM Cloud® Object Storage.

El conector consume lotes de mensajes de Kafka y sube los datos del mensaje como objetos a un grupo en el servicio Cloud Object Storage.

Paso 1. Instalar los requisitos previos

Asegúrese de que se hayan instalado el software y los servicios siguientes:

  • Una instancia de Event Streams: plan Estándar o Empresa. Es necesario crear credenciales.

  • Una instancia del servicio Cloud Object Storage con al menos un grupo.

  • Un clúster de IBM Cloud® Kubernetes Service. Puede suministrar uno gratuito para llevar a cabo pruebas.

    También necesita acceso de CLI a su clúster. Para obtener más información, consulte Configuración de la CLI y la API.

  • Una versión reciente de kubectl.

  • Git

Paso 2. Clonar los repositorios de kafka-connect

Clone los dos repositorios siguientes que contienen los archivos necesarios:

Paso 3. Cree la configuración de Kafka Connect

  1. Debe configurar esta configuración sólo una vez. Event Streams la almacena para su uso futuro.

    Desde el proyecto event-streams-samples, navega hasta el archivo kafka-connect/IKS directory, editar el archivo connect-distributed.properties, y reemplazar <BOOTSTRAP_SERVERS> en un lugar y <APIKEY> en tres lugares con sus credenciales de Event Streams.

    Proporcione <BOOTSTRAP_SERVERS> como una lista separada por comas. Si no son válidos, obtiene un error.

    Su <APIKEY> aparece en texto simple en su máquina, pero es secreto cuando se envía a IBM Cloud® Kubernetes Service.

    Kafka Connect puede conectar varios trabajadores por razones de fiabilidad y escalabilidad. Si su clúster de Kubernetes Service tiene más de un nodo y quiere varios trabajadores de Connect, edite el archivo kafka-connect.yaml y edite la entrada replicas: 1.

  2. A continuación, ejecute los mandatos siguientes:

    Ejecute el mandato siguiente para crear un secreto:

    kubectl create secret generic connect-distributed-config --from-file=connect-distributed.properties
    

    Ejecute el mandato siguiente para crear un mapa de configuración:

    kubectl create configmap connect-log4j-config --from-file=connect-log4j.properties
    

Paso 4. Desplegar Kafka Connect

Aplique la configuración en el archivo kafka-connect.yaml ejecutando el mandato siguiente:

kubectl apply -f ./kafka-connect.yaml

Paso 5. Validar que Kafka Connect se está ejecutando

Para validar que Kafka Connect se está ejecutando, el reenvío de puerto en el servicio kafkaconnect se realiza en el puerto 8083, como en el ejemplo siguiente:

kubectl port-forward service/kafkaconnect-service 8083

Mantenga abierto el terminal que ha utilizado para el reenvío de puertos y utilice otro terminal para los pasos siguientes.

La API REST de Connect está disponible en http://localhost:8083. Si desea más información sobre la API, consulte Interfaz REST deKafka Connect.

Por lo tanto, ahora tiene el tiempo de ejecución de Kafka Connect que se despliega y se ejecuta en Kubernetes Service. A continuación, configure e inicie el conector Object Storage.

Paso 6. Configurar el archivo JSON de cos-sink

Edite el archivo cos-sink.json ubicado en kafka-connect-ibmcos-sink/config/ para que, como mínimo, las propiedades necesarias se completen con la información. Aunque las propiedades de configuración cos.object.deadline.seconds, cos.interval.seconds y cos.object.records se enumeran como opcionales, debe establecer al menos una de estas propiedades en un valor no predeterminado.

Propiedades del archivo cos-sink.json

Sustituya los marcadores de posición del archivo cos-sink.json por sus propios valores.

Propiedades del archivo cos-sink.json
Propiedades de archivo Descripción
cos.api.key Obligatorio. Clave de API utilizada para conectarse a la instancia de servicio de Cloud Object Storage.
cos.bucket.location Obligatorio. Ubicación del grupo de servicio de Cloud Object Storage. Por ejemplo, para un grupo regional eu-gb o para un grupo global eu.
cos.bucket.name Obligatorio. Nombre del grupo de servicios Cloud Object Storage en el que grabar los datos.
cos.bucket.resiliency Obligatorio. Resiliencia del grupo de Cloud Object Storage. Debe ser: cross-region, regional o single-site.
cos.service.crn Obligatorio. CRN para la instancia de servicio de Cloud Object Storage. Asegúrese de que especifica el CRN correcto: es el ID de instancia de recurso que termina con dos puntos, por ejemplo, crn:v1:staging:public:cloud-object-storage:global:a/8c226dc8c8bfb9bc3431515a16957954:b25fe12c-9cf5-4ee8-8285-2c7e6ae707f6::.
cos.endpoint.visibility Opcional. Especifique public para conectarse al servicio de nube Object Storage a través de Internet público. Especifique privado para conectarse desde un conector que se ejecuta dentro de la red IBM Cloud, por ejemplo, desde un clúster de IBM Cloud Kubernetes Service. El valor predeterminado es Public.
cos.object.deadline.seconds Opcional. El número de segundos (medido como en un reloj de pared para la instancia de la tarea de conexión) entre la lectura del primer registro de Kafka y la grabación de todos los registros leídos hasta el momento en un objeto de Cloud Object Storage. Esta propiedad puede ser útil en situaciones que tienen largas pausas entre los registros de Kafka que se producen a un tema. Garantiza que los registros recibidos por este conector se escriban siempre en Object Storage dentro del tiempo especificado.
cos.object.interval.seconds Opcional. El número de segundos (medido por las indicaciones de fecha y hora en los registros de Kafka) entre la lectura del primer registro de Kafka y la grabación de todos los registros leídos hasta el momento en un objeto de Cloud Object Storage.
cos.object.records Opcional. El número máximo de registros de Kafka que se deben combinar en un objeto.

Obtener credenciales de Object Storage que utilizan la consola de IBM Cloud

  1. Localice el servicio de Object Storage en el panel de control.
  2. Pulse el mosaico del servicio.
  3. Pulse Credenciales de servicio.
  4. Pulse Nueva credencial.
  5. Especifique los detalles de la nueva credencial, por ejemplo, un nombre y un rol y, a continuación, pulse Añadir. Aparece una nueva credencial en la lista de credenciales.
  6. Pulse esta credencial utilizando Ver credenciales para revelar los detalles en formato JSON.

Paso 7. Inicie el conector con su configuración

Ejecute el mandato siguiente para iniciar el conector Object Storage con la configuración que ha proporcionado en el paso anterior.

curl -X POST -H "Content-Type: application/json" http://localhost:8083/connectors --data "@./cos-sink.json"

Paso 8. Supervisar el conector

Puedes comprobar tu conector accediendo a la siguiente dirección.

http://localhost:8083/connectors/cos-sink/status

Si el estado del conector no es En ejecución, reinicie el conector.

Paso 9. Suprimir el conector

Puede utilizar el mandato siguiente para suprimir un conector.

curl -X DELETE
http://localhost:8083/connectors/cos-sink