Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
OpenFaaS es un marco que usa contenedores para compilar funciones sin servidor. Como proyecto de código abierto, se ha adoptado a gran escala dentro de la comunidad. En este documento se detalla la instalación y uso de OpenFaas en un clúster de Azure Kubernetes Service (AKS).
Antes de empezar
- En este artículo se presupone un conocimiento básico de los conceptos de Kubernetes. Para más información, consulte Conceptos básicos de Kubernetes de Azure Kubernetes Service (AKS).
- Necesita una suscripción de Azure activa. Si no tiene una, cree una cuenta gratuita antes de empezar.
- Necesita un clúster de AKS. Si no dispone de un clúster existente, puede crear uno mediante la CLI de Azure, Azure PowerShell o Azure Portal.
- Debe instalar la CLI de OpenFaaS. Para ver las opciones de instalación, consulte la documentación de la CLI de OpenFaaS.
Incorporación del repositorio de gráficos de Helm de OpenFaaS
Navegue a Azure Cloud Shell.
Agregue el repositorio de gráficos de Helm de OpenFaaS y actualice a la versión más reciente mediante los siguientes comandos
helm.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Implementación de OpenFaaS
Como recomendación, OpenFaaS y sus funciones deberían almacenarse en su propio espacio de nombres de Kubernetes.
Cree un espacio de nombres para el sistema y las funciones de OpenFaaS mediante el comando
kubectl apply.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.ymlGenere una contraseña para el portal de la interfaz de usuario de OpenFaaS y la API de REST mediante los siguientes comandos. El gráfico de Helm usa esta contraseña para habilitar la autenticación básica en la puerta de enlace de OpenFaaS, que se expone en Internet mediante un equilibrador de carga de nube.
# generate a random password PASSWORD=$(head -c 12 /dev/urandom | shasum| cut -d' ' -f1) kubectl -n openfaas create secret generic basic-auth \ --from-literal=basic-auth-user=admin \ --from-literal=basic-auth-password="$PASSWORD"Importante
El uso de un nombre de usuario y una contraseña para la autenticación es un patrón no seguro. Si tiene una licencia empresarial de OpenFaaS, se recomienda usar Administración de identidad y acceso (IAM)(IAM) para OpenFaaS en su lugar.
Obtenga el valor de la contraseña mediante el siguiente comando
echo.echo $PASSWORDImplemente OpenFaaS en el clúster de AKS mediante el comando
helm upgrade.helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancerEl resultado debería ser similar al siguiente ejemplo reducido:
NAME: openfaas LAST DEPLOYED: Tue Aug 29 08:26:11 2023 NAMESPACE: openfaas STATUS: deployed ... NOTES: To verify that openfaas has started, run: kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas" ...Se crea una dirección IP pública para tener acceso a la puerta de enlace de OpenFaaS. Obtenga la dirección IP mediante el comando
kubectl get service.kubectl get service -l component=gateway --namespace openfaasEl resultado debería ser similar al ejemplo siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE gateway ClusterIP 10.0.156.194 <none> 8080/TCP 7m gateway-external LoadBalancer 10.0.28.18 52.186.64.52 8080:30800/TCP 7mPruebe el sistema OpenFaaS; para ello, vaya a la dirección IP externa en el puerto 8080, en este ejemplo
http://52.186.64.52:8080, donde se le pedirá que inicie sesión. El usuario predeterminado esadminy la contraseña se puede recuperar conecho $PASSWORD.
Establezca
$OPENFAAS_URLen la dirección URL de la dirección IP externa en el puerto 8080 e inicie sesión con la CLI de Azure mediante los siguientes comandos.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Creación de la primera función
Vaya al sistema OpenFaaS mediante la dirección URL de OpenFaaS.
Cree una función mediante el portal de OpenFaas; para ello, seleccione Implementar una nueva función y busque Figlet.
Seleccione la función Figlet y haga clic en Implementar.
Invoque la función mediante el siguiente comando
curl. Asegúrese de reemplazar la dirección IP en el ejemplo siguiente por la dirección de puerta de enlace de OpenFaaS.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"El resultado debería ser similar al ejemplo siguiente:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Creación de la segunda función
Configuración de la instancia de Azure Cosmos DB
Navegue a Azure Cloud Shell.
Cree un nuevo grupo de recursos para la instancia de Azure Cosmos DB mediante el comando
az group create.az group create --name serverless-backing --location eastusImplemente una instancia de Azure Cosmos DB de tipo
MongoDBmediante el comandoaz cosmosdb create. Reemplaceopenfaas-cosmospor su propio nombre de instancia único.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDBObtenga la cadena de conexión de base de datos de Azure Cosmos DB y almacénela en una variable mediante el comando
az cosmosdb keys list. Asegúrese de reemplazar el valor del argumento--resource-groupcon el nombre del grupo de recursos y el argumento--namecon el nombre de su instancia de Azure Cosmos DB.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)Rellene Azure Cosmos DB con datos de prueba mediante la creación de un archivo denominado
plans.jsony la copia en el siguiente archivo JSON.{ "name" : "two_person", "friendlyName" : "Two Person Plan", "portionSize" : "1-2 Person", "mealsPerWeek" : "3 Unique meals per week", "price" : 72, "description" : "Our basic plan, delivering 3 meals per week, which will feed 1-2 people.", "__v" : 0 }
Creación de la función
Instale las herramientas de MongoDB. El siguiente comando de ejemplo instala estas herramientas mediante brew. Para ver más opciones de instalación, consulte la documentación de MongoDB.
brew install mongodbCargue la instancia de Azure Cosmos DB con datos mediante la herramienta mongoimport.
mongoimport --uri=$COSMOS -c plans < plans.jsonEl resultado debería ser similar al ejemplo siguiente:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 documentCree la función mediante el comando
faas-cli deploy. Asegúrese de actualizar el valor del argumento-gcon la dirección de la puerta de enlace de OpenFaaS.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOSUna vez implementada, el resultado debería ser similar a la siguiente salida de ejemplo:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-queryPruebe la función con el siguiente comando
curl. Asegúrese de actualizar la dirección IP con la dirección de puerta de enlace de OpenFaaS.curl -s http://52.186.64.52:8080/function/cosmos-queryEl resultado debería ser similar al ejemplo siguiente:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]Nota:
También puede probar la función dentro de la UI de OpenFaaS:
Pasos siguientes
Si desea obtener más información, puede realizar el taller sobre OpenFaaS, que incluye un conjunto de laboratorios prácticos que abarcan temas como la creación de su propio bot de GitHub, el consumo de secretos, la visualización de métricas y el escalado automático.