docs: Deploy to OpenShift (#1761)
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
diff --git a/docs/en/latest/deployments/openshift.md b/docs/en/latest/deployments/openshift.md
new file mode 100644
index 0000000..a660d63
--- /dev/null
+++ b/docs/en/latest/deployments/openshift.md
@@ -0,0 +1,93 @@
+---
+title: OpenShift
+keywords:
+ - APISIX ingress
+ - Apache APISIX
+ - Kubernetes ingress
+ - OpenShift
+description: Guide to install APISIX ingress controller on OpenShift.
+---
+<!--
+#
+# 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.
+#
+-->
+
+This document explains how you can install APISIX ingress locally on [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift/container-platform).
+
+## Prerequisites
+
+Setting up APISIX ingress on OpenShift requires the following:
+
+* [Deploy your OpenShift cluster](https://www.redhat.com/en/technologies/cloud-computing/openshift/deploy-red-hat-openshift)
+* Install [OpenShift CLI (oc)](https://docs.openshift.com/container-platform/4.12/cli_reference/openshift_cli/getting-started-cli.html#installing-openshift-cli)
+* Install [Helm](https://helm.sh/).
+* Install [kubectl](https://kubernetes.io/docs/tasks/tools/).
+
+## Before Start
+
+You should create a Project to deploy APISIX Ingress controller. e.g. `ingress-apisix`
+
+Due to the existence of [security context constraints (SCC)](https://docs.openshift.com/container-platform/4.9/authentication/managing-security-context-constraints.html) in OpenShift, you need to create an authorized account for deployment.
+
+You can complete the relevant operations through `oc` CLI.
+
+## Install APISIX and ingress controller
+
+The script below installs APISIX and the ingress controller:
+
+```shell
+helm repo add apisix https://charts.apiseven.com
+helm repo add bitnami https://charts.bitnami.com/bitnami
+helm repo update
+# We use Apisix 3.0 in this example. If you're using Apisix v2.x, please set to v2
+ADMIN_API_VERSION=v3
+helm install apisix apisix/apisix \
+ --set gateway.type=NodePort \
+ --set ingress-controller.enabled=true \
+ --set etcd.podSecurityContext.enabled=false \
+ --set etcd.containerSecurityContext.enabled=false \
+ --create-namespace \
+ --namespace ingress-apisix \
+ --set ingress-controller.config.apisix.serviceNamespace=ingress-apisix \
+ --set ingress-controller.config.apisix.adminAPIVersion=$ADMIN_API_VERSION
+kubectl get service --namespace ingress-apisix
+```
+
+:::tip
+
+APISIX Ingress also supports (beta) the new [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/).
+
+If the Gateway API CRDs are not installed in your cluster by default, you can install it by running:
+
+```shell
+kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.5.0/standard-install.yaml
+```
+
+You should also enable APISIX Ingress controller to work with the Gateway API. You can do this by adding the flag `--set ingress-controller.config.kubernetes.enableGatewayAPI=true` while installing through Helm.
+
+See [this tutorial](https://apisix.apache.org/docs/ingress-controller/tutorials/configure-ingress-with-gateway-api) for more info.
+
+:::
+
+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.
+
+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.