You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by zh...@apache.org on 2022/08/18 07:11:42 UTC

[apisix-ingress-controller] branch master updated: docs: update "Getting started" guide (#1247)

This is an automated email from the ASF dual-hosted git repository.

zhangjintao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git


The following commit(s) were added to refs/heads/master by this push:
     new 1a293064 docs: update "Getting started" guide (#1247)
1a293064 is described below

commit 1a2930646ea6127d41fcf12236b3a0e5fb180dda
Author: Navendu Pottekkat <na...@gmail.com>
AuthorDate: Thu Aug 18 12:41:36 2022 +0530

    docs: update "Getting started" guide (#1247)
    
    Signed-off-by: Navendu Pottekkat <na...@gmail.com>
    Co-authored-by: Jintao Zhang <zh...@gmail.com>
---
 docs/en/latest/config.json        |  30 ++++----
 docs/en/latest/deployments/ack.md |  80 ++++++++++++++------
 docs/en/latest/getting-started.md | 154 +++++++++++++++++++++++++-------------
 3 files changed, 174 insertions(+), 90 deletions(-)

diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json
index f60a7968..7725f017 100644
--- a/docs/en/latest/config.json
+++ b/docs/en/latest/config.json
@@ -5,6 +5,21 @@
       "type": "doc",
       "id": "getting-started"
     },
+    {
+      "type": "category",
+      "label": "Installation",
+      "items": [
+        "deployments/ack",
+        "deployments/aws",
+        "deployments/azure",
+        "deployments/gke",
+        "deployments/kind",
+        "deployments/kubesphere",
+        "deployments/k3s-rke",
+        "deployments/minikube",
+        "deployments/tke"
+      ]
+    },
     {
       "type": "category",
       "label": "Tutorials",
@@ -23,21 +38,6 @@
         "tutorials/how-to-use-go-plugin-runner-in-apisix-ingress"
       ]
     },
-    {
-      "type": "category",
-      "label": "Installation",
-      "items": [
-        "deployments/ack",
-        "deployments/aws",
-        "deployments/azure",
-        "deployments/gke",
-        "deployments/kind",
-        "deployments/kubesphere",
-        "deployments/k3s-rke",
-        "deployments/minikube",
-        "deployments/tke"
-      ]
-    },
     {
       "type": "category",
       "label": "References",
diff --git a/docs/en/latest/deployments/ack.md b/docs/en/latest/deployments/ack.md
index 2632df2f..df26464d 100644
--- a/docs/en/latest/deployments/ack.md
+++ b/docs/en/latest/deployments/ack.md
@@ -1,7 +1,12 @@
 ---
-title: Install Ingress APISIX on ACK
+title: ACK (Alibaba Cloud)
+keywords:
+  - APISIX ingress
+  - Apache APISIX
+  - Kubernetes ingress
+  - Alibaba Cloud
+description: Guide to install APISIX ingress controller on Alibaba Cloud Container Service for Kubernetes (ACK).
 ---
-
 <!--
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
@@ -21,17 +26,19 @@ title: Install Ingress APISIX on ACK
 #
 -->
 
-This document explains how to install Ingress APISIX on Alibaba Cloud Container Service for Kubernetes (ACK).
+This document explains how you can install APISIX ingress on [Alibaba Cloud Container Service for Kubernetes (ACK)](https://www.alibabacloud.com/product/kubernetes).
 
 ## Prerequisites
 
-* Create an ACK Service on ali-cloud.
-* Download the kube config for your ACK, follow the [introduction](https://www.alibabacloud.com/help/zh/doc-detail/86378.html).
+Setting up APISIX ingress on ACK requires the following:
+
+* [Create an ACK service](https://www.alibabacloud.com/help/en/container-service-for-kubernetes/latest/create-an-ack-dedicated-cluster).
+* [Add the cluster credentials](https://www.alibabacloud.com/help/en/container-service-for-kubernetes/latest/connect-to-ack-clusters-by-using-kubectl) 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
@@ -48,20 +55,35 @@ 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 [Access services through SLB](https://www.alibabacloud.com/help/doc-detail/182218.htm) 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 [Use an existing SLB instance to expose an application
+](https://www.alibabacloud.com/help/en/container-service-for-kubernetes/latest/use-an-existing-slb-instance-to-expose-an-application-2) for details on using a load balancer.
+
+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}'
 ```
 
-`ACK` PV require min_size is `20Gi`,cluster with `flexVolume` component select `alicloud-disk-ssd`,if with `helm values.yml` configure startup `apisix`,[more helm etcd configure](https://hub.kubeapps.com/charts/bitnami/etcd),configure format sample:
+ACK PersistentVolume requires the minimum size of `20Gi` using FlexVolume (select `alicloud-disk-ssd`)
+
+`ACK` PV require min_size is `20Gi`,cluster with `flexVolume` component select `alicloud-disk-ssd`. If you are using Helm, you can use this [etcd configuration file](https://hub.kubeapps.com/charts/bitnami/etcd):
 
 ```yaml
 etcd:
@@ -70,16 +92,32 @@ etcd:
     size: 20Gi
 ```
 
-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/getting-started.md b/docs/en/latest/getting-started.md
index c950c86a..a9b7789d 100644
--- a/docs/en/latest/getting-started.md
+++ b/docs/en/latest/getting-started.md
@@ -1,5 +1,10 @@
 ---
-title: Getting Started
+title: Getting started
+keywords:
+  - APISIX ingress
+  - Apache APISIX
+  - Kubernetes ingress
+description: Guide to get started with Apache APISIX ingress controller.
 ---
 
 <!--
@@ -21,68 +26,109 @@ title: Getting Started
 #
 -->
 
-## What is apisix-ingress-controller
-
-apisix-ingress-controller is yet another Ingress controller for Kubernetes using [Apache APISIX](https://apisix.apache.org) as the high performance reverse proxy.
-
-It's configured by using the declarative configurations like [ApisixRoute](./concepts/apisix_route.md), [ApisixUpstream](./concepts/apisix_upstream.md), [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/).
-All these resources are watched and converted to corresponding resources in Apache APISIX.
-
-Service Discovery are also supported through [Kubernetes Service](https://kubernetes.io/docs/concepts/services-networking/service/),
-and will be reflected to nodes in APISIX Upstream.
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+APISIX ingress controller is a [Kubernetes ingress controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) using [Apache APISIX](https://apisix.apache.org) as the high performance reverse proxy.
+
+APISIX ingress controller can be configured using native Kubernetes ingress resources as well as a declarative and easy to use custom resources provided by APISIX. The APISIX ingress controller converts these resources to APISIX configuration.
+
+The examples below show how these differ. Both the examples configure a Route in APISIX that routes to an httpbin service as the Upstream.
+
+<Tabs
+groupId="resources"
+defaultValue="apisix"
+values={[
+{label: 'APISIX Ingress custom resource', value: 'apisix'},
+{label: 'Kubernetes ingress resource', value: 'kubernetes'},
+]}>
+
+<TabItem value="apisix">
+
+```yaml title="httpbin-route.yaml"
+apiVersion: apisix.apache.org/v2
+kind: ApisixRoute
+metadata:
+  name: httpserver-route
+spec:
+  http:
+    - name: rule1
+      match:
+        hosts:
+          - local.httpbin.org
+        paths:
+          - /*
+      backends:
+        - serviceName: httpbin
+          servicePort: 80
+```
+
+</TabItem>
+
+<TabItem value="kubernetes">
+
+```yaml title="httpbin-route.yaml"
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: httpserver-ingress
+spec:
+  ingressClassName: apisix
+  rules:
+    - host: local.httpbin.org
+      http:
+        paths:
+          - backend:
+              service:
+                name: httpbin
+                port:
+                  number: 80
+            path: /
+            pathType: Prefix
+```
+
+</TabItem>
+</Tabs>
+
+APISIX ingress controller defines the CRDs [ApisixRoute](./concepts/apisix_route.md), [ApisixUpstream](./concepts/apisix_upstream.md), [ApisixTlx](concepts/apisix_tls.md), and [ApisixClusterConfig](concepts/apisix_cluster_config.md).
+
+APISIX also supports [service discovery](https://apisix.apache.org/docs/apisix/next/discovery/kubernetes/) through [Kubernetes service](https://kubernetes.io/docs/concepts/services-networking/service/) abstraction.
 
 ![scene](../../assets/images/scene.png)
 
-## Features
-
-* Declarative configuration
-* Full dynamic capabilities to delivery configurations.
-* Native Kubernetes Ingress (both v1 and v1beta1) support.
-* Service Discovery based on Kubernetes Service.
-* Out of box support for node health check.
-* Support load balancing based on Pod (upstream nodes).
-* Rich plugins support.
-* Easy to deploy and use.
+See [Design](./design.md) to learn more about how APISIX ingress controller works under the hood.
 
-## How It Works
-
-See [Design](./design.md) for more details.
-
-## Installation on Cloud
-
-apisix-ingress-controller supports to be installed on some clouds such as AWS, GCP.
+## Features
 
-* [Install Ingress APISIX on Azure AKS](https://apisix.apache.org/docs/ingress-controller/deployments/azure)
-* [Install Ingress APISIX on AWS EKS](https://apisix.apache.org/docs/ingress-controller/deployments/aws)
-* [Install Ingress APISIX on ACK](https://apisix.apache.org/docs/ingress-controller/deployments/ack)
-* [Install Ingress APISIX on Google Cloud GKE](https://apisix.apache.org/docs/ingress-controller/deployments/gke)
-* [Install Ingress APISIX on Minikube](https://apisix.apache.org/docs/ingress-controller/deployments/minikube)
-* [Install Ingress APISIX on KubeSphere](https://apisix.apache.org/docs/ingress-controller/deployments/kubesphere)
-* [Install Ingress APISIX on K3S and RKE](https://apisix.apache.org/docs/ingress-controller/deployments/k3s-rke)
+To summarize, APISIX ingress controller has the following features:
 
-## Installation on Prem
+- Declarative configuration with CRDs.
+- Fully dynamic configuration.
+- Supports native Kubernetes Ingress resource (both v1 and v1beta1).
+- Supports service discovery through Kubernetes Service.
+- Out-of-the-box node health check support.
+- Supports load balancing based on pods (Upstream nodes).
+- Rich [Plugins](https://apisix.apache.org/docs/apisix/next/plugins/batch-requests/) with [custom Plugin](https://apisix.apache.org/docs/apisix/next/plugin-develop/) support.
 
-If you want to deploy apisix-ingress-controller on Prem, we recommend you to use [Helm](https://helm.sh/). Just a few steps
+## Get involved
 
-## Get Involved to Contribute
+You can contribute to the development of APISIX ingress controller. See [Development guide](./contribute.md) for instructions on setting up the project locally.
 
-First, your supports and cooperations to make this project better are appreciated.
-But before you start, please read [How to Contribute](./contribute.md)
+See the [Contribute to APISIX](https://apisix.apache.org/docs/general/contributor-guide/) section for details on the contributing flow.
 
-## Compatibility with Apache APISIX
+## Compatibility with APISIX
 
-The following table describes the compatibility between apisix-ingress-controller and
-[Apache APISIX](https://apisix.apache.org).
+The table below shows the compatibility between APISIX ingress controller and the APISIX proxy.
 
-| apisix-ingress-controller | Apache APISIX |
-| ----:| ---:|
-| `master` | `>= 2.7`, `2.11` is recommended. |
-| `1.4.0` | `>= 2.7`, `2.11` is recommended. |
-| `1.3.0` | `>= 2.7`, `2.10` is recommended. |
-| `1.2.0` | `>= 2.7`, `2.8` is recommended. |
-| `1.1.0` | `>= 2.7`, `2.7` is recommended. |
-| `1.1.0` | `>= 2.7`, `2.7` is recommended. |
-| `1.0.0` | `>= 2.7`, `2.7` is recommended. |
-| `0.6` | `>= 2.6`, `2.6` is recommended. |
-| `0.5` | `>= 2.4`, `2.5` is recommended. |
-| `0.4` |`>= 2.4`|
+| APISIX ingress controller | Supported APISIX versions | Recommended APISIX version |
+| ------------------------- | ------------------------- | -------------------------- |
+| `master`                  | `>= 2.7`                  | `2.11`                     |
+| `1.4.0`                   | `>= 2.7`                  | `2.11`                     |
+| `1.3.0`                   | `>= 2.7`                  | `2.10`                     |
+| `1.2.0`                   | `>= 2.7`                  | `2.8`                      |
+| `1.1.0`                   | `>= 2.7`                  | `2.7`                      |
+| `1.1.0`                   | `>= 2.7`                  | `2.7`                      |
+| `1.0.0`                   | `>= 2.7`                  | `2.7`                      |
+| `0.6`                     | `>= 2.6`                  | `2.6`                      |
+| `0.5`                     | `>= 2.4`                  | `2.5`                      |
+| `0.4`                     | `>= 2.4`                  |                            |