From 1a6f747d09a11432f679779715920ac7096863a9 Mon Sep 17 00:00:00 2001 From: Mahfuza Humayra Mohona Date: Fri, 7 Jun 2024 08:19:17 +0600 Subject: [PATCH 1/3] update getting start Signed-off-by: Mahfuza --- assets/images/storageexplorer.png | Bin 0 -> 136850 bytes content/docs/2.15/_index.md | 2 +- content/docs/2.15/deploy.md | 19 ++- content/docs/2.15/hellokeda.md | 237 ++++++++++++++++++++++++++++++ 4 files changed, 256 insertions(+), 2 deletions(-) create mode 100644 assets/images/storageexplorer.png create mode 100644 content/docs/2.15/hellokeda.md diff --git a/assets/images/storageexplorer.png b/assets/images/storageexplorer.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1443779105f447943287520565603bd648241b GIT binary patch literal 136850 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 #2O*cwpf=auYhRFxbq82VPcIH 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 Yl0nZx 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 bg~0y-qtXLFvZX^D00000NkvXXu0mjf8aEJ7 literal 0 HcmV?d00001 diff --git a/content/docs/2.15/_index.md b/content/docs/2.15/_index.md index a3c18da2f..f8f62fcde 100644 --- a/content/docs/2.15/_index.md +++ b/content/docs/2.15/_index.md @@ -1,5 +1,5 @@ +++ -title = "The KEDA Documentation" +title = "Getting Started" weight = 1 +++ diff --git a/content/docs/2.15/deploy.md b/content/docs/2.15/deploy.md index 0ebec231f..f265b2995 100644 --- a/content/docs/2.15/deploy.md +++ b/content/docs/2.15/deploy.md @@ -8,12 +8,25 @@ We provide a few approaches to deploy KEDA runtime in your Kubernetes clusters: - [Operator Hub](#operatorhub) - [YAML declarations](#yaml) -> 💡 **NOTE:** KEDA requires Kubernetes cluster version 1.27 and higher +**Prerequisites** + +Before installing KEDA, ensure you have the following prerequisites: + +- [Kubernetes cluster version 1.27 or higher](https://kubernetes.io/docs/setup/) +- [`kubectl`](https://kubernetes.io/docs/tasks/tools/) configured to connect to the Kubernetes cluster +- For Helm installation: + - [Helm v3](https://helm.sh/docs/intro/install/) installed on your machine +- For Operator Hub installation: + - Access to the [Operator Hub](https://operatorhub.io/) in your Kubernetes cluster +- For YAML installation: + - No additional prerequisites Don't see what you need? Feel free to [create an issue](https://github.com/kedacore/keda/issues/new) on our GitHub repo. ## Deploying with Helm {#helm} +Using [Helm Charts](https://helm.sh/) is the recommended method for most users. Helm simplifies the installation process and makes it easier to manage and upgrade KEDA. Helm handles deploying all the necessary components, including Custom Resource Definitions (CRDs). + ### Install Deploying KEDA with Helm is very simple: @@ -68,6 +81,8 @@ done ## Deploying with Operator Hub {#operatorhub} +This method utilizes the Operator Hub, a centralized repository for Kubernetes Operators. An Operator extends the functionality of Kubernetes. With this approach, you install the KEDA Operator from the Operator Hub and then create a `KedaController` resource to manage the deployment of KEDA components. + ### Install 1. On Operator Hub Marketplace locate and install KEDA operator to namespace `keda` @@ -81,6 +96,8 @@ Locate installed KEDA Operator in `keda` namespace, then remove created `KedaCon ## Deploying using the deployment YAML files {#yaml} +If Helm or Operator Hub is not available or preferred in your environment, you can deploy KEDA manually by applying YAML files containing the necessary resource definitions. The YAML files are available in the KEDA GitHub releases or can be generated from the KEDA repository. + ### Install If you want to try KEDA on [Minikube](https://minikube.sigs.k8s.io) or a different Kubernetes deployment without using Helm you can still deploy it with `kubectl`. diff --git a/content/docs/2.15/hellokeda.md b/content/docs/2.15/hellokeda.md new file mode 100644 index 000000000..54a420db9 --- /dev/null +++ b/content/docs/2.15/hellokeda.md @@ -0,0 +1,237 @@ ++++ +title = "Hello, KEDA" ++++ + +## Hello, KEDA + + +This sample goes through the basics of creating an Azure Function that triggers on a new Azure Storage Queue message. The function can then be deployed to Kubernetes with KEDA for event driven activation and scale. + +## Pre-requisites + +* [Azure Function Core Tools v3](https://github.com/azure/azure-functions-core-tools#installing). Makes sure the version is greater than: 3.0.3216 +* An Azure Subscription (to host the storage queue). A free account works great - [https://azure.com/free](http://azure.com/free) +* Kubernetes cluster (can be [AKS](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal), GKE, EKS, OpenShift etc.) and [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) pointing to your Kubernetes cluster (for [AKS](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough#connect-to-the-cluster)). NOTE: If you want to use KEDA with Azure Virtual Nodes, be sure to [enable Virtual Nodes](https://docs.microsoft.com/en-us/azure/aks/virtual-nodes-portal) at create. +* Docker and a Docker registry + +## Tutorial + +#### 1. Create a new directory for the function app + +```cli +mkdir hello-keda +cd hello-keda +``` + +#### 2. Initialize the directory for functions + +```cli +func init . --docker +``` + +Select **node** and **JavaScript** + +#### 3. Add a new queue triggered function + +```cli +func new +``` + +Select **Azure Queue Storage Trigger** + +Leave the default of `QueueTrigger` for the name + +#### 4. Create an Azure storage queue + +We'll create a storage account and a queue named `js-queue-items` + +You can use the [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli?view=azure-cli-latest), the [Azure cloud shell](https://shell.azure.com), or [the Azure portal](https://docs.microsoft.com/azure/storage/common/storage-quickstart-create-account#create-a-storage-account-1). The following is how you do it using Azure CLI. + +`` would be replaced by a unique storage account name. + +```cli +az group create -l westus -n hello-keda +az storage account create --sku Standard_LRS --location westus -g hello-keda -n + +CONNECTION_STRING=$(az storage account show-connection-string --name --query connectionString) + +az storage queue create -n js-queue-items --connection-string $CONNECTION_STRING +``` + +#### 5. Update the function metadata with the storage account info + +Open the `hello-keda` directory in an editor. We'll need to update the connection string info for the queue trigger, and make sure the queue trigger capabilities are installed. + +Copy the current storage account connection string (HINT: don't include the `"`) + +```cli +az storage account show-connection-string --name --query connectionString +``` + +Open `local.settings.json` which has the local debug connection string settings. Replace the `{AzureWebJobsStorage}` with the connection string value: + +**local.settings.json** +```json +{ + "IsEncrypted": false, + "Values": { + "FUNCTIONS_WORKER_RUNTIME": "node", + "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=mystorageaccount;AccountKey=shhhh===" + } +} +``` + +Finally, open the `QueueTrigger/function.json` file and set the `connection` setting value to `AzureWebJobsStorage`. This tells the function to pull the connection string from the `AzureWebJobsStorage` key we set above. + +**function.json** +```json +{ + "bindings": [ + { + "name": "myQueueItem", + "type": "queueTrigger", + "direction": "in", + "queueName": "js-queue-items", + "connection": "AzureWebJobsStorage" + } + ] +} +``` + +#### 6. Enable the storage queue bundle on the function runtime + +Replace the `host.json` content with the following. This [pulls in the extensions to the function runtime](https://docs.microsoft.com/azure/azure-functions/functions-bindings-register#local-development-with-azure-functions-core-tools-and-extension-bundles) like Azure Storage Queues support. + +**host.json** +```json +{ + "version": "2.0", + "extensionBundle": { + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[1.*, 2.0.0)" + } +} +``` + +#### 7. Debug and test the function locally (optional) + +Start the function locally +```cli +func start +``` + +Go to your Azure Storage account in the [Azure Portal](https://portal.azure.com) and open the **Storage Explorer**. Select the `js-queue-items` queue and add a message to send to the function. + +![Azure portal storage explorer](.../assets/images/storageexplorer.png) + +You should see your function running locally fired correctly immediately + +```cli +[5/1/19 6:00:53 AM] Executing 'Functions.QueueTrigger' (Reason='New queue message detected on 'js-queue-items'.', Id=2beeca56-4c7a-4af9-b15a-86d896d55a92) +[5/1/19 6:00:53 AM] Trigger Details: MessageId: 60c80a55-e941-4f78-bb93-a1ef006c3dc5, DequeueCount: 1, InsertionTime: 5/1/19 6:00:53 AM +00:00 +[5/1/19 6:00:53 AM] JavaScript queue trigger function processed work item Hello KEDA +[5/1/19 6:00:53 AM] Executed 'Functions.QueueTrigger' (Succeeded, Id=2beeca56-4c7a-4af9-b15a-86d896d55a92) +``` + +#### 8. Install KEDA + +[Follow the instructions](https://keda.sh/docs/2.0/deploy/) to deploy KEDA in your cluster. + +To confirm that KEDA has successfully installed you can run the following command and should see the following CRD. + +```cli +kubectl get customresourcedefinition +NAME AGE +scaledobjects.keda.sh 2h +scaledjobs.keda.sh 2h +``` + +#### 9a. Deploy Function App to KEDA (standard) + +You can then deploy your function to Kubernetes. If you want to deploy so that the function may run on Virtual Nodes, [follow 9b](#9b-deploy-function-app-to-keda-virtual-nodes) + +First log in to docker from the command line with your user Id and password +```cli +docker login +``` +Make sure you have created a private repo in docker.io to which your container image will be pushed. + +```cli +func kubernetes deploy --name hello-keda --registry +``` + +This will build the docker container, push it to the specified registry, and deploy it to Kubernetes. You can see the actual generated deployment with the `--dry-run` flag. + +#### 9b. Deploy Function App to KEDA (Virtual Nodes) + +To deploy your function Kubernetes with Azure Virtual Nodes, you need to modify the details of the deployment to allow the selection of virtual nodes. + +Generate a deployment yaml for the function. +```cli +func kubernetes deploy --name hello-keda --registry --javascript --dry-run > deploy.yaml +``` + +Open and modify the created `deploy.yaml` to tolerate scheduling onto any nodes, including virtual. + +```yaml +spec: + containers: + - name: hello-keda + image: /hello-keda + env: + - name: AzureFunctionsJobHost__functions__0 + value: QueueTrigger + envFrom: + - secretRef: + name: hello-keda + tolerations: + - operator: Exists +``` + +Build and deploy the container image, and apply the deployment to your cluster. +```cli +docker build -t /hello-keda . +docker push /hello-keda + +kubectl apply -f deploy.yaml +``` + +#### 10. Add a queue message and validate the function app scales with KEDA + +Initially after deploy and with an empty queue you should see 0 pods. + +```cli +kubectl get deploy +``` + +Add a queue message to the queue (using the Storage Explorer shown in step 7 above). KEDA will detect the event and add a pod. By default the polling interval set is 30 seconds on the `ScaledObject` resource, so it may take up to 30 seconds for the queue message to be detected and activate your function. This can be [adjusted on the `ScaledObject` resource](https://github.com/kedacore/keda/wiki/ScaledObject-spec). + +```cli +kubectl get pods -w +``` + +The queue message will be consumed. You can validate the message was consumed by using `kubectl logs` on the activated pod. New queue messages will be consumed and if enough queue messages are added the function will autoscale. After all messages are consumed and the cooldown period has elapsed (default 300 seconds), the last pod should scale back down to zero. + +## Cleaning up resources + +#### Delete the function deployment + +```cli +kubectl delete deploy hello-keda +kubectl delete ScaledObject hello-keda +kubectl delete Secret hello-keda +``` + +#### Delete the storage account + +```cli +az storage account delete --name +``` + +#### Uninstall KEDA + +```cli +func kubernetes remove --namespace keda +``` + +Source \ No newline at end of file From da4bc1cedd13fadce4b6a647f13fd110ccdcec34 Mon Sep 17 00:00:00 2001 From: Mahfuza Humayra Mohona Date: Fri, 7 Jun 2024 09:14:18 +0600 Subject: [PATCH 2/3] fix formatting in hello keda Signed-off-by: Mahfuza --- content/docs/2.15/hellokeda.md | 170 ++++++++++++++------------------- 1 file changed, 74 insertions(+), 96 deletions(-) diff --git a/content/docs/2.15/hellokeda.md b/content/docs/2.15/hellokeda.md index 54a420db9..43249b12c 100644 --- a/content/docs/2.15/hellokeda.md +++ b/content/docs/2.15/hellokeda.md @@ -4,71 +4,62 @@ title = "Hello, KEDA" ## Hello, KEDA +This guide will help you create an Azure Function that triggers on new messages in an Azure Storage Queue. You’ll also learn how to deploy it to Kubernetes with KEDA for event-driven activation and scaling. -This sample goes through the basics of creating an Azure Function that triggers on a new Azure Storage Queue message. The function can then be deployed to Kubernetes with KEDA for event driven activation and scale. +## What You'll Need -## Pre-requisites +- [Azure Function Core Tools v3](https://github.com/azure/azure-functions-core-tools#installing) (version > 3.0.3216) +- An Azure Subscription ([get a free account](http://azure.com/free)) +- A Kubernetes cluster (e.g., [AKS](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal), GKE, EKS, OpenShift) with [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/), be sure to [enable Virtual Nodes](https://docs.microsoft.com/en-us/azure/aks/virtual-nodes-portal) at create. +- Docker and a Docker registry -* [Azure Function Core Tools v3](https://github.com/azure/azure-functions-core-tools#installing). Makes sure the version is greater than: 3.0.3216 -* An Azure Subscription (to host the storage queue). A free account works great - [https://azure.com/free](http://azure.com/free) -* Kubernetes cluster (can be [AKS](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal), GKE, EKS, OpenShift etc.) and [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) pointing to your Kubernetes cluster (for [AKS](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough#connect-to-the-cluster)). NOTE: If you want to use KEDA with Azure Virtual Nodes, be sure to [enable Virtual Nodes](https://docs.microsoft.com/en-us/azure/aks/virtual-nodes-portal) at create. -* Docker and a Docker registry +## Step-by-Step Guide -## Tutorial +1. **Create a new directory for the function app** -#### 1. Create a new directory for the function app - -```cli +```sh mkdir hello-keda cd hello-keda ``` -#### 2. Initialize the directory for functions +2. **Initialize the Directory for Functions** -```cli +```sh func init . --docker ``` -Select **node** and **JavaScript** +Select **node** and **JavaScript**. -#### 3. Add a new queue triggered function +3. **Add a New Queue Triggered Function** -```cli +```sh func new ``` -Select **Azure Queue Storage Trigger** - -Leave the default of `QueueTrigger` for the name +Select **Azure Queue Storage Trigger** and use the default name `QueueTrigger`. -#### 4. Create an Azure storage queue +> 💡 **NOTE:** You can use the [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli?view=azure-cli-latest), the [Azure cloud shell](https://shell.azure.com), or [the Azure portal](https://docs.microsoft.com/azure/storage/common/storage-quickstart-create-account#create-a-storage-account-1). The following is how you do it using Azure CLI. -We'll create a storage account and a queue named `js-queue-items` +4. **Create an Azure Storage Queue:** Create a storage account and a queue named `js-queue-items`. Replace `` with a unique name for your storage account. -You can use the [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli?view=azure-cli-latest), the [Azure cloud shell](https://shell.azure.com), or [the Azure portal](https://docs.microsoft.com/azure/storage/common/storage-quickstart-create-account#create-a-storage-account-1). The following is how you do it using Azure CLI. - -`` would be replaced by a unique storage account name. - -```cli +```sh az group create -l westus -n hello-keda az storage account create --sku Standard_LRS --location westus -g hello-keda -n -CONNECTION_STRING=$(az storage account show-connection-string --name --query connectionString) +CONNECTION_STRING=$(az storage account show-connection-string --name --query connectionString -o tsv) az storage queue create -n js-queue-items --connection-string $CONNECTION_STRING ``` -#### 5. Update the function metadata with the storage account info - -Open the `hello-keda` directory in an editor. We'll need to update the connection string info for the queue trigger, and make sure the queue trigger capabilities are installed. +5. **Update Function Settings with Storage Account Info**: Open the `hello-keda` directory in an editor. We'll need to update the connection string info for the queue trigger, and make sure the queue trigger capabilities are installed. Copy the current storage account connection string (HINT: don't include the `"`) -```cli +```sh az storage account show-connection-string --name --query connectionString ``` -Open `local.settings.json` which has the local debug connection string settings. Replace the `{AzureWebJobsStorage}` with the connection string value: +Open `local.settings.json` and replace `{AzureWebJobsStorage}` with your connection string: **local.settings.json** ```json @@ -81,7 +72,7 @@ Open `local.settings.json` which has the local debug connection string settings. } ``` -Finally, open the `QueueTrigger/function.json` file and set the `connection` setting value to `AzureWebJobsStorage`. This tells the function to pull the connection string from the `AzureWebJobsStorage` key we set above. +Open `QueueTrigger/function.json` and set the `connection` value to `AzureWebJobsStorage`: **function.json** ```json @@ -98,33 +89,26 @@ Finally, open the `QueueTrigger/function.json` file and set the `connection` set } ``` -#### 6. Enable the storage queue bundle on the function runtime - -Replace the `host.json` content with the following. This [pulls in the extensions to the function runtime](https://docs.microsoft.com/azure/azure-functions/functions-bindings-register#local-development-with-azure-functions-core-tools-and-extension-bundles) like Azure Storage Queues support. +6. **Enable Storage Queue Support**: Update `host.json` to include the storage queue extension bundle: **host.json** ```json { - "version": "2.0", - "extensionBundle": { - "id": "Microsoft.Azure.Functions.ExtensionBundle", - "version": "[1.*, 2.0.0)" - } + "version": "2.0", + "extensionBundle": { + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[1.*, 2.0.0)" + } } ``` -#### 7. Debug and test the function locally (optional) +7. **Test Your Function Locally (Optional)**: Start your function locally: -Start the function locally -```cli +```sh func start ``` -Go to your Azure Storage account in the [Azure Portal](https://portal.azure.com) and open the **Storage Explorer**. Select the `js-queue-items` queue and add a message to send to the function. - -![Azure portal storage explorer](.../assets/images/storageexplorer.png) - -You should see your function running locally fired correctly immediately +Use the Azure Portal’s Storage Explorer to add a message to the `js-queue-items` queue. Your function should process the message and display the output in the console. ```cli [5/1/19 6:00:53 AM] Executing 'Functions.QueueTrigger' (Reason='New queue message detected on 'js-queue-items'.', Id=2beeca56-4c7a-4af9-b15a-86d896d55a92) @@ -133,105 +117,99 @@ You should see your function running locally fired correctly immediately [5/1/19 6:00:53 AM] Executed 'Functions.QueueTrigger' (Succeeded, Id=2beeca56-4c7a-4af9-b15a-86d896d55a92) ``` -#### 8. Install KEDA - -[Follow the instructions](https://keda.sh/docs/2.0/deploy/) to deploy KEDA in your cluster. - -To confirm that KEDA has successfully installed you can run the following command and should see the following CRD. +8. **Install KEDA:** Follow the [KEDA installation guide](/deploy.md) to deploy KEDA to your Kubernetes cluster. Confirm KEDA is installed by running: -```cli +```sh kubectl get customresourcedefinition -NAME AGE -scaledobjects.keda.sh 2h -scaledjobs.keda.sh 2h ``` -#### 9a. Deploy Function App to KEDA (standard) +You should see `scaledobjects.keda.sh` and `scaledjobs.keda.sh`. -You can then deploy your function to Kubernetes. If you want to deploy so that the function may run on Virtual Nodes, [follow 9b](#9b-deploy-function-app-to-keda-virtual-nodes) +**9a. Deploy Your Function App to Kubernetes with KEDA (Standard):** Log in to Docker: -First log in to docker from the command line with your user Id and password -```cli +```sh docker login ``` -Make sure you have created a private repo in docker.io to which your container image will be pushed. -```cli +Make sure you have created a private repo in docker.io to which your container image will be pushed. Then deploy your function to Kubernetes: + +```sh func kubernetes deploy --name hello-keda --registry ``` This will build the docker container, push it to the specified registry, and deploy it to Kubernetes. You can see the actual generated deployment with the `--dry-run` flag. -#### 9b. Deploy Function App to KEDA (Virtual Nodes) -To deploy your function Kubernetes with Azure Virtual Nodes, you need to modify the details of the deployment to allow the selection of virtual nodes. +9b. **Deploy Your Function App to Kubernetes with KEDA (Virtual Nodes)**: To deploy your function Kubernetes with Azure Virtual Nodes, you need to modify the details of the deployment to allow the selection of virtual nodes. Generate a deployment yaml for the function. -```cli + +```sh func kubernetes deploy --name hello-keda --registry --javascript --dry-run > deploy.yaml ``` -Open and modify the created `deploy.yaml` to tolerate scheduling onto any nodes, including virtual. +Modify `deploy.yaml` to allow scheduling on virtual nodes: ```yaml spec: - containers: - - name: hello-keda - image: /hello-keda - env: - - name: AzureFunctionsJobHost__functions__0 - value: QueueTrigger - envFrom: - - secretRef: - name: hello-keda - tolerations: - - operator: Exists -``` - -Build and deploy the container image, and apply the deployment to your cluster. -```cli -docker build -t /hello-keda . -docker push /hello-keda + containers: + - name: hello-keda + image: /hello-keda + env: + - name: AzureFunctionsJobHost__functions__0 + value: QueueTrigger + envFrom: + - secretRef: + name: hello-keda + tolerations: + - operator: Exists +``` + +Build and deploy your container image: + +```sh +docker build -t /hello-keda . +docker push /hello-keda kubectl apply -f deploy.yaml ``` -#### 10. Add a queue message and validate the function app scales with KEDA - -Initially after deploy and with an empty queue you should see 0 pods. +10. **Verify Your Function Scales with KEDA**:Initially, you should see 0 pods: -```cli +```sh kubectl get deploy ``` Add a queue message to the queue (using the Storage Explorer shown in step 7 above). KEDA will detect the event and add a pod. By default the polling interval set is 30 seconds on the `ScaledObject` resource, so it may take up to 30 seconds for the queue message to be detected and activate your function. This can be [adjusted on the `ScaledObject` resource](https://github.com/kedacore/keda/wiki/ScaledObject-spec). -```cli +```sh kubectl get pods -w ``` The queue message will be consumed. You can validate the message was consumed by using `kubectl logs` on the activated pod. New queue messages will be consumed and if enough queue messages are added the function will autoscale. After all messages are consumed and the cooldown period has elapsed (default 300 seconds), the last pod should scale back down to zero. -## Cleaning up resources +## Cleaning Up -#### Delete the function deployment +#### Delete the Function Deployment -```cli +```sh kubectl delete deploy hello-keda kubectl delete ScaledObject hello-keda kubectl delete Secret hello-keda ``` -#### Delete the storage account +#### Delete the Storage Account -```cli +```sh az storage account delete --name ``` #### Uninstall KEDA -```cli +```sh func kubernetes remove --namespace keda ``` -Source \ No newline at end of file +## Source Code + +You can find the source code for this tutorial on KEDA’s GitHub: [sample-hello-world-azure-functions](https://github.com/kedacore/sample-hello-world-azure-functions). From 1c52c9b1591221e892f786f0b0a931fbe81e1113 Mon Sep 17 00:00:00 2001 From: Mahfuza Humayra Mohona Date: Wed, 12 Jun 2024 07:51:06 +0600 Subject: [PATCH 3/3] added doc in v2.14 Signed-off-by: Mahfuza Humayra Mohona --- content/docs/2.14/_index.md | 2 +- content/docs/2.14/deploy.md | 20 ++- content/docs/2.14/hellokeda.md | 215 +++++++++++++++++++++++++++++++++ 3 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 content/docs/2.14/hellokeda.md diff --git a/content/docs/2.14/_index.md b/content/docs/2.14/_index.md index a3c18da2f..f8f62fcde 100644 --- a/content/docs/2.14/_index.md +++ b/content/docs/2.14/_index.md @@ -1,5 +1,5 @@ +++ -title = "The KEDA Documentation" +title = "Getting Started" weight = 1 +++ diff --git a/content/docs/2.14/deploy.md b/content/docs/2.14/deploy.md index 2465fd436..102957071 100644 --- a/content/docs/2.14/deploy.md +++ b/content/docs/2.14/deploy.md @@ -8,12 +8,25 @@ We provide a few approaches to deploy KEDA runtime in your Kubernetes clusters: - [Operator Hub](#operatorhub) - [YAML declarations](#yaml) -> 💡 **NOTE:** KEDA requires Kubernetes cluster version 1.27 and higher +**Prerequisites** + +Before installing KEDA, ensure you have the following prerequisites: + +- [Kubernetes cluster version 1.27 or higher](https://kubernetes.io/docs/setup/) +- [`kubectl`](https://kubernetes.io/docs/tasks/tools/) configured to connect to the Kubernetes cluster +- For Helm installation: + - [Helm v3](https://helm.sh/docs/intro/install/) installed on your machine +- For Operator Hub installation: + - Access to the [Operator Hub](https://operatorhub.io/) in your Kubernetes cluster +- For YAML installation: + - No additional prerequisites Don't see what you need? Feel free to [create an issue](https://github.com/kedacore/keda/issues/new) on our GitHub repo. ## Deploying with Helm {#helm} +Using [Helm Charts](https://helm.sh/) is the recommended method for most users. Helm simplifies the installation process and makes it easier to manage and upgrade KEDA. Helm handles deploying all the necessary components, including Custom Resource Definitions (CRDs). + ### Install Deploying KEDA with Helm is very simple: @@ -68,6 +81,9 @@ done ## Deploying with Operator Hub {#operatorhub} + +This method utilizes the Operator Hub, a centralized repository for Kubernetes Operators. An Operator extends the functionality of Kubernetes. With this approach, you install the KEDA Operator from the Operator Hub and then create a `KedaController` resource to manage the deployment of KEDA components. + ### Install 1. On Operator Hub Marketplace locate and install KEDA operator to namespace `keda` @@ -81,6 +97,8 @@ Locate installed KEDA Operator in `keda` namespace, then remove created `KedaCon ## Deploying using the deployment YAML files {#yaml} +If Helm or Operator Hub is not available or preferred in your environment, you can deploy KEDA manually by applying YAML files containing the necessary resource definitions. The YAML files are available in the KEDA GitHub releases or can be generated from the KEDA repository. + ### Install If you want to try KEDA on [Minikube](https://minikube.sigs.k8s.io) or a different Kubernetes deployment without using Helm you can still deploy it with `kubectl`. diff --git a/content/docs/2.14/hellokeda.md b/content/docs/2.14/hellokeda.md new file mode 100644 index 000000000..43249b12c --- /dev/null +++ b/content/docs/2.14/hellokeda.md @@ -0,0 +1,215 @@ ++++ +title = "Hello, KEDA" ++++ + +## Hello, KEDA + +This guide will help you create an Azure Function that triggers on new messages in an Azure Storage Queue. You’ll also learn how to deploy it to Kubernetes with KEDA for event-driven activation and scaling. + +## What You'll Need + +- [Azure Function Core Tools v3](https://github.com/azure/azure-functions-core-tools#installing) (version > 3.0.3216) +- An Azure Subscription ([get a free account](http://azure.com/free)) +- A Kubernetes cluster (e.g., [AKS](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal), GKE, EKS, OpenShift) with [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/), be sure to [enable Virtual Nodes](https://docs.microsoft.com/en-us/azure/aks/virtual-nodes-portal) at create. +- Docker and a Docker registry + +## Step-by-Step Guide + +1. **Create a new directory for the function app** + +```sh +mkdir hello-keda +cd hello-keda +``` + +2. **Initialize the Directory for Functions** + +```sh +func init . --docker +``` + +Select **node** and **JavaScript**. + +3. **Add a New Queue Triggered Function** + +```sh +func new +``` + +Select **Azure Queue Storage Trigger** and use the default name `QueueTrigger`. + +> 💡 **NOTE:** You can use the [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli?view=azure-cli-latest), the [Azure cloud shell](https://shell.azure.com), or [the Azure portal](https://docs.microsoft.com/azure/storage/common/storage-quickstart-create-account#create-a-storage-account-1). The following is how you do it using Azure CLI. + +4. **Create an Azure Storage Queue:** Create a storage account and a queue named `js-queue-items`. Replace `` with a unique name for your storage account. + +```sh +az group create -l westus -n hello-keda +az storage account create --sku Standard_LRS --location westus -g hello-keda -n + +CONNECTION_STRING=$(az storage account show-connection-string --name --query connectionString -o tsv) + +az storage queue create -n js-queue-items --connection-string $CONNECTION_STRING +``` + +5. **Update Function Settings with Storage Account Info**: Open the `hello-keda` directory in an editor. We'll need to update the connection string info for the queue trigger, and make sure the queue trigger capabilities are installed. + +Copy the current storage account connection string (HINT: don't include the `"`) + +```sh +az storage account show-connection-string --name --query connectionString +``` + +Open `local.settings.json` and replace `{AzureWebJobsStorage}` with your connection string: + +**local.settings.json** +```json +{ + "IsEncrypted": false, + "Values": { + "FUNCTIONS_WORKER_RUNTIME": "node", + "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=mystorageaccount;AccountKey=shhhh===" + } +} +``` + +Open `QueueTrigger/function.json` and set the `connection` value to `AzureWebJobsStorage`: + +**function.json** +```json +{ + "bindings": [ + { + "name": "myQueueItem", + "type": "queueTrigger", + "direction": "in", + "queueName": "js-queue-items", + "connection": "AzureWebJobsStorage" + } + ] +} +``` + +6. **Enable Storage Queue Support**: Update `host.json` to include the storage queue extension bundle: + +**host.json** +```json +{ + "version": "2.0", + "extensionBundle": { + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[1.*, 2.0.0)" + } +} +``` + +7. **Test Your Function Locally (Optional)**: Start your function locally: + +```sh +func start +``` + +Use the Azure Portal’s Storage Explorer to add a message to the `js-queue-items` queue. Your function should process the message and display the output in the console. + +```cli +[5/1/19 6:00:53 AM] Executing 'Functions.QueueTrigger' (Reason='New queue message detected on 'js-queue-items'.', Id=2beeca56-4c7a-4af9-b15a-86d896d55a92) +[5/1/19 6:00:53 AM] Trigger Details: MessageId: 60c80a55-e941-4f78-bb93-a1ef006c3dc5, DequeueCount: 1, InsertionTime: 5/1/19 6:00:53 AM +00:00 +[5/1/19 6:00:53 AM] JavaScript queue trigger function processed work item Hello KEDA +[5/1/19 6:00:53 AM] Executed 'Functions.QueueTrigger' (Succeeded, Id=2beeca56-4c7a-4af9-b15a-86d896d55a92) +``` + +8. **Install KEDA:** Follow the [KEDA installation guide](/deploy.md) to deploy KEDA to your Kubernetes cluster. Confirm KEDA is installed by running: + +```sh +kubectl get customresourcedefinition +``` + +You should see `scaledobjects.keda.sh` and `scaledjobs.keda.sh`. + +**9a. Deploy Your Function App to Kubernetes with KEDA (Standard):** Log in to Docker: + +```sh +docker login +``` + +Make sure you have created a private repo in docker.io to which your container image will be pushed. Then deploy your function to Kubernetes: + +```sh +func kubernetes deploy --name hello-keda --registry +``` + +This will build the docker container, push it to the specified registry, and deploy it to Kubernetes. You can see the actual generated deployment with the `--dry-run` flag. + + +9b. **Deploy Your Function App to Kubernetes with KEDA (Virtual Nodes)**: To deploy your function Kubernetes with Azure Virtual Nodes, you need to modify the details of the deployment to allow the selection of virtual nodes. + +Generate a deployment yaml for the function. + +```sh +func kubernetes deploy --name hello-keda --registry --javascript --dry-run > deploy.yaml +``` + +Modify `deploy.yaml` to allow scheduling on virtual nodes: + +```yaml +spec: + containers: + - name: hello-keda + image: /hello-keda + env: + - name: AzureFunctionsJobHost__functions__0 + value: QueueTrigger + envFrom: + - secretRef: + name: hello-keda + tolerations: + - operator: Exists +``` + +Build and deploy your container image: + +```sh +docker build -t /hello-keda . +docker push /hello-keda + +kubectl apply -f deploy.yaml +``` + +10. **Verify Your Function Scales with KEDA**:Initially, you should see 0 pods: + +```sh +kubectl get deploy +``` + +Add a queue message to the queue (using the Storage Explorer shown in step 7 above). KEDA will detect the event and add a pod. By default the polling interval set is 30 seconds on the `ScaledObject` resource, so it may take up to 30 seconds for the queue message to be detected and activate your function. This can be [adjusted on the `ScaledObject` resource](https://github.com/kedacore/keda/wiki/ScaledObject-spec). + +```sh +kubectl get pods -w +``` + +The queue message will be consumed. You can validate the message was consumed by using `kubectl logs` on the activated pod. New queue messages will be consumed and if enough queue messages are added the function will autoscale. After all messages are consumed and the cooldown period has elapsed (default 300 seconds), the last pod should scale back down to zero. + +## Cleaning Up + +#### Delete the Function Deployment + +```sh +kubectl delete deploy hello-keda +kubectl delete ScaledObject hello-keda +kubectl delete Secret hello-keda +``` + +#### Delete the Storage Account + +```sh +az storage account delete --name +``` + +#### Uninstall KEDA + +```sh +func kubernetes remove --namespace keda +``` + +## Source Code + +You can find the source code for this tutorial on KEDA’s GitHub: [sample-hello-world-azure-functions](https://github.com/kedacore/sample-hello-world-azure-functions).