What you’ll need
- A GKE cluster.
- An ngrok account.
- kubectl and Helm 3.0.0+ installed on your local workstation.
- The ngrok Kubernetes Operator installed on your cluster.
- A reserved domain from the ngrok dashboard or API; this guide refers to it as
<NGROK_DOMAIN>.
Ensure kubectl can speak with your cluster
With a GKE cluster, authentication for kubectl uses a credential helper.
To deploy the ngrok Kubernetes Operator, ensure you can use the gcloud CLI and that the credential helper is available.
Ensure that you have the gcloud CLI installed and configured with your Google Cloud credentials.
You can confirm this works and you’re authenticated correctly by running the following command:
gcloud auth login to authenticate with your Google account.
Next, ensure that the credential helper is available.
Run the following command to confirm that the credential helper is available:
Install the ngrok Kubernetes Operator
Now install the ngrok Kubernetes Operator to provide ingress to your services. See the Operator installation doc for details on using Helm with your ngrok credentials.Install a sample application
Create a manifest file (for examplengrok-manifest.yaml) with the following contents.
This deploys the tinyllama demo LLM application.
Replace the NGROK_DOMAIN on line 45 with your reserved domain (the URL you’ll use to access your service).
On a free account, use a static subdomain; on a paid account, you can use a custom domain or a subdomain of ngrok.app or ngrok.dev.
showLineNumbers
Troubleshooting: If you get an error when applying the manifest, double-check that you’ve updated the
NGROK_DOMAIN value and try again.https://my-awesome-k8s-cluster.ngrok.app) to confirm the tinyllama app is accessible from the internet.
Add authentication to your app
With the Traffic Policy system and theoauth action, ngrok manages OAuth protection entirely at the ngrok cloud service.
This means you don’t need to add any additional services to your cluster, nor alter any routes, to ensure ngrok’s edge authenticates and authorizes all requests before allowing ingress and access to your endpoint.
To enable the oauth action, you’ll create a new NgrokTrafficPolicy custom resource and apply it to your entire Ingress with an annotation.
You can also apply the policy to just a specific backend or as the default backend for an Ingress—see the documentation on using the Operator with Ingresses.
Edit your existing ngrok-manifest.yaml manifest with the following, leaving the Service and Deployment as they were.
Note the new annotations field and the NgrokTrafficPolicy CR.
-
Re-apply your
ngrok-manifest.yamlconfiguration. - When you open your demo app again, you’ll be asked to log in via Google. That’s a start, but what if you want to authenticate only yourself or colleagues?
-
Use expressions and CEL interpolation to filter out and reject OAuth logins that don’t contain
example.com. Update theNgrokTrafficPolicyportion of your manifest after changingexample.comto your domain. - Check out your deployed tinyllama app once again. If you log in with an email that doesn’t match your domain, ngrok rejects your request.