docs: fix install docs (#579)

Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
diff --git a/docs/en/latest/deployments/ack.md b/docs/en/latest/deployments/ack.md
index 0d0d372..feecb2c 100644
--- a/docs/en/latest/deployments/ack.md
+++ b/docs/en/latest/deployments/ack.md
@@ -29,28 +29,32 @@
 * Download the kube config for your ACK, follow the [introduction](https://www.alibabacloud.com/help/zh/doc-detail/86378.html).
 * Install [Helm](https://helm.sh/).
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
-* Make sure your target namespace exists, `kubectl` operations thorough this document will be executed in namespace `ingress-apisix`.
+* **Make sure your target namespace exists**, `kubectl` operations thorough this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
   --set gateway.type=LoadBalancer \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
+  --set ingress-controller.enabled=true \
   --set etcd.persistence.storageClass="alicloud-disk-ssd" \
   --set etcd.persistence.size="20Gi" \
-  --namespace ingress-apisix \
+  --namespace ingress-apisix
 kubectl get service --namespace ingress-apisix
 ```
 
-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.
+Five Service resources were created.
+
+* `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.
 
 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:
 
@@ -58,8 +62,6 @@
 kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}'
 ```
 
-Another thing should be concerned that the `allow.ipList` field should be customized according to the [Pod CIRD configuration of ACK](https://www.alibabacloud.com/help/en/doc-detail/86500.htm), so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
 `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:
 
 ```yaml
@@ -69,20 +71,4 @@
     size: 20Gi
 ```
 
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix
-```
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. You have to Wait for while until the corresponding pods are running.
-
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.
diff --git a/docs/en/latest/deployments/aws.md b/docs/en/latest/deployments/aws.md
index 69e1724..5c18e48 100644
--- a/docs/en/latest/deployments/aws.md
+++ b/docs/en/latest/deployments/aws.md
@@ -26,29 +26,33 @@
 ## Prerequisites
 
 * Create an EKS Service on AWS.
-* Install [Helm](https://helm.sh/).
 * Download the kube config for your EKS from [aws cli interface](https://amazonaws-china.com/cli/).
+* Install [Helm](https://helm.sh/).
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
 * Make sure your target namespace exists, kubectl operations thorough this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
   --set gateway.type=LoadBalancer \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
-  --namespace ingress-apisix \
+  --set ingress-controller.enabled=true \
+  --namespace ingress-apisix
 kubectl get service --namespace ingress-apisix
 ```
 
-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.
+Five Service resources were created.
+
+* `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.
 
 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:
 
@@ -56,24 +60,6 @@
 kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].hostname}'
 ```
 
-Another thing should be concerned that the `allow.ipList` field should be customized according to the [EKS CIDR Ranges](https://amazonaws-china.com/premiumsupport/knowledge-center/eks-multiple-cidr-ranges/), so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix
-```
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. You have to wait for while until the corresponding pods are running.
-
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.
diff --git a/docs/en/latest/deployments/azure.md b/docs/en/latest/deployments/azure.md
index 2f1811a..d6122fe 100644
--- a/docs/en/latest/deployments/azure.md
+++ b/docs/en/latest/deployments/azure.md
@@ -31,24 +31,28 @@
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
 * Make sure your target namespace exists, kubectl operations thorough this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
   --set gateway.type=LoadBalancer \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
+  --set ingress-controller.enabled=true \
   --namespace ingress-apisix
 kubectl get service --namespace ingress-apisix
 ```
 
-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.
+Five Service resources were created.
+
+* `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.
 
 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:
 
@@ -56,22 +60,4 @@
 kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}'
 ```
 
-Another thing should be concerned that the `allow.ipList` field should be customized according to the [Pod CIRD configuration of AKS](https://docs.microsoft.com/en-us/azure/aks/configure-azure-cni), so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix
-```
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. You have to wait for while until the corresponding pods are running.
-
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.
diff --git a/docs/en/latest/deployments/gke.md b/docs/en/latest/deployments/gke.md
index a0f81e6..cad90f5 100644
--- a/docs/en/latest/deployments/gke.md
+++ b/docs/en/latest/deployments/gke.md
@@ -31,24 +31,28 @@
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
 * Make sure your target namespace exists, kubectl operations thorough this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
   --set gateway.type=LoadBalancer \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
+  --set ingress-controller.enabled=true \
   --namespace ingress-apisix
 kubectl get service --namespace ingress-apisix
 ```
 
-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.
+Five Service resources were created.
+
+* `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.
 
 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:
 
@@ -56,22 +60,4 @@
 kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}'
 ```
 
-Another thing should be concerned that the `allow.ipList` field should be customized according to the [Pod CIRD configuration of GKE](https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr), so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix
-```
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. You have to wait for while until the corresponding pods are running.
-
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.
diff --git a/docs/en/latest/deployments/k3s-rke.md b/docs/en/latest/deployments/k3s-rke.md
index b462962..717bb5a 100644
--- a/docs/en/latest/deployments/k3s-rke.md
+++ b/docs/en/latest/deployments/k3s-rke.md
@@ -33,19 +33,18 @@
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
 * Make sure your target namespace exists, kubectl operations through this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
   --set gateway.type=NodePort \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
+  --set ingress-controller.enabled=true \
   --namespace ingress-apisix \
   --kubeconfig /etc/rancher/k3s/k3s.yaml
 kubectl get service --namespace ingress-apisix
@@ -53,32 +52,14 @@
 
 *If you are using K3S, the default kubeconfig file is in /etc/rancher/k3s and root permission may required.*
 
-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.
+Five Service resources were created.
+
+* `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.
 
 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).
 
-Another thing should be concerned that the `allow.ipList` field should be customized according to the Pod CIDR settings(see [K3S](https://rancher.com/docs/k3s/latest/en/installation/install-options/server-config/#networking) or [Rancher RKE](https://rancher.com/docs/rancher/v2.x/en/cluster-provisioning/rke-clusters/options/#cluster-config-file), so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix \
-  --kubeconfig /etc/rancher/k3s/k3s.yaml
-```
-
-*If you are using K3S, the default kubeconfig file is in /etc/rancher/k3s and root permission may required.*
-
-The admin key used in above mentioned commands is the default one, if you change the admin key configuration when you deployed APISIX, please remember to change it here.
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. You have to wait for while until the corresponding pods are running.
-
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.
diff --git a/docs/en/latest/deployments/kubesphere.md b/docs/en/latest/deployments/kubesphere.md
index 54ca953..b604a3a 100644
--- a/docs/en/latest/deployments/kubesphere.md
+++ b/docs/en/latest/deployments/kubesphere.md
@@ -32,46 +32,30 @@
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
 * Make sure your target namespace exists, kubectl operations of this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
   --set gateway.type=NodePort \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
-  --namespace ingress-apisix \
+  --set ingress-controller.enabled=true \
+  --namespace ingress-apisix
 kubectl get service --namespace ingress-apisix
 ```
 
-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.
+Five Service resources were created.
+
+* `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.
 
 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).
 
-Another thing that should be concerned that the `allow.ipList` field should be customized according to the Pod CIDR settings, so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts. It's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix
-```
-
-The admin key used above is the default one. If you change the admin key configuration when you deployed APISIX, please remember to change it here.
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. Wait for the corresponding pods are running.
-
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.
diff --git a/docs/en/latest/deployments/minikube.md b/docs/en/latest/deployments/minikube.md
index f2bedd1..ba021c6 100644
--- a/docs/en/latest/deployments/minikube.md
+++ b/docs/en/latest/deployments/minikube.md
@@ -30,40 +30,27 @@
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
 * Make sure your target namespace exists, kubectl operations thorough this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
+  --set gateway.type=NodePort \
+  --set ingress-controller.enabled=true \
   --namespace ingress-apisix
 kubectl get service --namespace ingress-apisix
 ```
 
-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.
+Five Service resources were created.
 
-One thing should be concerned that the `allow.ipList` field should be customized according to the Pod CIRD configuration of Minikube, so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix
-```
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. You have to wait for while until the corresponding pods are running.
+* `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.
 
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.
diff --git a/docs/en/latest/deployments/tke.md b/docs/en/latest/deployments/tke.md
index b1ac3ab..44d0bf6 100644
--- a/docs/en/latest/deployments/tke.md
+++ b/docs/en/latest/deployments/tke.md
@@ -31,26 +31,32 @@
 * Clone [Apache APISIX Charts](https://github.com/apache/apisix-helm-chart).
 * Make sure your target namespace exists, kubectl operations thorough this document will be executed in namespace `ingress-apisix`.
 
-## Install APISIX
+## Install APISIX and apisix-ingress-controller
 
-[Apache APISIX](http://apisix.apache.org/) as the proxy plane of apisix-ingress-controller, should be deployed in advance.
+As the data plane of apisix-ingress-controller, [Apache APISIX](http://apisix.apache.org/) can be deployed at the same time using Helm chart.
 
 ```shell
 cd /path/to/apisix-helm-chart
 helm repo add bitnami https://charts.bitnami.com/bitnami
-helm repo add apisix https://charts.apiseven.com
-# Use `helm search repo apisix` to search charts about apisix
 helm repo update
-helm install apisix apisix/apisix \
+kubectl create ns ingress-apisix
+helm install apisix charts/apisix \
   --set gateway.type=LoadBalancer \
-  --set admin.allow.ipList="{0.0.0.0/0}" \
-  --set etcd.persistence.size=10Gi \
-  --namespace ingress-apisix \
+  --set ingress-controller.enabled=true \
+  --set etcd.persistence.size="10Gi" \
+  --namespace ingress-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.
 
+Five Service resources were created.
+
+* `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.
 
 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:
@@ -59,24 +65,6 @@
 kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}'
 ```
 
-Another thing should be concerned that the `allow.ipList` field should be customized according to the [TKE Network Settings](https://cloud.tencent.com/document/product/457/50353), so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
-
-## Install apisix-ingress-controller
-
-You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.
-
-```shell
-cd /path/to/apisix-helm-chart
-# install apisix-ingress-controller
-helm install apisix-ingress-controller apisix/apisix-ingress-controller \
-  --set image.tag=dev \
-  --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
-  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
-  --namespace ingress-apisix
-```
-
-Change the `image.tag` to the apisix-ingress-controller version that you desire. You have to wait for while until the corresponding pods are running.
-
 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](../practices/proxy-the-httpbin-service.md) to learn how to apply resources to drive the apisix-ingress-controller.