| --- |
| title: Getting started |
| keywords: |
| - APISIX ingress |
| - Apache APISIX |
| - Kubernetes ingress |
| description: Guide to get started with Apache APISIX ingress 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 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. |
| |
|  |
| |
| See [Design](./design.md) to learn more about how APISIX ingress controller works under the hood. |
| |
| ## Features |
| |
| To summarize, APISIX ingress controller has the following features: |
| |
| - 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. |
| |
| ## Get involved |
| |
| You can contribute to the development of APISIX ingress controller. See [Development guide](./contribute.md) for instructions on setting up the project locally. |
| |
| See the [Contribute to APISIX](https://apisix.apache.org/docs/general/contributor-guide/) section for details on the contributing flow. |
| |
| ## Compatibility with APISIX |
| |
| The table below shows the compatibility between APISIX ingress controller and the APISIX proxy. |
| |
| | 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` | | |