diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json index 7725f0176f..bff5ed08b7 100644 --- a/docs/en/latest/config.json +++ b/docs/en/latest/config.json @@ -9,15 +9,15 @@ "type": "category", "label": "Installation", "items": [ - "deployments/ack", + "deployments/minikube", + "deployments/kind", "deployments/aws", - "deployments/azure", + "deployments/ack", "deployments/gke", - "deployments/kind", + "deployments/azure", + "deployments/tke", "deployments/kubesphere", - "deployments/k3s-rke", - "deployments/minikube", - "deployments/tke" + "deployments/k3s-rke" ] }, { diff --git a/docs/en/latest/deployments/aws.md b/docs/en/latest/deployments/aws.md index 8e1605614f..0c2777983b 100644 --- a/docs/en/latest/deployments/aws.md +++ b/docs/en/latest/deployments/aws.md @@ -1,7 +1,12 @@ --- -title: Install Ingress APISIX on Amazon EKS +title: EKS (Amazon) +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - Amazon EKS +description: Guide to install APISIX ingress controller on Amazon Elastic Kubernetes Service (EKS). --- - -This document explains how to install Ingress APISIX on [Amazon EKS](https://amazonaws-china.com/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc). +This guide explains how you can install APISIX ingress on [Amazon EKS](https://aws.amazon.com/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc). ## Prerequisites -* Create an EKS Service on AWS. -* Download the kube config for your EKS from [aws cli interface](https://amazonaws-china.com/cli/). +Before installing APISIX, you need to: + +* [Create an EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) on AWS. +* Enable kubectl to communicate with your cluster by adding the credentials to your kube config file. * Install [Helm](https://helm.sh/). -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -46,31 +53,59 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -Five Service resources were created. +:::note + +By default, APISIX ingress controller will watch the apiVersion of `networking.k8s.io/v1`. + +If the target Kubernetes version is under `v1.19`, add the flag `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1`. + +Else, if your Kubernetes cluster version is under `v1.16`, set the flag `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1`. + +::: -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +This will create the five resources mentioned below: -The gateway service type is set to `LoadBalancer` (See [AWS Network Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html) for more details), so that clients can access Apache APISIX through a load balancer. You can find the load balancer hostname by running: +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. + +The gateway service type will be set to `LoadBalancer`. See [Network Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html) for more details on using it in AWS. + +You can find the load balancer IP address by running: ```shell kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].hostname}' ``` -Now open your [EKS console](https://console.aws.amazon.com/eks/home), choosing your cluster and clicking the Workloads tag, you'll see all pods of Apache APISIX, etcd and apisix-ingress-controller are ready. - -Try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running status. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. +Now, if you open your [EKS console](https://console.aws.amazon.com/eks/home), select your cluster, and click the workloads tag, you will be able to see all APISIX, etcd, and ingress controller pods. -### Specify The Ingress Version +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. -apisix-ingress-controller will watch apiVersion of `networking.k8s.io/v1` by default. If the target kubernetes version is under `v1.19`, add `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1` or `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1` if your kubernetes cluster is under `v1.16` +## Next steps ### Enable SSL -The ssl config is disabled by default, add `--set gateway.tls.enabled=true` to enable tls support. +SSL is disabled by default. You can enable it by adding the flag `--set gateway.tls.enabled=true`. + +### Change default keys + +It is recommended to change the default keys for security: + +```shell +--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF +``` + +:::note -### Change default apikey +The `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same. It is better if these are not same as `admin.credentials.viewer`. -It's Recommended to change the default key by add `--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF`, notice that `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same, and should better not same as `admin.credentials.viewer`. +::: diff --git a/docs/en/latest/deployments/azure.md b/docs/en/latest/deployments/azure.md index 121667d0bd..e9dc7c061d 100644 --- a/docs/en/latest/deployments/azure.md +++ b/docs/en/latest/deployments/azure.md @@ -1,7 +1,12 @@ --- -title: Install Ingress APISIX on Azure AKS +title: AKS (Azure) +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - Microsoft Azure +description: Guide to install APISIX ingress controller on Azure Kubernetes Service (AKS). --- - -This document explains how to install Ingress APISIX on [Azure AKS](https://docs.microsoft.com/en-us/azure/aks/intro-kubernetes#:~:text=Azure%20Kubernetes%20Service%20(AKS)%20makes,managed%20Kubernetes%20cluster%20in%20Azure.&text=The%20Kubernetes%20masters%20are%20managed,clusters%2C%20not%20for%20the%20masters.). +This document explains how you can install APISIX ingress on [Azure AKS](https://docs.microsoft.com/en-us/azure/aks/intro-kubernetes). ## Prerequisites -* Create an Kubernetes Service on Azure. -* Install [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/#:~:text=The%20Azure%20command%2Dline%20interface,with%20an%20emphasis%20on%20automation.) and download the credentials by running `az aks get-credentials`. +Setting up APISIX ingress on AKS requires the following: + +* [Create an AKS cluster](https://docs.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-portal?tabs=azure-cli). +* Install [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/#:~:text=The%20Azure%20command%2Dline%20interface,with%20an%20emphasis%20on%20automation.) and update your kube config file by running: + + ```shell + az aks get-credentials + ``` + * Install [Helm](https://helm.sh/). -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -46,29 +58,55 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -Five Service resources were created. +:::note + +By default, APISIX ingress controller will watch the apiVersion of `networking.k8s.io/v1`. + +If the target Kubernetes version is under `v1.19`, add the flag `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1`. -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +Else, if your Kubernetes cluster version is under `v1.16`, set the flag `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1`. -The gateway service type is set to `LoadBalancer`, so that clients can access Apache APISIX through a load balancer IP. You can find the load balancer IP by running: +::: + +This will create the five resources mentioned below: + +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. + +The gateway service type will be set to `LoadBalancer`. You can find the load balancer IP address by running: ```shell kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}' ``` -Now try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running status. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. -### Specify The Ingress Version - -apisix-ingress-controller will watch apiVersion of `networking.k8s.io/v1` by default. If the target kubernetes version is under `v1.19`, add `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1` or `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1` if your kubernetes cluster is under `v1.16` +## Next steps ### Enable SSL -The ssl config is disabled by default, add `--set gateway.tls.enabled=true` to enable tls support. +SSL is disabled by default. You can enable it by adding the flag `--set gateway.tls.enabled=true`. + +### Change default keys + +It is recommended to change the default keys for security: + +```shell +--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF +``` + +:::note -### Change default apikey +The `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same. It is better if these are not same as `admin.credentials.viewer`. -It's Recommended to change the default key by add `--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF`, notice that `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same, and should better not same as `admin.credentials.viewer`. +::: diff --git a/docs/en/latest/deployments/gke.md b/docs/en/latest/deployments/gke.md index 9d15a8609a..f63d17dd6c 100644 --- a/docs/en/latest/deployments/gke.md +++ b/docs/en/latest/deployments/gke.md @@ -1,7 +1,12 @@ --- -title: Install Ingress APISIX on Google Cloud GKE +title: GKE (Google) +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - Google Cloud Platform +description: Guide to install APISIX ingress controller on Google Kubernetes Engine (GKE). --- - -This document explains how to install Ingress APISIX on [Google Cloud GKE](https://cloud.google.com/kubernetes-engine). +This guide explains how you can install APISIX ingress on [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine). ## Prerequisites -* Create an Kubernetes Service on GKE. -* Install [Google Cloud SDK](https://cloud.google.com/sdk) and get the credentials or you can just use the [Cloud Shell](https://cloud.google.com/shell). +Setting up APISIX ingress on GKE requires the following: + +* [Create a GKE cluster](https://cloud.google.com/kubernetes-engine/docs/deploy-app-cluster#create_cluster) on Google Cloud. +* Install [Google Cloud SDK](https://cloud.google.com/sdk) and update the credentials in your kube config file or use the [shell](https://cloud.google.com/shell). * Install [Helm](https://helm.sh/). -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -46,29 +53,57 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -Five Service resources were created. +:::note + +By default, APISIX ingress controller will watch the apiVersion of `networking.k8s.io/v1`. + +If the target Kubernetes version is under `v1.19`, add the flag `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1`. + +Else, if your Kubernetes cluster version is under `v1.16`, set the flag `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1`. + +::: -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +This will create the five resources mentioned below: -The gateway service type is set to `LoadBalancer`, so that clients can access Apache APISIX through the [GKE Load Balancer](https://cloud.google.com/kubernetes-engine/docs/concepts/service#services_of_type_loadbalancer) . You can find the load balancer IP by running: +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. + +The gateway service type will be set to `LoadBalancer`. Clients can access Apache APISIX through the [GKE Load Balancer](https://cloud.google.com/kubernetes-engine/docs/concepts/service#services_of_type_loadbalancer). + +You can find the load balancer IP address by running: ```shell kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}' ``` -Now try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running status. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. - -### Specify The Ingress Version +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. -apisix-ingress-controller will watch apiVersion of `networking.k8s.io/v1` by default. If the target kubernetes version is under `v1.19`, add `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1` or `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1` if your kubernetes cluster is under `v1.16` +## Next steps ### Enable SSL -The ssl config is disabled by default, add `--set gateway.tls.enabled=true` to enable tls support. +SSL is disabled by default. You can enable it by adding the flag `--set gateway.tls.enabled=true`. + +### Change default keys + +It is recommended to change the default keys for security: + +```shell +--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF +``` + +:::note -### Change default apikey +The `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same. It is better if these are not same as `admin.credentials.viewer`. -It's Recommended to change the default key by add `--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF`, notice that `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same, and should better not same as `admin.credentials.viewer`. +::: diff --git a/docs/en/latest/deployments/k3s-rke.md b/docs/en/latest/deployments/k3s-rke.md index bcf1a82422..a3a3db941b 100644 --- a/docs/en/latest/deployments/k3s-rke.md +++ b/docs/en/latest/deployments/k3s-rke.md @@ -1,7 +1,13 @@ --- -title: Install Ingress APISIX on K3S and Rancher RKE +title: K3s and RKE (Rancher) +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - K3s + - Rancher RKE +description: Guide to install APISIX ingress controller on K3s and Rancher Kubernetes Engine(RKE). --- - -This document explains how to install Ingress APISIX on [k3S](https://k3s.io/) and [Rancher RKE](https://rancher.com/products/rke/). +This document explains how you can install APISIX ingress on [k3S](https://k3s.io/) and [Rancher RKE](https://rancher.com/products/rke/). + +:::tip + +K3s is built for IoT and edge computing applications. Apache APISIX also supports an MQTT Plugin and runs well on ARM processors. APISIX ingress is therefore a good choice to handle North-South traffic in K3s. -K3S is a certified Kubernetes distribution built for IoT and Edge computing, whilst [Apache APISIX](https://apisix.apache.org) is also good at IoT (See [MQTT plugin](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/mqtt-proxy.md)) and runs well on ARM architecture. -It's a good choice to use Ingress APISIX as the north-south API gateway in K3S. +::: ## Prerequisites * Install [K3S](https://rancher.com/docs/k3s/latest/en/installation/) or [Rancher RKE](https://rancher.com/docs/rke/latest/en/installation/). * Install [Helm](https://helm.sh/). -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -49,16 +58,19 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -*If you are using K3S, the default kubeconfig file is in /etc/rancher/k3s and root permission may required.* +:::info IMPORTANT + +If you are using K3s, the default kube config file is located in `/etc/rancher/k3s/` and you make require root permission. + +::: -Five Service resources were created. +This will create the five resources mentioned below: -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. -The gateway service type is set to `NodePort`, so that clients can access Apache APISIX through the Node IPs and the assigned port. -If you are using K3S and you want to expose a `LoadBalancer` service, try to use [Klipper](https://github.com/k3s-io/klipper-lb). +The gateway service type is set to `NodePort`. Clients can access APISIX through the Node IPs and the assigned port. To use a service of type `LoadBalancer` with K3s, use a bare-metal load balancer implementation like [Klipper](https://github.com/k3s-io/klipper-lb). -Now try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running status. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. diff --git a/docs/en/latest/deployments/kind.md b/docs/en/latest/deployments/kind.md index 7994a23bd8..9249466cce 100644 --- a/docs/en/latest/deployments/kind.md +++ b/docs/en/latest/deployments/kind.md @@ -1,7 +1,12 @@ --- -title: Install Ingress APISIX on Kind +title: kind +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - kind +description: Guide to install APISIX ingress controller on kind. --- - -This document explains how to install Ingress APISIX on [kind](https://kind.sigs.k8s.io/). +This document explains how you can install APISIX ingress locally on [kind](https://kind.sigs.k8s.io/). ## Prerequisites @@ -29,23 +34,25 @@ This document explains how to install Ingress APISIX on [kind](https://kind.sigs * Install [Helm](https://helm.sh/). * Install [kubectl](https://kubernetes.io/docs/tasks/tools/). -If you encounter some strange problems, please consider whether it is a version compatibility issue. +:::tip + +If you encounter issues, check the version you are using. This document uses kind v0.12.0, Helm v3.8.1, and kubectl v1.23.5. -The versions of kind(==v0.12.0), kubectl(==v1.23.5) and helm(==v3.8.1) used in this document are confirmed feasible. +::: -## Create Cluster +## Create a kind cluster -The quickest way to get a taste is to run command as follows and then go to the next section. +Ensure you have Docker running and start the kind cluster: ```shell kind create cluster ``` -You can click this [link](https://kind.sigs.k8s.io/docs/user/ingress/#create-cluster) for more information. +See [Ingress](https://kind.sigs.k8s.io/docs/user/ingress/#create-cluster) to learn more about setting up ingress on a kind cluster. -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -60,11 +67,11 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -Five Service resources were created. +This will create the five resources mentioned below: -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. -Now try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running of Ingress APISIX. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. diff --git a/docs/en/latest/deployments/kubesphere.md b/docs/en/latest/deployments/kubesphere.md index 262bcf127f..1029780f6a 100644 --- a/docs/en/latest/deployments/kubesphere.md +++ b/docs/en/latest/deployments/kubesphere.md @@ -1,7 +1,12 @@ --- -title: Install Ingress APISIX on KubeSphere +title: KubeSphere +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - KubeSphere +description: Guide to install APISIX ingress controller on KubeSphere Container Platform. --- - -This document explains how to install Ingress APISIX on [KubeSphere](https://kubesphere.io/). - -KubeSphere is a distributed operating system managing cloud native applications with Kubernetes as its kernel, and provides plug-and-play architecture for the seamless integration of third-party applications to boost its ecosystem. +This guide explains how you can install APISIX ingress on [KubeSphere](https://kubesphere.io/) distributed operating system. ## Prerequisites -* Install [KubeSphere](https://kubesphere.io/docs/quick-start/), you can choose [All-in-one Installation on Linux](https://kubesphere.io/docs/quick-start/all-in-one-on-linux/) or [Minimal KubeSphere on Kubernetes](https://kubesphere.io/docs/quick-start/minimal-kubesphere-on-k8s/). +Setting up APISIX ingress on KubeSphere requires the following: + +* Install [KubeSphere](https://kubesphere.io/docs/quick-start/) on Linux or minimally on Kubernetes. * Install [Helm](https://helm.sh/). -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -47,26 +52,51 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -Five Service resources were created. +:::note + +By default, APISIX ingress controller will watch the apiVersion of `networking.k8s.io/v1`. + +If the target Kubernetes version is under `v1.19`, add the flag `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1`. -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +Else, if your Kubernetes cluster version is under `v1.16`, set the flag `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1`. -The gateway service type is set to `NodePort`, so that clients can access Apache APISIX through the Node IPs and the assigned port. -If you want to expose a `LoadBalancer` service, try to use [Porter](https://github.com/kubesphere/porter). +::: -Now try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running status. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. +This will create the five resources mentioned below: -### Specify The Ingress Version +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. -apisix-ingress-controller will watch apiVersion of `networking.k8s.io/v1` by default. If the target kubernetes version is under `v1.19`, add `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1` or `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1` if your kubernetes cluster is under `v1.16` +The gateway service type is set to `NodePort`. Clients can access APISIX through the Node IPs and the assigned port. To use a service of type `LoadBalancer` with KubeSphere use a bare-metal load balancer implementation like [openelb](https://github.com/openelb/openelb). + +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. + +## Next steps ### Enable SSL -The ssl config is disabled by default, add `--set gateway.tls.enabled=true` to enable tls support. +SSL is disabled by default. You can enable it by adding the flag `--set gateway.tls.enabled=true`. + +### Change default keys + +It is recommended to change the default keys for security: + +```shell +--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF +``` + +:::note -### Change default apikey +The `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same. It is better if these are not same as `admin.credentials.viewer`. -It's Recommended to change the default key by add `--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF`, notice that `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same, and should better not same as `admin.credentials.viewer`. +::: diff --git a/docs/en/latest/deployments/minikube.md b/docs/en/latest/deployments/minikube.md index 42de539f96..4ff92bc792 100644 --- a/docs/en/latest/deployments/minikube.md +++ b/docs/en/latest/deployments/minikube.md @@ -1,5 +1,11 @@ --- -title: Install Ingress APISIX on Minikube +title: minikube +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - minikube +description: Guide to install APISIX ingress controller on minikube. --- -This document explains how to install Ingress APISIX on [Minikube](https://minikube.sigs.k8s.io/). +This guide explains how you can install APISIX ingress on [minikube](https://minikube.sigs.k8s.io/). ## Prerequisites * Install [Minikube](https://minikube.sigs.k8s.io/docs/start/). * Install [Helm](https://helm.sh/). -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -45,11 +51,11 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -Five Service resources were created. +This will create the five resources mentioned below: -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. -Now try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running of Ingress APISIX. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. diff --git a/docs/en/latest/deployments/tke.md b/docs/en/latest/deployments/tke.md index 3acdbca5e7..1f84db1f1a 100644 --- a/docs/en/latest/deployments/tke.md +++ b/docs/en/latest/deployments/tke.md @@ -1,7 +1,13 @@ --- -title: Install Ingress APISIX on Tencent TKE +title: TKE (Tencent) +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress + - Tencent Cloud Container Service + - Tencent Kubernetes Engine +description: Guide to install APISIX ingress controller on Tencent Kubernetes Engine (TKE). --- - -This document explains how to install Ingress APISIX on [Tencent TKE](https://cloud.tencent.com/product/tke). +This document explains how you can install APISIX ingress on [Tencent TKE](https://cloud.tencent.com/product/tke). ## Prerequisites -* Create a TKE Service on Tencent Cloud and make sure the API Server is accessible from your workspace. +* Create a TKE cluster on Tencent Cloud and make sure that the API server is accessible from your device. * Install [Helm](https://helm.sh/). -* Download the kube config for your TKE Console. +* Update your kube config file with the credentials for your TKE cluster. -## Install APISIX and apisix-ingress-controller +## Install APISIX and ingress controller -As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart. +The script below installs APISIX and the ingress controller: ```shell helm repo add apisix https://charts.apiseven.com @@ -47,35 +53,65 @@ helm install apisix apisix/apisix \ kubectl get service --namespace ingress-apisix ``` -Please be careful you must configure the `etcd.persistence.size` to multiples of 10Gi (it's a limitation on TKE), otherwise the [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) creation will fail. +:::info IMPORTANT + +Make sure to configure the attribute `etcd.persistence.size` in multiples of `10Gi` (limitation of TKE). Otherwise, the [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) creation will fail. + +::: + +:::note + +By default, APISIX ingress controller will watch the apiVersion of `networking.k8s.io/v1`. + +If the target Kubernetes version is under `v1.19`, add the flag `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1`. -Five Service resources were created. +Else, if your Kubernetes cluster version is under `v1.16`, set the flag `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1`. -* `apisix-gateway`, which processes the real traffic; -* `apisix-admin`, which acts as the control plane to process all the configuration changes. -* `apisix-ingress-controller`, which exposes apisix-ingress-controller's metrics. -* `apisix-etcd` and `apisix-etcd-headless` for etcd service and internal communication. +::: -Two Service resources were created, one is `apisix-gateway`, which processes the real traffic; another is `apisix-admin`, which acts as the control plane to process all the configuration changes. +This will create the five resources mentioned below: -The gateway service type is set to `LoadBalancer` (see [TKE Service Management](https://cloud.tencent.com/document/product/457/45487?from=10680) for more details), so that clients can access Apache APISIX through a load balancer. You can find the load balancer ip by running: +* `apisix-gateway`: dataplane the process the traffic. +* `apisix-admin`: control plane that processes all configuration changes. +* `apisix-ingress-controller`: ingress controller which exposes APISIX. +* `apisix-etcd` and `apisix-etcd-headless`: stores configuration and handles internal communication. + +The gateway service type will be set to `LoadBalancer`. See [TKE service management](https://cloud.tencent.com/document/product/457/45487?from=10680) for more details on setting this up. + +You can find the load balancer IP address by running: ```shell kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}' ``` -Now open your [TKE console](https://console.cloud.tencent.com/tke2/overview), choosing your cluster and clicking the Workloads tag, you'll see all pods of Apache APISIX, etcd and apisix-ingress-controller are ready. - -Try to create some [resources](https://github.com/apache/apisix-ingress-controller/tree/master/docs/en/latest/concepts) to verify the running status. As a minimalist example, see [proxy-the-httpbin-service](../tutorials/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller. +Now, if you open your [TKE console](https://console.cloud.tencent.com/tke2/overview), choose your cluster and click the workloads tag, you will see all the APISIX. ingress controller, and etcd pods. -### Specify The Ingress Version +You should now be able to use APISIX ingress controller. You can try running this [minimal example](../tutorials/proxy-the-httpbin-service.md) to see if everything is working perfectly. -apisix-ingress-controller will watch apiVersion of `networking.k8s.io/v1` by default. If the target kubernetes version is under `v1.19`, add `--set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1` or `--set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1` if your kubernetes cluster is under `v1.16` +## Next steps ### Enable SSL -The ssl config is disabled by default, add `--set gateway.tls.enabled=true` to enable tls support. +SSL is disabled by default. You can enable it by adding the flag `--set gateway.tls.enabled=true`. + +### Change default keys + +It is recommended to change the default keys for security: + +```shell +--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF +``` + +```shell +--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF +``` + +:::note -### Change default apikey +The `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same. It is better if these are not same as `admin.credentials.viewer`. -It's Recommended to change the default key by add `--set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF`, `--set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF`, notice that `ingress-controller.config.apisix.adminKey` and `admin.credentials.admin` must be the same, and should better not same as `admin.credentials.viewer`. +:::