Portal

Proto: portal.proto

Package: apimanagement.gloo.solo.io

Types:

API

Field Description
routeTable (common.gloo.solo.io.ObjectSelector)

A list of route tables with routes to the APIs you want the developer portal to expose. The route table might also have ‘portalMetadata’ key-value fields that you want to display in the developer portal for end users.

PortalSpec

The Portal resource configures a developer portal that you can use to securely expose your APIs to end users. Before you create the Portal, you bundle the APIs that you want to expose into a route table. Then, you prepare a usage plan to control access to your APIs by applying rate limiting and external auth policies to the routes in the route table. For more information, see the Portal docs.

The following examples show a Portal resource that refers to usage plans that are named in the rate limit server config's descriptors.

apiVersion: portal.gloo.solo.io/v2
kind: Portal
   metadata:
     name: public-portal
     namespace: gloo-mesh
spec:
   portalBackendSelectors:
     - selector:
         namespace: gloo-mesh
         cluster: cluster-1
   usagePlans:
     - name: bronze
       displayName: "Bronze Plan"
       description: "A basic usage plan"
     - name: silver
       description: "A better usage plan"
     - name: gold
       description: "The best usage plan!"
   apis:
     - routeTables:
         name: productpage
         namespace: bookinfo
         cluster: cluster-1
apiVersion: admin.gloo.solo.io/v2
kind: RateLimitServerConfig
   metadata:
     name: usage-plans
     namespace: gloo-mesh-addons
spec:
   destinationServers: [ ] # omitted, server refs
   raw:
     descriptors:
       - key: usagePlan
         value: bronze
         descriptors:
           - key: userId
             rateLimit:
               requestsPerUnit: 50
               unit: MINUTE
       - key: usagePlan
         value: silver
         descriptors:
           - key: userId
             rateLimit:
               requestsPerUnit: 200
               unit: MINUTE
        - key: usagePlan
          value: gold
          descriptors:
            - key: userId
              rateLimit:
                requestsPerUnit: 1000
                unit: MINUTE
Field Description
portalBackendSelector (repeated common.gloo.solo.io.WorkloadSelector)

The workloads where an existing portal backend is running.
apis (repeated API)

A list of route tables that have routes to the APIs you want to expose in the developer portal.
usagePlans (repeated PortalSpec.UsagePlan)

The usage plans to control access to the APIs that the developer portal exposes.
domains (repeated string)

The domains on which this Portal will be served. The Host header received by the Portal Web App will be matched to one of these domains in order to determine which Portal will be served.
If you are using the Gateway through which you are exposing the Portal is listening on a port other than 80/443, you should include the port as part of the domain string, e.g. “portal.solo.io:8443”.
To prevent undefined behavior, creating a Portal whose domain conflicts with an existing Portal will result in the Portal resource being placed into an ‘Invalid’ state.

PortalSpec.UsagePlan

Field Description
name (string)

Match the names of the usage plans with the descriptors that you defined in the rate limit server config.
displayName (string)

Optional display name for the usage plan to show end users in the developer portal.
description (string)

Optional description for the usage plan to show end users in the developer portal. You might include information about how to get the plan or what the plan includes and excludes.

PortalStatus

reflects the status of the Portal resource

Field Description
global (common.gloo.solo.io.GenericGlobalStatus)

workspaces (repeated PortalStatus.WorkspacesEntry)

The status of the resource in each workspace that it exists in.
ownerWorkspace (common.gloo.solo.io.OwnerWorkspace)

Name of workspace that owns the portal.

PortalStatus.WorkspacesEntry

Field Description
key (string)

value (common.gloo.solo.io.WorkspaceStatus)