Deploy the Gateway API integrator and Gateway Route Configurator charms

What you’ll do

This tutorial will walk you through deploying the gateway-api-integrator and gateway-route-configurator charms; you will:

  • Deploy and configure the gateway-api-integrator charm

  • Establish an integration with a TLS provider charm

  • Deploy and configure the gateway-route-configurator charm

  • Deploy a ingress requirer charm and provide gateway

Prerequisites

  • A Kubernetes cluster with a gateway controller installed.

  • A host machine with Juju version 3.3 or above.

Deploy and configure the gateway-api-integrator charm

  • Deploy and configure the charm

    juju deploy gateway-api-integrator
    juju config gateway-api-integrator gateway-class=cilium
    

Establish an integration with a TLS provider charm

  • Deploy a TLS provider

    juju deploy self-signed-certificates
    
  • Integrate the gateway-api-integrator charm with the TLS provider

    juju integrate gateway-api-integrator self-signed-certificates
    

Deploy and configure the gateway-route-configurator charm

  • Deploy and configure the charm

    juju deploy gateway-route-configurator
    juju config gateway-route-configurator hostname=testing.com paths=/app1,/app2
    
  • Integrate with the gateway-api-integrator charm

    juju integrate gateway-api-integrator:gateway-route gateway-route-configurator:gateway-route
    

Deploy and integrate the flask-k8s charn

  • Deploy and integrate the charm

    juju deploy flask-k8s
    juju integrate flask-k8s:ingress gateway-route-configurator:ingress
    

Check juju status to verify that the deployment was successful. The terminal output should look similar to the following:

App                         Version  Status  Scale  Charm                       Channel      Rev  Address         Exposed  Message
flask-k8s                            active      1  flask-k8s                   latest/edge   19  10.152.183.114  no                                                                          
gateway-api-integrator               active      1  gateway-api-integrator                     0  10.152.183.106  no       Gateway addresses: 10.43.45.1                                      
gateway-route-configurator           active      1  gateway-route-configurator                 0  10.152.183.37   no       Ready                                                              
self-signed-certificates             active      1  self-signed-certificates    1/stable     317  10.152.183.236  no                                                                          
                                                                                                                     
Unit                           Workload  Agent  Address     Ports  Message                                                          
flask-k8s/0*                   active    idle   10.1.0.123                                                                             
gateway-api-integrator/0*      active    idle   10.1.0.81          Gateway addresses: 10.43.45.1                                                
gateway-route-configurator/0*  active    idle   10.1.0.202         Ready                                                                    
self-signed-certificates/0*    active    idle   10.1.0.187                                                                                         
                                                                                                              
Integration provider                   Requirer                                  Interface         Type     Message
flask-k8s:secret-storage               flask-k8s:secret-storage                  secret-storage    peer       
gateway-api-integrator:gateway-route   gateway-route-configurator:gateway-route  gateway-route     regular    
gateway-route-configurator:ingress     flask-k8s:ingress                         ingress           regular
self-signed-certificates:certificates  gateway-api-integrator:certificates       tls-certificates  regular

Now curl the endpoint:

curl -k --resolve testing.com:443:10.43.45.1 https://testing.com/app1