From 20ba595df19a0cea9d9fd193a536c9bf760cfca3 Mon Sep 17 00:00:00 2001 From: Joel Hans Date: Thu, 8 Feb 2024 18:13:09 -0700 Subject: [PATCH] Add integration how-to guide: Ingress to apps deployed on Azure Kubernetes Service (AKS) (#591) A new how-to guide for AKS and the ngrok Kubernetes Ingress Controller. I wasn't 100% sure whether to create a new entry in the Integration Hub for AKS, or adopt an existing Azure/Microsoft entry, so I opted for a new one. Happy to migrate this to an existing container if that makes more sense organizationally! --- .../azure-aks/img/store-front.png | Bin 0 -> 106162 bytes docs/integrations/azure-aks/index.mdx | 16 + docs/integrations/azure-aks/k8s.mdx | 461 ++++++++++++++++++ 3 files changed, 477 insertions(+) create mode 100644 docs/integrations/azure-aks/img/store-front.png create mode 100644 docs/integrations/azure-aks/index.mdx create mode 100644 docs/integrations/azure-aks/k8s.mdx diff --git a/docs/integrations/azure-aks/img/store-front.png b/docs/integrations/azure-aks/img/store-front.png new file mode 100644 index 0000000000000000000000000000000000000000..e3319ab56496c08916cc45690ec733f9ca7b8471 GIT binary patch literal 106162 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 literal 0 HcmV?d00001 diff --git a/docs/integrations/azure-aks/index.mdx b/docs/integrations/azure-aks/index.mdx new file mode 100644 index 0000000000..659ae6fa14 --- /dev/null +++ b/docs/integrations/azure-aks/index.mdx @@ -0,0 +1,16 @@ +--- +name: azure-aks +title: Azure Kubernetes Service (AKS) +sidebar_label: Azure Kubernetes Service (AKS) +description: | + Azure Kubernetes Service (AKS) is managed Kubernetes environment from Microsoft. AKS simplifies the deployment, health monitoring, and maintenance of cloud native applications, whether you deploy them in Azure, in on-premises data centers, or at the edge. + +excerpt: | + Quickly add ingress traffic to apps running on Kubernetes clusters managed by Azure Kubernetes Service (AKS). +--- + +import IntegrationPageList from "@site/src/components/IntegrationPageList"; + +

{frontMatter.description}

+ + diff --git a/docs/integrations/azure-aks/k8s.mdx b/docs/integrations/azure-aks/k8s.mdx new file mode 100644 index 0000000000..6ca55b7300 --- /dev/null +++ b/docs/integrations/azure-aks/k8s.mdx @@ -0,0 +1,461 @@ +--- +description: Learn how to deploy a new Kubernetes cluster and demo app via AKS, then add ingress to applications with ngrok's Kubernetes Ingress Controller. +--- + +# Ingress to apps deployed on Azure Kubernetes Service (AKS) + +:::tip TL;DR + +To use the ngrok Kubernetes Ingress Controller with Azure Kubernetes Service (AKS): + +1. [Create your cluster in AKS](#create-your-cluster-in-AKS) +2. [Install the ngrok Ingress Controller](#install-the-ngrok-kubernetes-ingress-controller) +3. [Deploy a demo microservices app](#deploy-a-demo-microservices-app) +4. [Add ngrok-based ingress to your demo app](#add-ngrok-based-ingress-to-your-demo-app) +5. [Add OAuth authentication to your demo app](#add-oauth-authentication-to-your-demo-app) + +::: + +In this guide, you'll launch a new cluster with [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/products/kubernetes-service) and a demo app. You'll then add the ngrok Kubernetes Ingress Controller to route public traffic directly to your demo app through an encrypted, feature-rich tunnel for a complete proof of concept. + +In the end, you'll have learned enough to deploy your next production-ready Kubernetes app with AKS, with the ngrok Kubernetes Ingress Controller giving you access to additional features, like observability and resiliency, with no extra configuration complexity. + +Here is what you'll be building with: + +- The [ngrok Kubernetes Ingress Controller](https://ngrok.com/blog-post/ngrok-k8s): ngrok's official controller for adding secure public ingress and middleware execution to your Kubernetes apps with ngrok's Cloud Edge. With ngrok, you can manage and secure traffic to your apps at every stage of the development lifecycle while also benefitting from simpler configurations, security, and edge acceleration. +- Azure Kubernetes Service (AKS): A managed Kubernetes environment from Microsoft. AKS simplifies the deployment, health monitoring, and maintenance of cloud native applications, whether you deploy them in Azure, in on-premises data centers, or at the edge. With [40 regions](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/?products=kubernetes-service), you should be able to deploy a cluster close to your customers. + +:::caution This how-to requires: + +1. An [ngrok account](https://ngrok.com/signup) at the [**pay-as-you-go** or **custom**](https://ngrok.com/pricing) tiers. +2. An [Azure account](https://azure.microsoft.com/en-us/pricing/purchase-options/pay-as-you-go) with permissions to create new Kubernetes clusters. +3. [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) installed locally. +4. [Helm 3.0.0+](https://helm.sh/docs/intro/install/) installed locally. + +::: + +## **Step 1**: Create your cluster in AKS {#create-your-cluster-in-AKS} + +Start by creating a new managed Kubernetes cluster in AKS. If you already have one, you can skip to [Step 2: Install the ngrok Ingress Controller](#install-the-ngrok-ingress-controller). + +1. Go to the [Kubernetes services](https://portal.azure.com/#view/HubsExtension/BrowseResource/resourceType/Microsoft.ContainerService%2FmanagedClusters) section in your Azure console and click **Create**→**Create a Kubernetes cluster**. + +1. Configure your new cluster with the wizard. The default options are generally safe bets, but there are a few you might want to look at depending on your requirements and budget: + + - Cluster present configuration: You can choose a production-ready deployment, a dev/test deployment, and others. + - Region: The data center where AKS will deploy your cluster—pick a region geographically close to your primary customers and/or your organization. + - AKS pricing tier: The **Free** tier works great with less than 10 nodes, and you can always upgrade to the production tier after deployment. + +1. Click **Review + create** and wait for Azure to validate your configuration. If you see a **Validation failed.** warning, check out the errors—they're likely related to [quota limits](https://learn.microsoft.com/en-us/azure/quotas/regional-quota-requests). When it's ready, click **Create**. Grab a cup of coffee—deployment will take a while. + +1. When AKS completes the deployment, click **Go to deployment**, then **Connect**, which will show you options for connecting to your new cluster with kubectl. Follow the instructions to use the Cloud shell or Azure CLI, then double-check AKS has successfully deployed your cluster's underlying services: + + ```bash + kubectl get deployments --all-namespaces=true + NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE + calico-system calico-kube-controllers 1/1 1 1 5m + calico-system calico-typha 1/1 1 1 5m + kube-system ama-metrics 1/1 1 1 5m + kube-system ama-metrics-ksm 1/1 1 1 5m + kube-system coredns 2/2 2 2 5m + kube-system coredns-autoscaler 1/1 1 1 5m + kube-system konnectivity-agent 2/2 2 2 5m + kube-system metrics-server 2/2 2 2 5m + tigera-operator tigera-operator 1/1 1 1 5m + ``` + +## **Step 2**: Install the ngrok Kubernetes Ingress Controller {#install-the-ngrok-kubernetes-ingress-controller} + +We recommend installing the [ngrok Kubernetes Ingress +Controller](https://github.com/ngrok/kubernetes-ingress-controller) before your end-user apps to separate the steps around infrastructure vs. app configuration. + +1. Create an ngrok static subdomain for ingress if you don't have one already. Navigate to the [**Domains** + section](https://dashboard.ngrok.com/cloud-edge/domains) of the ngrok dashboard and click **Create Domain** or **New + Domain**. This static subdomain will be your `NGROK_DOMAIN` for the remainder of this guide. + +1. Add the ngrok Helm repository if you haven't already. + + ```bash + helm repo add ngrok https://ngrok.github.io/kubernetes-ingress-controller + ``` + +1. Set up the `AUTHTOKEN` and `API_KEY` exports, which allows Helm to install the Ingress Controller using your ngrok credentials. Find your `AUTHTOKEN` under [**Your Authtoken**](https://dashboard.ngrok.com/get-started/your-authtoken) in the ngrok dashboard. + + To create a new API key, navigate to the [**API** section](https://dashboard.ngrok.com/api) of the ngrok dashboard, click the **New API Key** button, change the description or owner, and click the **Add API Key** button. Copy the API key token shown in the modal window before closing, as the ngrok dashboard will not show you the token again. + + ```bash + export NGROK_AUTHTOKEN=[YOUR-AUTHTOKEN] + export NGROK_API_KEY=[YOUR-API-KEY] + ``` + +1. Install the ngrok Ingress Controller with Helm under a new `ngrok-ingress-controller` namespace. + + ```bash + helm install ngrok-ingress-controller ngrok/kubernetes-ingress-controller \ + --namespace ngrok-ingress-controller \ + --create-namespace \ + --set credentials.apiKey=$NGROK_API_KEY \ + --set credentials.authtoken=$NGROK_AUTHTOKEN + ``` + +1. Verify you have successfully installed the ngrok Ingress Controller and that pods are healthy. + + ```bash + kubectl get pods -l 'app.kubernetes.io/name=kubernetes-ingress-controller' --namespace ngrok-ingress-controller + + NAME READY STATUS RESTARTS AGE + ngrok-ingress-controller-kubernetes-ingress-controller-man2fg5p 1/1 Running 0 27s + ``` + +## **Step 3**: Deploy a demo microservices app {#deploy-a-demo-microservices-app} + +To showcase how this integration works, you'll deploy the [AKS Store](https://github.com/Azure-Samples/azure-voting-app-redis) app, which uses a microservices architecture to connect frontend UI to API-like services, passing data to RabbitMQ and MongoDB in the backend. To showcase the features of AKS, you'll deploy this demo app directly in the Azure Portal. + +:::tip + +If you prefer the CLI, save the YAML below to a `.yaml` file on your local workstation and deploy with `kubectl apply -f ...`. + +::: + +1. Click **Create**→**Apply a YAML**. + +1. Copy and paste the YAML below into the editor. + + ```yaml showLineNumbers + apiVersion: apps/v1 + kind: Deployment + metadata: + name: rabbitmq + spec: + replicas: 1 + selector: + matchLabels: + app: rabbitmq + template: + metadata: + labels: + app: rabbitmq + spec: + nodeSelector: + "kubernetes.io/os": linux + containers: + - name: rabbitmq + image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine + ports: + - containerPort: 5672 + name: rabbitmq-amqp + - containerPort: 15672 + name: rabbitmq-http + env: + - name: RABBITMQ_DEFAULT_USER + value: "username" + - name: RABBITMQ_DEFAULT_PASS + value: "password" + resources: + requests: + cpu: 10m + memory: 128Mi + limits: + cpu: 250m + memory: 256Mi + volumeMounts: + - name: rabbitmq-enabled-plugins + mountPath: /etc/rabbitmq/enabled_plugins + subPath: enabled_plugins + volumes: + - name: rabbitmq-enabled-plugins + configMap: + name: rabbitmq-enabled-plugins + items: + - key: rabbitmq_enabled_plugins + path: enabled_plugins + --- + apiVersion: v1 + data: + rabbitmq_enabled_plugins: | + [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. + kind: ConfigMap + metadata: + name: rabbitmq-enabled-plugins + --- + apiVersion: v1 + kind: Service + metadata: + name: rabbitmq + spec: + selector: + app: rabbitmq + ports: + - name: rabbitmq-amqp + port: 5672 + targetPort: 5672 + - name: rabbitmq-http + port: 15672 + targetPort: 15672 + type: ClusterIP + --- + apiVersion: apps/v1 + kind: Deployment + metadata: + name: order-service + spec: + replicas: 1 + selector: + matchLabels: + app: order-service + template: + metadata: + labels: + app: order-service + spec: + nodeSelector: + "kubernetes.io/os": linux + containers: + - name: order-service + image: ghcr.io/azure-samples/aks-store-demo/order-service:latest + ports: + - containerPort: 3000 + env: + - name: ORDER_QUEUE_HOSTNAME + value: "rabbitmq" + - name: ORDER_QUEUE_PORT + value: "5672" + - name: ORDER_QUEUE_USERNAME + value: "username" + - name: ORDER_QUEUE_PASSWORD + value: "password" + - name: ORDER_QUEUE_NAME + value: "orders" + - name: FASTIFY_ADDRESS + value: "0.0.0.0" + resources: + requests: + cpu: 1m + memory: 50Mi + limits: + cpu: 75m + memory: 128Mi + initContainers: + - name: wait-for-rabbitmq + image: busybox + command: + [ + "sh", + "-c", + "until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;", + ] + resources: + requests: + cpu: 1m + memory: 50Mi + limits: + cpu: 75m + memory: 128Mi + --- + apiVersion: v1 + kind: Service + metadata: + name: order-service + spec: + type: ClusterIP + ports: + - name: http + port: 3000 + targetPort: 3000 + selector: + app: order-service + --- + apiVersion: apps/v1 + kind: Deployment + metadata: + name: product-service + spec: + replicas: 1 + selector: + matchLabels: + app: product-service + template: + metadata: + labels: + app: product-service + spec: + nodeSelector: + "kubernetes.io/os": linux + containers: + - name: product-service + image: ghcr.io/azure-samples/aks-store-demo/product-service:latest + ports: + - containerPort: 3002 + resources: + requests: + cpu: 1m + memory: 1Mi + limits: + cpu: 1m + memory: 7Mi + --- + apiVersion: v1 + kind: Service + metadata: + name: product-service + spec: + type: ClusterIP + ports: + - name: http + port: 3002 + targetPort: 3002 + selector: + app: product-service + --- + apiVersion: apps/v1 + kind: Deployment + metadata: + name: store-front + spec: + replicas: 1 + selector: + matchLabels: + app: store-front + template: + metadata: + labels: + app: store-front + spec: + nodeSelector: + "kubernetes.io/os": linux + containers: + - name: store-front + image: ghcr.io/azure-samples/aks-store-demo/store-front:latest + ports: + - containerPort: 8080 + name: store-front + env: + - name: VUE_APP_ORDER_SERVICE_URL + value: "http://order-service:3000/" + - name: VUE_APP_PRODUCT_SERVICE_URL + value: "http://product-service:3002/" + resources: + requests: + cpu: 1m + memory: 200Mi + limits: + cpu: 1000m + memory: 512Mi + --- + apiVersion: v1 + kind: Service + metadata: + name: store-front + spec: + ports: + - port: 80 + targetPort: 8080 + selector: + app: store-front + type: LoadBalancer + ``` + +1. Click **Add** to deploy the demo app. To double-check services deployed successfully, click on **Workloads** in the Azure Portal and look for `store-front`, `rabbitmq`, `product-service`, and `order-service` in the `default` namespace. If you prefer the CLI, you can run `kubectl get pods` for the same information. + +## **Step 4**: Add ngrok-based ingress to your demo app {#add-ngrok-based-ingress-to-your-demo-app} + +Next, you'll configure and deploy the [ngrok Kubernetes Ingress Controller](https://github.com/ngrok/kubernetes-ingress-controller) to expose your demo app to the public internet through the ngrok Cloud Edge. + +1. In the Azure Portal, click **Create→Apply a YAML**. + +1. Copy and paste the YAML below into the editor. This manifest defines how the ngrok Kubernetes Ingress Controller should route traffic arriving on `NGROK_DOMAIN` to the `store-front` service on port `80`, which you deployed in the previous step. + + :::tip + + Make sure you edit line `9` of the YAML below, which contains the `NGROK_DOMAIN` variable, with the ngrok subdomain you created in the second step. + + ::: + + ```yaml showLineNumbers + apiVersion: networking.k8s.io/v1 + kind: Ingress + metadata: + name: store-ingress + namespace: ngrok-ingress-controller + spec: + ingressClassName: ngrok + rules: + # highlight-start + - host: NGROK_DOMAIN + # highlight-end + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: store-front + port: + number: 80 + ``` + +1. Click **Add** to deploy the ingress configuration. + + You can check on the status of the ingress deployment in the Azure Portal at **Services and ingresses**→**Ingresses**. You should see the `store-ingress` name and your ngrok subdomain. If you need to edit your ingress configuration in the future, click on the ingress item and then the **YAML** tab. + +1. Navigate to your ngrok subdomain, e.g. `https://NGROK_DOMAIN.ngrok.app`, in your browser to see the demo app in action. Behind the scenes, ngrok's Cloud Edge routed your request into the ngrok Kubernetes Ingress Controller, which then passed it to the `store-front` service. + + ![The AKS Store demo app accessible from the public internet](img/store-front.png) + +## **Step 5**: Add OAuth authentication to your demo app {#add-oauth-authentication-to-your-demo-app} + +Now that your demo app is publicly accessible through the ngrok Cloud Edge, you can quickly layer on [additional capabilities](https://ngrok.com/docs/http/), like authentication, without configuring and deploying complex infrastructure. Let's see how that works for restricting access to individual Google accounts or any Google account under a specific domain name. + +1. Apply a new YAML definition to your cluster with the YAML below, replacing `YOUR_DOMAIN.TLD` with the domain name you'd like to authenticate visitors against. + + ```yaml showLineNumbers + kind: NgrokModuleSet + apiVersion: ingress.k8s.ngrok.com/v1alpha1 + metadata: + name: ngrok-managed-google-oauth + namespace: ngrok-ingress-controller + modules: + oauth: + google: + emailDomains: + - YOUR_DOMAIN.TLD + ``` + +1. Edit your ingress definition to connect your ngrok Kubernetes Ingress Controller with the `NgrokModuleSet` configuration you just deployed for OAuth. + + In the Azure Portal, click **Services and ingresses**→**Ingresses**, then `store-ingress`, then the **YAML** tab. Add the highlighted YAML below, then validate and save your changes. + + ```yaml showLineNumbers + apiVersion: networking.k8s.io/v1 + kind: Ingress + metadata: + name: store-ingress + namespace: ngrok-ingress-controller + # highlight-start + annotations: + k8s.ngrok.com/modules: ngrok-managed-google-oauth + # highlight-end + spec: + ingressClassName: ngrok + rules: + - host: NGROK_DOMAIN + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: store-front + port: + number: 80 + ``` + +1. Reload your demo app in your browser to see a request to sign in via Google. If the account's domain name matches yours, they'll be given authorization to access your app—otherwise, they'll be redirected to an error page. + +## What's next? + +You've now used the open source ngrok Kubernetes Ingress Controller to add public ingress to a demo app on a cluster managed in AKS without having to worry about complex Kubernetes networking configurations. Because ngrok abstracts ingress and middleware execution to its Cloud Edge, you can follow a similar process to route public traffic to your next production-ready app. + +You can also extend the integration with additional [route modules](https://github.com/ngrok/kubernetes-ingress-controller/blob/main/docs/user-guide/route-modules.md), like circuit breakers, compression, or edit headers before they are sent to your app. Additional deployment options include [name-based virtual hosting](https://github.com/ngrok/kubernetes-ingress-controller/blob/main/docs/user-guide/ingress-to-edge-relationship.md#name-based-virtual-hosting), which lets you deploy and manage any number of Kubernetes clusters and apps in AKS, then create unique ngrok edge domains, like `foo1.bar.com` and `foo2.bar.com`, to direct traffic to the respective services. + +Learn more about the ngrok Ingress Controller, or contribute to its ongoing development, by checking out the [GitHub repository](https://github.com/ngrok/kubernetes-ingress-controller) and the [project-specific documentation](https://github.com/ngrok/kubernetes-ingress-controller/tree/main/docs).