Saltar al contenido

API de punto final para implementar MSSQL en Kyma Runtime

Este tutorial espera que se complete el tutorial de implementación de MSSQL en Kyma Runtime y depende de la ejecución de la base de datos localmente o dentro del tiempo de ejecución de Kyma. Si ejecuta la base de datos durante el tiempo de ejecución de Kyma, asegúrese de port-forward una característica presentada en el tutorial para exponer la base de datos a su entorno local.

El uso de la imagen incluye:

  • Secreto de Kubernetes para almacenar el usuario / contraseña de la base de datos
  • A Kubernetes ConfigMap para almacenar la configuración de la base de datos en
  • El servicio de Kubernetes se utiliza para exponer la aplicación Go a otros recursos de Kubernetes.
  • Un Kyma APIRule exponer la API a Internet

Paso 1: clonar el repositorio de Git

  1. Copie la URL del repositorio.

En su navegador, vaya a kyma-runtime-extension-examples. Este repositorio contiene una colección de aplicaciones Kyma de muestra que se utilizarán durante el tutorial.

Selecciona el Código y seleccione una de las opciones para descargar el código localmente o ejecute el siguiente comando dentro de su CLI en la ubicación de la carpeta que desee:

git clone https://github.com/SAP-samples/kyma-runtime-extension-samples

Hecho

Inicie sesión para responder la pregunta

Paso 2: examinar la muestra

  1. Abre el api-mssql-go directorio en el editor que necesita.

  2. Examine el contenido de la muestra.

  3. Dentro de cmd/api directorio, puedes encontrar main.go que es el principal punto de entrada de la aplicación Go.

  4. El es docker El Dockerfile utilizado para generar una imagen de Docker está en el directorio. La imagen se crea en dos pasos para crear una imagen con un tamaño de archivo pequeño.

    En el primer paso, se utiliza una imagen de Go. Copia el contenido relacionado del proyecto en la imagen y crea la aplicación. Luego, la aplicación incorporada se copia en Docker scratch imagen y exposición en el puerto 8000. Una scratch la imagen es una imagen en blanco sin otras herramientas, por lo que no se puede obtener una sesión de shell / bash. Si se desea, se podrían mencionar las siguientes líneas para construir una imagen con herramientas más completas, pero esto da como resultado una imagen más grande.

    FROM scratch
    WORKDIR /app
    COPY --from=builder /app/api-mssql-go /app/
    
  5. El es internal El resto de la aplicación Go está en el directorio, que se divide en tres paquetes: api, config y db. Explore estos materiales para comprender la estructura y la funcionalidad.

  6. Dentro de k8s un directorio donde puede encontrar los recursos de Kubernetes / Kyma que aplicará a su tiempo de ejecución de Kyma.

  7. Dentro de la raíz puedes encontrar go.mod y go.sum archivos utilizados para gestionar las dependencias utilizadas por la aplicación.

Hecho

Inicie sesión para responder la pregunta

Paso 3: Ejecute la aplicación localmente

Ejecute los siguientes comandos desde api-mssql-go directorio usando su CLI.

  1. La aplicación espera que las siguientes variables ambientales se establezcan según sea necesario para la conexión de la base de datos. Asegúrese de ajustarlos a su entorno. Revise el tutorial de implementación de MSSQL en Kyma Runtime para obtener las distintas configuraciones para ejecutar la base de datos.

    export MYAPP_username=sa
    export MYAPP_password=Yukon900
    export MYAPP_database=DemoDB
    export MYAPP_host=localhost
    export MYAPP_port=1433
    
  2. Para ejecutar la aplicación, use el siguiente comando:

    go run ./cmd/api/main.go
    
  3. La aplicación está disponible en http: // localhost: 8000 / comandos. Puede utilizar una herramienta como curl para probar los diferentes métodos HTTP, por ejemplo:

    Para OBTENER detalles:

    curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://localhost:8000/orders
    

    Para PUBLICAR detalles:

    curl --data '{"order_id":"10000003","description":"test from curl"}' http://localhost:8000/orders
    

Hecho

Inicie sesión para responder la pregunta

Paso 4: toma la imagen del Docker

Ejecute los siguientes comandos desde api-mssql-go directorio dentro de su CLI.

Asegúrese de que el valor de <your-docker-id> con ID de cuenta de Docker.

  1. Para tomar una imagen de Docker, ejecute este comando:

    docker build -t <your-docker-id>/api-mssql-go -f docker/Dockerfile .
    
  2. Para enviar una imagen de Docker a su repositorio de Docker, ejecute este comando:

    docker push <your-docker-id>/api-mssql-go
    

Hecho

Inicie sesión para responder la pregunta

Paso 5: usa la imagen de Docker localmente

