Este resumen es para demostrar cómo se pueden aprovechar las funciones sin servidor del tiempo de ejecución de SAP BTP Kyma seleccionadas, a saber
El tema previamente demostrado fue: |
SAP BTP, Kyma runtime es el programa comercial totalmente administrado de SAP kubernetes oferta, parte de SAP Business Technology Platform. A menudo se incluye con SAP Commerce Cloud y hoy en día se está convirtiendo en el tiempo de ejecución de extensibilidad de elección.
Kyma trae adicional componentes encima de un racimo de jardineros lisos. Y sin servidor es uno de ellos.
La entrega anterior demostró cómo anular una imagen de función base.
Otra característica genial y estratégica con Kyma serverless DRC es el capacidad de montar secretos como volúmenes.
Secretos montados como Volumen es una nueva característica introducida con el último kyma liberar.
Esto es realmente útil cuando se utilizan las bibliotecas SAP estándar de la talla de xsenv, xssec y otros con los servicios BTP provistos con el operador de servicio btp. y realmente esencial cuando se trata de implementar servicios portátiles multientorno con una sola línea de código.
Echemos un vistazo a un fragmento de una plantilla de una definición de función con el monturas secretas.
El monturas secretas permite asignar valores de los secretos de kubernetes a las rutas de montaje de volumen de una función. Las rutas de los montajes son como los directorios base en una estructura de carpetas y, combinadas con los nombres de las claves secretas, se convierten en las rutas de datos.
Por lo tanto, un código de función puede leer fácilmente valores de claves secretas de estas rutas de datos como si fueran archivos.
apiVersion: serverless.kyma-project.io/v1alpha2
kind: Function
metadata:
name: {{ .Values.services.srv.name }}
labels:
{{- include "app.labels" . | nindent 4 }}
app: {{ .Values.services.srv.name }}
spec:
runtime: {{ .Values.services.srv.runtime }}
env:
- name: SERVICE_BINDING_ROOT
value: /bindings
secretMounts:
- secretName: {{ .Values.services.uaa.bindingSecretName }}
mountPath: "/bindings/fun-uaa"
- secretName: {{ .Values.services.dest.bindingSecretNamex509 }}
mountPath: "/bindings/fun-dest-x509"
- secretName: {{ .Values.services.hdi.bindingSecretName }}
mountPath: "/bindings/fun-hdi"
source:
gitRepository:
Eventualmente, así es como funciona con la mayoría de las bibliotecas SAP de uso común. estamos usando el SERVICIO_BINDING_ROOT variable env para definir el carpeta raíz del directorio de enlace (él recordó vinculante) para exponer los secretos de enlace de los servicios BTP de SAP montados a las bibliotecas de SAP que se pueden usar en el código de función.
De esta forma, cualquier código que dependa de las bibliotecas de SAP para manipular los secretos se puede usar en entornos de tiempo de ejecución sin modificaciones.
Vamos a ver cómo usar SAP HANA Cloud con funciones usando @sap/hana-cliente y otras bibliotecas de SAP.
El siguiente fragmento de código muestra las bibliotecas SAP más utilizadas:
const xsenv = require('@sap/xsenv');
const services = xsenv.getServices({
uaa: { label: 'xsuaa' }
,
hana: { label: 'hana' }
});
const util = require('util');
const xssec = require('@sap/xssec');
const createSecurityContext = util.promisify(xssec.createSecurityContext);
const hana = require('@sap/hana-client');
services.hana.sslValidateCertificate = true;
services.hana.ssltruststore = services.hana.certificate;
const hanaConn = hana.createConnection();
async function queryDB(sql, procedure, param) {
try {
await hanaConn.connect(services.hana);
} catch (err) {
debug('queryDB connect', err.message, err.stack);
results = err.message;
}
try {
await hanaConn.exec('SET SCHEMA ' + services.hana.schema);
if (procedure === undefined) {
results = await hanaConn.exec(sql);
}
else {
let hanaStmt = await hanaConn.prepare(procedure);
results = hanaStmt.exec(param);
}
} catch (err) {
debug('queryDB exec', err.message, err.stack);
results = err.message;
}
try {
await hanaConn.disconnect();
} catch (err) {
debug('queryDB disconnect', err.message, err.stack);
results = err.message;
}
return results;
}
y aquí van un par de llamadas simples contra una instancia de base de datos de SAP HANA Cloud:
const session = await queryDB(`SELECT * FROM M_SESSION_CONTEXT`);
const db = await queryDB(`SELECT SYSTEM_ID, DATABASE_NAME, HOST, VERSION, USAGE FROM M_DATABASE`);
const connections = await queryDB(`SELECT TOP 10 USER_NAME, CLIENT_IP, CLIENT_HOST, START_TIME FROM M_CONNECTIONS WHERE OWN='TRUE' ORDER BY START_TIME DESC`);
Esto concluye una breve excursión a la tierra de kyma serverless.
Por último, pero no menos importante, espero que hayas disfrutado leyendo la publicación del blog. Siéntase libre de proporcionar comentarios en la sección de comentarios a continuación.
Pre-requisitos: SAP BTP, tiempo de ejecución de Kyma (SKR):
Nube SAP HANA (con herramientas multientorno de SAP HANA Cloud):
OS Kyma en jardinero:
Descargo de responsabilidad:
|
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073