Istio
The following document will take you through the process of installing, verifying the installation, and uninstalling the Gloo Portal for Istio.
Prerequisites
For this guide, we’ll need the following:
helm
(versionv3.0.0
or higher)kubectl
- A compatible Kubernetes cluster setup (1.14 or higher), to which you can connect via
kubectl
- Istio 1.5 or higher installed to your cluster
- An Istio Gateway that will expose your APIs
Note on Istio Gateways
The Gloo Portal will configure Istio to expose your APIs on one or more Gateways
. When installing, you can
configure which Gateways
should be targeted via dedicated values in the Gloo Portal Helm chart.
By default, these values are:
istio:
gateways:
- name: istio-system/istio-ingressgateway
ports:
- port: 80
targetPort: 8080
- port: 443
targetPort: 8443
name
identifies a Gateway resource and must be in the<gateway namespace>/<gateway name>
format.ports
is an optional attribute; it represents a set of mappings between the port which is exposed on the gateway service and the one on which the actual gateway proxy workloads listen on. Starting with Istio 1.6 (see here), these ports can be different. If the ports are the same, then the attribute can be omitted; else users need to specify mappings for the relevantGateway
ports.
For example, the default values would work if the following resources are in place:
For the remainder of this guide, we will assume the below Istio configuration is applied to your cluster. If your setup is different, you should customize the Helm values accordingly.
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
labels:
release: istio
name: istio-ingressgateway
namespace: istio-system
spec:
selector:
app: istio-ingressgateway
istio: ingressgateway
servers:
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP
---
# This is the Kubernetes service that exposes the above Gateway
apiVersion: v1
kind: Service
metadata:
name: istio-ingressgateway
namespace: istio-system
spec:
clusterIP: 10.20.12.129
externalTrafficPolicy: Cluster
# Other ports omitted for brevity
ports:
- name: http2
port: 80
protocol: TCP
targetPort: 8080
- name: https
port: 443
protocol: TCP
targetPort: 8443
selector:
app: istio-ingressgateway
istio: ingressgateway
type: LoadBalancer
Installation
To install the Gloo Portal you’ll use a Helm chart. You will also need a license key to submit as part of the chart deployment. If you do not have a license key, please request a trial on our website.
First we will add the repository with the Helm chart and update the repo contents.
# Add the Helm repository for the Gloo Portal
helm repo add dev-portal https://storage.googleapis.com/dev-portal-helm
helm repo update
Then we will create the target namespace for the deployment and install the Gloo Portal.
Replace the LICENSE_KEY
placeholder with your license key.
# Create the namespace and install the Helm chart
kubectl create namespace dev-portal
helm install dev-portal dev-portal/dev-portal -n dev-portal --set licenseKey.value=LICENSE_HERE --set istio.enabled=true
Helm will create an installation named dev-portal
.
NAME: dev-portal
LAST DEPLOYED: XXXXXXXXXXX
NAMESPACE: dev-portal
STATUS: deployed
REVISION: 1
TEST SUITE: None
Verify your Installation
To verify that your installation was successful, check that the Gloo Portal deployments and services have been created.
If you choose to install into a namespace other than dev-portal
, you will need to query your chosen namespace instead.
kubectl get all -n dev-portal
NAME READY STATUS RESTARTS AGE
pod/admin-server-797b786f49-9qs6d 3/3 Running 0 5m
pod/dev-portal-75c5c4d5c6-8f6kq 1/1 Running 0 5m
pod/ext-auth-service-77d669b77c-2hc47 1/1 Running 0 5m
pod/rate-limiter-74c57cddcc-wqnxs 1/1 Running 0 5m
pod/redis-86c48dfd4-85k5j 1/1 Running 0 5m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dev-portal ClusterIP 10.20.5.150 8080/TCP 5m
service/ext-auth-service ClusterIP 10.20.4.140 8083/TCP 5m
service/istio-dev-portal ClusterIP 10.20.5.78 8080/TCP 5m
service/rate-limiter ClusterIP 10.20.14.114 8083/TCP,8084/TCP,9091/TCP 5m
service/redis ClusterIP 10.20.11.165 6379/TCP 5m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/admin-server 1/1 1 1 5m
deployment.apps/dev-portal 1/1 1 1 5m
deployment.apps/ext-auth-service 1/1 1 1 5m
deployment.apps/rate-limiter 1/1 1 1 5m
deployment.apps/redis 1/1 1 1 5m
NAME DESIRED CURRENT READY AGE
replicaset.apps/admin-server-797b786f49 1 1 1 5m
replicaset.apps/dev-portal-75c5c4d5c6 1 1 1 5m
replicaset.apps/ext-auth-service-77d669b77c 1 1 1 5m
replicaset.apps/rate-limiter-74c57cddcc 1 1 1 5m
replicaset.apps/redis-86c48dfd4 1 1 1 5m
Please refer to the Architecture page for more details about what function each deployment serves.
Uninstall
To uninstall the Gloo Portal simply run the following command:
helm uninstall dev-portal -n dev-portal