Ejecute los siguientes comandos desde api-mssql-go directorio dentro de su CLI.

Asegúrese de que el valor de <your-docker-id> con ID de cuenta de Docker.

  1. Inicie la imagen localmente ejecutando el siguiente comando:

      docker run -p 8000:8000  --name api-mssql-go 
      -e MYAPP_username="sa" 
      -e MYAPP_password="Yukon900" 
      -e MYAPP_database="DemoDB" 
      -e MYAPP_host="host.docker.internal" 
      -e MYAPP_port="1433" 
      -d <your-docker-id>/api-mssql-go:latest
    

    El comando espera que la base de datos esté disponible en localhost:1433 en la máquina host. Esto está indicado por el host.docker.internal valor. Revise el tutorial de implementación de MSSQL en Kyma Runtime para obtener las distintas configuraciones para ejecutar la base de datos.

  2. La aplicación está disponible en http: // localhost: 8000 / comandos. Puede utilizar una herramienta como curl para probar los diferentes métodos HTTP, por ejemplo:

    Para OBTENER detalles:

    curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://localhost:8000/orders
    

    Para POST datos, asegúrese de usar un valor único para command_id:

    curl --data '{"order_id":"10000003","description":"test from curl"}' http://localhost:8000/orders
    
  3. Detenga el contenedor de Docker ejecutando:

    docker stop api-mssql-go
    
  4. A continuación, se muestran algunos comandos adicionales que puede utilizar:

    Para reiniciar el contenedor de Docker, ejecute:

    docker start api-mssql-go
    

    Para eliminar el contenedor de Docker, ejecute:

    docker rm api-mssql-go
    

Hecho

Inicie sesión para responder la pregunta

Paso 6: aplicar recursos al tiempo de ejecución de Kyma

Puede encontrar las definiciones de recursos en el k8s carpeta. Si ha realizado algún cambio de configuración, es posible que estos archivos también deban actualizarse. Los siguientes archivos están en la carpeta correspondiente a este tutorial:

  • apirule.yaml: define el punto final de la API que la aplicación revela en Internet. Este punto final no define ninguna estrategia de acceso de autenticación y debe desactivarse cuando no esté en uso.
  • configmap.yaml: define el nombre de la base de datos, el host y el puerto. El valor de host asume que el servicio tiene el nombre de la base de datos. mssql y se define en el dev Espacio de nombres. Asegúrese de ajustar esto si ha realizado algún cambio.
  • deployment.yaml: define la definición de implementación para la API de Go, así como un servicio utilizado para la comunicación. Esta definición se refiere a la secret.yaml, definido en el tutorial anterior y también incluido en este directorio, y en el configmap.yaml por nombre.
  1. Empiece por el dev Nombre del espacio si aún no está presente:

    kubectl create namespace dev
    
  2. Dentro de deployment.yaml, ajustar valor spec.template.spec.containers.image para usar su imagen de Docker. Solicite la implementación:

    kubectl -n dev apply -f ./k8s/deployment.yaml
    
  3. Verifique el estado del Pod ejecutando:

    kubectl -n dev get po
    

    Este comando da como resultado una tabla similar a la siguiente, que muestra un Pod con el nombre api-mssql-go- terminando en un hash aleatorio. Asegúrese de ajustar este valor en los siguientes comandos. Tenga en cuenta que ESTADO reportando CreateContainerConfigError.

    NAME                           READY   STATUS                       RESTARTS   AGE
    api-mssql-go-c694bc847-tkthc   1/2     CreateContainerConfigError   0          23s
    

    También puede ver los registros que informan lo mismo ESTADO CreateContainerConfigError:

    kubectl logs api-mssql-go-c694bc847-tkthc -c api-mssql-go -n dev
    

    Por la razón de la ESTADO CreateContainerConfigError, revisar la definición de Pod:

    kubectl get pod api-mssql-go-c694bc847-tkthc -n dev -o yaml
    

    Encuentra el containerStatuses.state.waiting.message propiedad para el api-mssql-go imagen para determinar el problema.

  4. Pon el ConfigMap:

    kubectl -n dev apply -f ./k8s/configmap.yaml
    
  5. Verifique el estado del Pod ejecutando:

    kubectl -n dev get po
    

    El Pod debería estar funcionando ahora.

    NAME                           READY   STATUS    RESTARTS   AGE
    api-mssql-go-c694bc847-tkthc   2/2     Running   0          23m
    
  6. Pon el APIRule:

    kubectl -n dev apply -f ./k8s/apirule.yaml
    

    APIRule crea un punto final similar al que se muestra a continuación. Puede usarlo para probar dentro de su navegador o mediante una herramienta como curl.

    https://api-mssql-go.<cluster>.kyma.shoot.live.k8s-hana.ondemand.com/orders