juzhiyuan commented on code in PR #2481: URL: https://github.com/apache/apisix-ingress-controller/pull/2481#discussion_r2215460682
########## docs/en/latest/getting-started/get-apisix-ingress-controller.md: ########## @@ -0,0 +1,136 @@ +--- +title: Get APISIX and APISIX Ingress Controller +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress +description: Learn how to quickly install and set up Apache APISIX Ingres Controller. +--- + +<!-- +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +--> + +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 the native Kubernetes Ingress or Gateway API, as well as with APISIX’s own declarative and easy-to-use custom resources. The controller translates these resources into APISIX configuration. + +This tutorial series walks you through how to quickly get started with APISIX on a [kind](https://kind.sigs.k8s.io) Kubernetes cluster and use the APISIX Ingress Controller to manage resources. + +## Prerequisites + +* Install [Docker](https://docs.docker.com/get-docker/) as a dependency of [kind](https://kind.sigs.k8s.io). +* Install [kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) to start a local Kubernetes cluster, or use any existing Kubernetes cluster (version 1.26+). +* Install [Helm](https://helm.sh/docs/intro/install/) (version 3.8+). +* Install [kubectl](https://kubernetes.io/docs/tasks/tools/) to run commands against Kubernetes clusters. + +## Create a Cluster and Configure Namespace + +In this section, you will be creating a kind cluster and configuring the namespace. Skip to [the next section](#install-apisix-and-apisix-ingress-controller-standalone-api-driven-mode) if you already have an existing cluster and a corresponding namspace. + +Ensure you have Docker running and start a kind cluster: + +```shell +kind create cluster +``` + +Create a new namespace `ingress-apisix`: + +```shell +kubectl create namespace ingress-apisix +``` + +Set the namespace to `ingress-apisix` to avoid specifying it explicitly in each subsequent command: + +```shell +kubectl config set-context --current --namespace=ingress-apisix +``` + +## Install APISIX and APISIX Ingress Controller (Standalone API-driven mode) + +Install the Gateway API CRDs, [APISIX Standalone API-driven mode](https://apisix.apache.org/docs/apisix/deployment-modes/#api-driven-experimental), and APISIX Ingress Controller: Review Comment: For the installation, can we reference the Installation document instead to avoid duplication? ########## docs/en/latest/getting-started/configure-routes.md: ########## @@ -0,0 +1,198 @@ +--- +title: Configure Routes +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress +description: Learn how to create routes in APISIX using APISIX Ingress controller to forward client to upstream services. +--- + +<!-- +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +--> + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Apache APISIX provides flexible gateway management capabilities based on routes, in which routing paths and target upstreams are defined. + +This tutorial guides you through creating a Route using the APISIX Ingress Controller and verifying its behavior. You’ll configure a Route to a sample Upstream pointing to an httpbin service, then send a request to observe how APISIX proxies the traffic. + +## Prerequisites + +1. Complete [Get APISIX and APISIX Ingress Controller](./get-apisix-ingress-controller.md). + +## Set Up a Sample Upstream + +Install the httpbin example application on the cluster to test the configuration: + +```bash +kubectl apply -f https://raw.githubusercontent.com/apache/apisix-ingress-controller/refs/heads/v2.0.0/examples/httpbin/deployment.yaml +``` + +## Configure a Route + +In this section, you will create a Route that forwards client requests to the httpbin example application, an HTTP request and response service. + +You can use either Gateway API, Ingress, or APISIX CRD resources to configure the route. + +:::important + +If you are using Gateway API, you should first configure the GatewayClass and Gateway resources: + +<details> + +<summary>Show configuration</summary> + +```yaml +apiVersion: gateway.networking.k8s.io/v1 +kind: GatewayClass +metadata: + name: apisix +spec: + controllerName: apisix.apache.org/apisix-ingress-controller +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: Gateway +metadata: + name: apisix +spec: + gatewayClassName: apisix + listeners: + - name: http + protocol: HTTP + port: 80 + infrastructure: + parametersRef: + group: apisix.apache.org + kind: GatewayProxy + name: apisix-config +``` + +</details> + +If you are using Ingress or APISIX custom resources, you can proceed without additional configuration. + +::: + +Create a Kubernetes manifest file for a Route that proxy requests to httpbin: + +<Tabs +groupId="k8s-api" +defaultValue="gateway-api" +values={[ +{label: 'Gateway API', value: 'gateway-api'}, +{label: 'Ingress', value: 'ingress-rs'}, +{label: 'APISIX CRD', value: 'apisix-crd'} +]}> + +<TabItem value="gateway-api"> + +```yaml title="httpbin-route.yaml" +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: getting-started-ip +spec: + parentRefs: + - name: apisix + rules: + - matches: + - path: + type: Exact + value: /ip + backendRefs: + - name: httpbin + port: 80 +``` + +</TabItem> + +<TabItem value="ingress-rs"> + +```yaml title="httpbin-route.yaml" +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: getting-started-ip +spec: + ingressClassName: apisix Review Comment: This refers to the name of the Ingress Controller, not the Gateway. To avoid confusion, I would prefer something like `apisix-ingress-controller`. What do you think? But anyway, `apisix` is also acceptable. ########## docs/en/latest/getting-started/get-apisix-ingress-controller.md: ########## @@ -0,0 +1,136 @@ +--- +title: Get APISIX and APISIX Ingress Controller +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress +description: Learn how to quickly install and set up Apache APISIX Ingres Controller. +--- + +<!-- +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +--> + +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 the native Kubernetes Ingress or Gateway API, as well as with APISIX’s own declarative and easy-to-use custom resources. The controller translates these resources into APISIX configuration. + +This tutorial series walks you through how to quickly get started with APISIX on a [kind](https://kind.sigs.k8s.io) Kubernetes cluster and use the APISIX Ingress Controller to manage resources. + +## Prerequisites + +* Install [Docker](https://docs.docker.com/get-docker/) as a dependency of [kind](https://kind.sigs.k8s.io). +* Install [kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) to start a local Kubernetes cluster, or use any existing Kubernetes cluster (version 1.26+). +* Install [Helm](https://helm.sh/docs/intro/install/) (version 3.8+). +* Install [kubectl](https://kubernetes.io/docs/tasks/tools/) to run commands against Kubernetes clusters. + +## Create a Cluster and Configure Namespace + +In this section, you will be creating a kind cluster and configuring the namespace. Skip to [the next section](#install-apisix-and-apisix-ingress-controller-standalone-api-driven-mode) if you already have an existing cluster and a corresponding namspace. + +Ensure you have Docker running and start a kind cluster: + +```shell +kind create cluster +``` + +Create a new namespace `ingress-apisix`: + +```shell +kubectl create namespace ingress-apisix +``` + +Set the namespace to `ingress-apisix` to avoid specifying it explicitly in each subsequent command: + +```shell +kubectl config set-context --current --namespace=ingress-apisix +``` + +## Install APISIX and APISIX Ingress Controller (Standalone API-driven mode) + +Install the Gateway API CRDs, [APISIX Standalone API-driven mode](https://apisix.apache.org/docs/apisix/deployment-modes/#api-driven-experimental), and APISIX Ingress Controller: + +```bash +helm repo add apisix https://charts.apiseven.com +helm repo add bitnami https://charts.bitnami.com/bitnami Review Comment: For standalone deployment, I believe Bitnami is unnecessary. 🤔 ########## docs/en/latest/getting-started/get-apisix-ingress-controller.md: ########## @@ -0,0 +1,136 @@ +--- +title: Get APISIX and APISIX Ingress Controller +keywords: + - APISIX ingress + - Apache APISIX + - Kubernetes ingress +description: Learn how to quickly install and set up Apache APISIX Ingres Controller. +--- + +<!-- +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +--> + +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 the native Kubernetes Ingress or Gateway API, as well as with APISIX’s own declarative and easy-to-use custom resources. The controller translates these resources into APISIX configuration. + +This tutorial series walks you through how to quickly get started with APISIX on a [kind](https://kind.sigs.k8s.io) Kubernetes cluster and use the APISIX Ingress Controller to manage resources. + +## Prerequisites + +* Install [Docker](https://docs.docker.com/get-docker/) as a dependency of [kind](https://kind.sigs.k8s.io). +* Install [kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) to start a local Kubernetes cluster, or use any existing Kubernetes cluster (version 1.26+). +* Install [Helm](https://helm.sh/docs/intro/install/) (version 3.8+). +* Install [kubectl](https://kubernetes.io/docs/tasks/tools/) to run commands against Kubernetes clusters. + +## Create a Cluster and Configure Namespace + +In this section, you will be creating a kind cluster and configuring the namespace. Skip to [the next section](#install-apisix-and-apisix-ingress-controller-standalone-api-driven-mode) if you already have an existing cluster and a corresponding namspace. + +Ensure you have Docker running and start a kind cluster: + +```shell +kind create cluster +``` + +Create a new namespace `ingress-apisix`: + +```shell +kubectl create namespace ingress-apisix +``` + +Set the namespace to `ingress-apisix` to avoid specifying it explicitly in each subsequent command: + +```shell +kubectl config set-context --current --namespace=ingress-apisix +``` + +## Install APISIX and APISIX Ingress Controller (Standalone API-driven mode) + +Install the Gateway API CRDs, [APISIX Standalone API-driven mode](https://apisix.apache.org/docs/apisix/deployment-modes/#api-driven-experimental), and APISIX Ingress Controller: + +```bash +helm repo add apisix https://charts.apiseven.com +helm repo add bitnami https://charts.bitnami.com/bitnami +helm repo update + +helm install apisix \ + --namespace ingress-apisix \ + --create-namespace \ + --set apisix.deployment.role=traditional \ + --set apisix.deployment.role_traditional.config_provider=yaml \ + --set etcd.enabled=false \ + --set ingress-controller.enabled=true \ + --set ingress-controller.config.provider.type=apisix-standalone \ + --set ingress-controller.apisix.adminService.namespace=ingress-apisix \ + --set ingress-controller.gatewayProxy.createDefault=true \ + apisix/apisix +``` + +More details on the installation can be found in the [Installation Guide](../install.md). + +## Verify Installation + +Check the statuses of resources in the current namespace: + +```shell +kubectl get all Review Comment: specify the namespace? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@apisix.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org