Using the GCP Marketplace NGINX Ingress Controller Image
Follow these steps to deploy F5 NGINX Ingress Controller through the GCP Marketplace.
Overview
NGINX Ingress Controller acts as a Kubernetes Ingress Controller for both NGINX and NGINX Plus. It offers:
- Routing based on host headers: For example, foo.example.com routes to one set of services, while bar.example.com routes to another.
- Path-based routing: Requests beginning with
/serviceA
go to service A; those starting with/serviceB
go to service B. - SSL/TLS termination for individual hostnames, like foo.example.com.
Before you begin
Before installing NGINX Ingress Controller, review our Installation with Manifests guide. This guide shows you how to build a local NGINX Ingress Controller image and set up the required CustomResourceDefinitions (CRDs).
Installation
Choose one of the following methods to install NGINX Ingress Controller.
Install NGINX Ingress Controller to an existing GKE cluster
-
Open Google Cloud Console and go to Kubernetes Engine > Applications.
-
Select DEPLOY FROM MARKETPLACE and search for NGINX Ingress Controller.
Note:
Make sure to choose a Premium Edition image from NGINX, Inc., not a third-party one. -
Choose the appropriate NGINX Ingress Controller image, then select CONFIGURE.
-
Choose your cluster:
Select an existing Kubernetes Cluster from the list. The default namespace is automatically chosen, but you can create a new one if you prefer. The App instance name will be a prefix for all resources created by the deployment and needs to be unique within the selected namespace.
Recommended settings are pre-selected but feel free to adjust them.
Note:
If you see the CREATE NEW CLUSTER button, select OR SELECT AN EXISTING CLUSTER . -
Select DEPLOY to start NGINX Ingress Controller installation process.
You can find NGINX Ingress Controller application by going back to Kubernetes Engine > Applications.
Install to a new GKE cluster
If you prefer to use a new GKE cluster, follow these steps. Ensure you have enough vCPU for both NGINX Ingress Controller and any other applications you’ll deploy.
-
Open Google Cloud Console and go to *Marketplace.
-
Search for NGINX Ingress Controller.
Note:
Make sure to choose a Premium Edition image from NGINX, Inc., not a third-party one. -
Choose the appropriate NGINX Ingress Controller image, then select CONFIGURE.
-
Configure the new GKE cluster:
Choose the appropriate zone, network, and subnetwork.
-
Select CREATE NEW CLUSTER.
After a short delay, the cluster will be ready.
-
Finish the installation:
The default namespace is automatically selected, but you can create a new one if you wish. The App instance name will be a prefix for all resources created by the deployment and needs to be unique within the selected namespace. Confirm or adjust the settings and then select DEPLOY.
You can find your NGINX Ingress Controller application by going back to Kubernetes Engine > Applications.
Configuration
When you install NGINX Ingress Controller from the GCP Marketplace, it comes with default settings and an empty ConfigMap. The resources have names ending in a suffix that reflects the app instance name you chose during installation. This suffix has the format
For example, if you’ve installed NGINX Ingress Controller in the nginx-ingress
namespace and used the app instance name nginx-ingress-plus
, you can check its ConfigMap by running this kubectl
command:
kubectl get configmap -n nginx-ingress nginx-ingress-plus-nginx-ingress -o yaml
$ kubectl get configmap -n nginx-ingress nginx-ingress-plus-nginx-ingress -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":null,"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/instance":"nginx-ingress-plus","app.kubernetes.io/managed-by":"Helm","app.kubernetes.io/name":"nginx-ingress-plus-nginx-ingress","helm.sh/chart":"nginx-ingress-0.16.2"},"name":"nginx-ingress-plus-nginx-ingress","namespace":"nginx-ingress","ownerReferences":[{"apiVersion":"app.k8s.io/v1beta1","blockOwnerDeletion":true,"kind":"Application","name":"nginx-ingress-plus","uid":"5cbbebd8-df13-4001-bd65-9467405d9a9d"}]}}
creationTimestamp: "2022-08-25T01:03:10Z"
labels:
app.kubernetes.io/instance: nginx-ingress-plus
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: nginx-ingress-plus-nginx-ingress
helm.sh/chart: nginx-ingress-0.16.2
name: nginx-ingress-plus-nginx-ingress
namespace: nginx-ingress
ownerReferences:
- apiVersion: app.k8s.io/v1beta1
blockOwnerDeletion: true
kind: Application
name: nginx-ingress-plus
uid: 5cbbebd8-df13-4001-bd65-9467405d9a9d
resourceVersion: "147519"
uid: 3fa33891-7a30-4004-91bd-bd5d652e34a9
For options to customize your resources, see our Configuration documentation.
Basic Usage
To learn how to set up a basic application with NGINX Ingress Controller, refer to our Basic Configuration Example.