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
- 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
-
Abre el
api-mssql-go
directorio en el editor que necesita. -
Examine el contenido de la muestra.
-
Dentro de
cmd/api
directorio, puedes encontrarmain.go
que es el principal punto de entrada de la aplicación Go. -
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. Unascratch
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/
-
El es
internal
El resto de la aplicación Go está en el directorio, que se divide en tres paquetes:api
,config
ydb
. Explore estos materiales para comprender la estructura y la funcionalidad. -
Dentro de
k8s
un directorio donde puede encontrar los recursos de Kubernetes / Kyma que aplicará a su tiempo de ejecución de Kyma. -
Dentro de la raíz puedes encontrar
go.mod
ygo.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.
-
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
-
Para ejecutar la aplicación, use el siguiente comando:
go run ./cmd/api/main.go
-
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.
-
Para tomar una imagen de Docker, ejecute este comando:
docker build -t <your-docker-id>/api-mssql-go -f docker/Dockerfile .
-
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.
-
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 elhost.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. -
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
-
Detenga el contenedor de Docker ejecutando:
docker stop api-mssql-go
-
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 eldev
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 lasecret.yaml
, definido en el tutorial anterior y también incluido en este directorio, y en elconfigmap.yaml
por nombre.
-
Empiece por el
dev
Nombre del espacio si aún no está presente:kubectl create namespace dev
-
Dentro de
deployment.yaml
, ajustar valorspec.template.spec.containers.image
para usar su imagen de Docker. Solicite la implementación:kubectl -n dev apply -f ./k8s/deployment.yaml
-
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 reportandoCreateContainerConfigError
.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 elapi-mssql-go
imagen para determinar el problema. -
Pon el
ConfigMap
:kubectl -n dev apply -f ./k8s/configmap.yaml
-
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
-
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