Install Janssen on AKS#
System Requirements#
The resources may be set minimally to the below:
- 8-12 GB RAM based on the services deployed
- 8-10 CPU cores based on the services deployed
- 50GB hard-disk
Use the listing below for a detailed estimation of minimum required resources. The table contains the default resources recommendation per service. Depending on the use of each service the resources need may be increased or decreased.
| 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 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 |
| link | 0.5 | 1GB | N/A | 64 Bit | No |
| saml | 0.5 | 1GB | N/A | 64 Bit | No |
| kc-scheduler - job | 0.3 | 0.3GB | N/A | 64 Bit | No |
| cleanup - job | 0.3 | 0.3GB | N/A | 64 Bit | Yes |
Releases of images are in style 1.0.0-beta.0, 1.0.0-0
Initial Setup#
-
Install Azure CLI
-
Create a Resource Group
az group create --name janssen-resource-group --location eastus -
Create an AKS cluster such as the following example:
You can adjustaz aks create -g janssen-resource-group -n janssen-cluster --enable-managed-identity --node-vm-size NODE_TYPE --node-count 2 --enable-addons monitoring --enable-msi-auth-for-monitoring --generate-ssh-keysnode-countandnode-vm-sizeas per your desired cluster size -
Connect to the cluster
az aks install-cli az aks get-credentials --resource-group janssen-resource-group --name janssen-cluster -
Install Helm3
-
Create
jansnamespace where our resources will residekubectl create namespace jans
Jans 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.yamland 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.yamlfile:global: lbIp: #Add the Loadbalance IP from the previous command isFqdnRegistered: false -
FQDN/domain is registered:
Add the following yaml snippet to your
override.yamlfile:global: lbIp: #Add the LoadBalancer IP from the previous command isFqdnRegistered: true fqdn: demoexample.jans.io #CHANGE-THIS to the FQDN used for Jans nginx-ingress: ingress: path: / hosts: - demoexample.jans.io #CHANGE-THIS to the FQDN used for Jans tls: - secretName: tls-certificate hosts: - demoexample.jans.io #CHANGE-THIS to the FQDN used for Jans -
PostgreSQL for persistence storage
In a production environment, a production-grade PostgreSQL server should be used such as
Azure Database for PostgreSQLFor testing purposes, you can deploy it on the AKS cluster using the following command:
helm install my-release --set auth.postgresPassword=Test1234#,auth.database=jans -n jans oci://registry-1.docker.io/bitnamicharts/postgresqlAdd the following yaml snippet to your
override.yamlfile:global: cnPersistenceType: sql config: configmap: cnSqlDbName: jans cnSqlDbPort: 5432 cnSqlDbDialect: pgsql cnSqlDbHost: my-release-postgresql.jans.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
Azure Database for MySQLFor testing purposes, you can deploy it on the AKS cluster using the following command:
helm install my-release --set auth.rootPassword=Test1234#,auth.database=jans -n jans oci://registry-1.docker.io/bitnamicharts/mysqlAdd the following yaml snippet to your
override.yamlfile:global: cnPersistenceType: sql config: configmap: cnSqlDbName: jans cnSqlDbPort: 3306 cnSqlDbDialect: mysql cnSqlDbHost: my-release-mysql.jans.svc cnSqlDbUser: root cnSqlDbTimezone: UTC cnSqldbUserPassword: Test1234#So if your desired configuration has FQDN and MySQL, the final
override.yamlfile will look something like that:global: cnPersistenceType: sql lbIp: "" #Add the LoadBalancer IP from previous command isFqdnRegistered: true fqdn: demoexample.jans.io #CHANGE-THIS to the FQDN used for Jans nginx-ingress: ingress: path: / hosts: - demoexample.jans.io #CHANGE-THIS to the FQDN used for Jans tls: - secretName: tls-certificate hosts: - demoexample.jans.io #CHANGE-THIS to the FQDN used for Jans config: configmap: cnSqlDbName: jans cnSqlDbPort: 3306 cnSqlDbDialect: mysql cnSqlDbHost: my-release-mysql.jans.svc cnSqlDbUser: root cnSqlDbTimezone: UTC cnSqldbUserPassword: Test1234#
-
-
Install Jans
After finishing all the tweaks to the
override.yamlfile, we can use it to install jans.helm repo add janssen https://docs.jans.io/charts helm repo update helm install janssen janssen/janssen -n jans -f override.yaml
Configure Janssen#
You can use the TUI to configure Janssen components. The TUI calls the Config API to perform ad hoc configuration.
Created: 2022-05-18