The Developer Portal is deployed on Kubernetes using native constructs like pods, services, and custom resource definitions. The Dev Portal complements and enhances the functionality of Istio by adding features like external authentication and rate limiting.
The primary components of Developer Portal are listed below by resource type.
- Dev Portal operator - Monitors Custom Resources and modifies Istio/Gloo and Envoy configurations.
- Admin server - Backend for Dev Portal administrator UI.
- ExtAuth - Extends the underlying gateway to include external authentication sources.
- Rate Limiting - Extends the underlying gateway to allow for rate-limiting of API consumption.
- Redis - Data store for rate limiting
Custom Resource Definitions
apidocs- An APIDoc tells the DevPortal controller how to load an API Specification Document. APIDocs define the operations which are bundled and exposed in API Products.
apiproducts- API Products define a group of API Operations (endpoints) to be published for use by Developers. The API Product resource declares which APIs are bundled together as well as how to route to the backends serving those APIs.
portals- A PortalSpec tells the Dev Portal Operator to fetch and serve static assets which are used by the Dev Portal UI. Each portal can publish one or more API Products.
users- A User defines an entity which can authenticate to the Portal App. Users are members of Groups, which determines which ApiDocs they can see.
groups- A Group can be use to define access levels for a set of users.
routes- Routes define how an API Product connects to a service described by an API Doc. There can be multiple routes defined in an API Product.
The admin dashboard is served up by the Admin server service of type ClusterIP on port 8080. You can access the admin dashboard by updating the service to use a NodePort or Load Balancer ServiceType, or by using port-forwarding with kubectl. An example command would be the following:
kubectl port-forward -n dev-portal svc/admin-server 8080
Currently the admin dashboard does not have an authentication layer in front of it, so it would be best to restrict namespace access to Dev Portal or port-forwarding permissions to administrators only.