Install Gluu Flex on GKE#
System Requirements#
The resources may be set minimally to the below:
- 8-13 GB RAM based on the services deployed
- 8-11 CPU cores based on the services deployed
- 50GB hard-disk
Use the listing below for a detailed estimation of the minimum required resources. The table contains the default resources recommendation per service. Depending on the use of each service the resources need may be increase or decrease.
Service | CPU Unit | RAM | Disk Space | Processor Type | Required |
---|---|---|---|---|---|
Auth server | 2.5 | 2.5GB | N/A | 64 Bit | Yes |
fido2 | 0.5 | 0.5GB | N/A | 64 Bit | No |
scim | 1 | 1GB | N/A | 64 Bit | No |
config - job | 0.3 | 0.3GB | N/A | 64 Bit | Yes on fresh installs |
persistence - job | 0.3 | 0.3GB | N/A | 64 Bit | Yes on fresh installs |
nginx | 1 | 1GB | N/A | 64 Bit | Yes if ALB/Istio not used |
auth-key-rotation | 0.3 | 0.3GB | N/A | 64 Bit | No [Strongly recommended] |
config-api | 1 | 1GB | N/A | 64 Bit | No |
casa | 0.5 | 0.5GB | N/A | 64 Bit | No |
admin-ui | 2 | 2GB | N/A | 64 Bit | No |
link | 0.5 | 1GB | N/A | 64 Bit | No |
saml | 0.5 | 1GB | N/A | 64 Bit | No |
Releases of images are in style 1.0.0-beta.0, 1.0.0-0
Initial Setup#
-
Before initiating the setup, please obtain an SSA for Flex trial, after which you will issued a JWT.
-
Enable GKE API if not enabled yet.
-
If you are using
Cloud Shell
, you can skip to step 7. -
Install gcloud.
-
Install
kubectl
usinggcloud components install kubectl
command. -
Install Helm3.
-
Create cluster using a command such as the following example:
You can adjustgcloud container clusters create gluu-cluster --num-nodes 2 --machine-type e2-standard-4 --zone us-west1-a
num-nodes
andmachine-type
as per your desired cluster size -
Create
gluu
namespace where our resources will residekubectl create namespace gluu
Gluu Flex Installation using Helm#
-
Install Nginx-Ingress, if you are not using Istio ingress
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo add stable https://charts.helm.sh/stable helm repo update helm install nginx ingress-nginx/ingress-nginx
-
Create a file named
override.yaml
and add changes as per your desired configuration:-
FQDN/domain is not registered:
Get the Loadbalancer IP:
kubectl get svc nginx-ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'
Add the following yaml snippet to your
override.yaml
file:global: lbIp: #Add the Loadbalance IP from the previous command isFqdnRegistered: false
-
FQDN/domain is registered:
Add the following yaml snippet to your
override.yaml
file:global: lbIp: #Add the LoadBalancer IP from the previous command isFqdnRegistered: true fqdn: demoexample.gluu.org #CHANGE-THIS to the FQDN used for Gluu nginx-ingress: ingress: path: / hosts: - demoexample.gluu.org #CHANGE-THIS to the FQDN used for Gluu tls: - secretName: tls-certificate hosts: - demoexample.gluu.org #CHANGE-THIS to the FQDN used for Gluu
-
PostgreSQL for persistence storage
In a production environment, a production grade PostgreSQL server should be used such as
Cloud SQL
For testing purposes, you can deploy it on the GKE cluster using the following command:
helm install my-release --set auth.postgresPassword=Test1234#,auth.database=gluu -n gluu oci://registry-1.docker.io/bitnamicharts/postgresql
Add the following yaml snippet to your
override.yaml
file:global: cnPersistenceType: sql config: configmap: cnSqlDbName: gluu cnSqlDbPort: 5432 cnSqlDbDialect: pgsql cnSqlDbHost: my-release-postgresql.gluu.svc cnSqlDbUser: postgres cnSqlDbTimezone: UTC cnSqldbUserPassword: Test1234#
-
MySQL for persistence storage
In a production environment, a production grade MySQL server should be used such as
Cloud SQL
For testing purposes, you can deploy it on the GKE cluster using the following command:
helm install my-release --set auth.rootPassword=Test1234#,auth.database=gluu -n gluu oci://registry-1.docker.io/bitnamicharts/mysql
Add the following yaml snippet to your
override.yaml
file:global: cnPersistenceType: sql config: configmap: cnSqlDbName: gluu cnSqlDbPort: 3306 cnSqlDbDialect: mysql cnSqlDbHost: my-release-mysql.gluu.svc cnSqlDbUser: root cnSqlDbTimezone: UTC cnSqldbUserPassword: Test1234#
So if your desired configuration has FQDN and MySQL, the final
override.yaml
file will look something like that:global: cnPersistenceType: sql lbIp: "" #Add the LoadBalancer IP from previous command isFqdnRegistered: true fqdn: demoexample.gluu.org #CHANGE-THIS to the FQDN used for Gluu nginx-ingress: ingress: path: / hosts: - demoexample.gluu.org #CHANGE-THIS to the FQDN used for Gluu tls: - secretName: tls-certificate hosts: - demoexample.gluu.org #CHANGE-THIS to the FQDN used for Gluu config: configmap: cnSqlDbName: gluu cnSqlDbPort: 3306 cnSqlDbDialect: mysql cnSqlDbHost: my-release-mysql.gluu.svc cnSqlDbUser: root cnSqlDbTimezone: UTC cnSqldbUserPassword: Test1234#
-
-
Install Gluu Flex
After finishing all the tweaks to the
override.yaml
file, we can use it to install gluu flex.helm repo add gluu-flex https://docs.gluu.org/charts helm repo update helm install gluu gluu-flex/gluu -n gluu -f override.yaml
Configure Gluu Flex#
You can use the Janssen TUI to configure Flex components. The TUI calls the Config API to perform ad hoc configuration.
Created: 2022-09-22