Deploy Intelligent Workload Distribution
From Genesys Documentation
This topic is part of the manual Intelligent Workload Distribution Private Edition Guide for version Current of Intelligent Workload Distribution.
Contents
Learn how to deploy Intelligent Workload Distribution (IWD) into a private edition environment.
Related documentation:
RSS:
Assumptions
- The instructions on this page assume you are deploying the service in a service-specific namespace, named in accordance with the requirements on Creating namespaces. If you are using a single namespace for all private edition services, replace the namespace element in the commands on this page with the name of your single namespace or project.
- Similarly, the configuration and environment setup instructions assume you need to create namespace-specific (in other words, service-specific) secrets. If you are using a single namespace for all private edition services, you might not need to create separate secrets for each service, depending on your credentials management requirements. However, if you do create service-specific secrets in a single namespace, be sure to avoid naming conflicts.
Kubernetes
Prepare
- Create a new project using the following command:
kubectl create namespace iwd
- Create a pull secret for accessing the JFrog registry. See Create the pull secret.
- Download the IWD helm chart from the JFrog repository. See Download the Helm charts.
- Create a gauth client.
IWD requires clientId and clientSecret registered in Authentication Service. These must be provided during Helm Chart deployment. Create new client credentials if they are not already created . Refer to the GWS documentation for more information.
Deploy
- Extract parameters from chart to see multiple (default) values used to fine tune the installation.For information on parameters and values in the values.yaml file, see Override Helm chart values.
$ helm show values iwd-<version>.tgz > values.yaml
Sample override file:replicaCount: 1 image: registry: pureengage-docker-staging.jfrog.io repository: nexus/iwd pullSecrets: [] gauth: auth: url: http://gauth-auth.gauth redirectUrl: https://gauth.${domain} redis: nodes: redis://infra-redis-redis-cluster.infra.svc.cluster.local:6379 useCluster: true enableTLS: false password: <test_password> gws: url: http://gauth-auth.gauth clientId: <test_clientID> clientSecret: <test_clientSecret> apiKey: <test_apikey> ingress: enabled: true hosts: - host: iwd.${domain} paths: - path: '/iwd/' port: 4024 tls: - hosts: - iwd.${domain} secretName: letsencrypt nexus: url: http://nexus.nexus apikey: <test_apikey> elasticsearch: host: elastic-es-http.infra.svc.cluster.local port: 9200
- Install IWD using the following command (replace <> with applicable values):
helm install iwd ./iwd-<version>.tgz -f override_values.yaml --set gws.clientId=<client id> --set gws.clientSecret=<client secret> --set redis.password=<password to redis> --set nexus.apikey=<Nexus API key> --set gws.apiKey='None' --namespace=iwd
Google Kubernetes Engine (GKE)
Prepare
- Log in to the GKE cluster.
gcloud container clusters get-credentials <cluster-name>
- Create a new project:
- Create a create-iwd-namespace.json :
{ "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "iwd", "labels": { "name": "iwd" } } }
- Create a namespace using the above JSON:
kubectl apply -f create-iwd-namespace.json
- Confirm the namespace creation:
kubectl describe namespace iwd
- Create a create-iwd-namespace.json :
- Create a pull secret for accessing the JFrog registry.
kubectl create secret docker-registry jfrog-stage-credentials \ --docker-server=pureengage-docker-staging.jfrog.io \ --docker-username=<camelot-username> \ --docker-password=<API key from jfrog> \ --docker-email=<emailid>
- Download the IWD helm chart from the JFrog repository. See Download the Helm charts.
- Create a gauth client.
IWD requires clientId and clientSecret registered in Authentication Service. These must be provided during Helm Chart deployment. Create new client credentials if they are not already created . Refer to the GWS documentation for more information.
Deploy
- Extract parameters from chart to see multiple (default) values used to fine tune the installation.For information on parameters and values in the values.yaml file, see Override Helm chart values.
$ helm show values iwd-<version>.tgz > values.yaml
Sample override file:replicaCount: 1 image: registry: pureengage-docker-staging.jfrog.io repository: nexus/iwd pullSecrets: - name: "pullsecret" gauth: auth: url: http://gauth-auth.gws redirectUrl: https://gws.nlb02-useast1.gcpe002.gencpe.com redis: nodes: redis://infra-redis-redis-cluster.infra.svc.gke2-useast1.gcpe002.gencpe.com:6379 useCluster: true enableTLS: false #password: xxx #in secrets gws: url: http://gauth-auth.gws #clientId: xxx #in secrets #clientSecret: xxx #in secrets #apiKey: xxx #in secrets ingress: enabled: true hosts: - host: iwd.nlb02-useast1.gcpe002.gencpe.com paths: - path: '/iwd/' port: 4024 annotations: cert-manager.io/issuer-name: ca-cluster-issuer kubernetes.io/ingress.class: nginx tls: - hosts: - iwd.nlb02-useast1.gcpe002.gencpe.com secretName: iwd-ingress-cert nexus: url: http://nexus.nexus #apikey: xxx #in secrets elasticsearch: host: elastic-elasticsearch-master.infra.svc.gke2-useast1.gcpe002.gencpe.com port: 9200 monitoring: # Deploy ServiceMonitor enabled: true # Create PrometheusRule k8s object with alarm definitions alarms: true # Create ConfigMap with Grafana Dashboards dashboards: true
- Install IWD using the following command (replace <> with applicable values):
helm install iwd ./iwd-<version>.tgz -f override_values.yaml --set gws.clientId=<client id> --set gws.clientSecret=<client secret> --set redis.password=<password to redis> --set nexus.apikey=<Nexus API key> --set gws.apiKey='None' --namespace=iwd
Azure Kubernetes Service (AKS)
Prepare
- Log in to the AKS cluster.
az aks get-credentials --resource-group <rs-group> --name <cluster-name> --admin
- Create a new project:
- Create a create-iwd-namespace.json :
{ "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "iwd", "labels": { "name": "iwd" } } }
- Create a namespace using the above JSON:
kubectl apply -f create-iwd-namespace.json
- Confirm the namespace creation:
kubectl describe namespace iwd
- Create a create-iwd-namespace.json :
- Create a pull secret for accessing the JFrog registry.
kubectl create secret docker-registry pullsecret \ --docker-server=pureengageuse1-docker-multicloud.jfrog.io \ --docker-username=<camelot-username> \ --docker-password=<API key from jfrog> \ --docker-email=<emailid>
- Download the IWD helm chart from the JFrog repository. See Download the Helm charts.
- Create a gauth client.
IWD requires clientId and clientSecret registered in Authentication Service. These must be provided during Helm Chart deployment. Create new client credentials if they are not already created . Refer to the GWS documentation for more information.
Deploy
- Extract parameters from chart to see multiple (default) values used to fine tune the installation.For information on parameters and values in the values.yaml file, see Override Helm chart values.
$ helm show values iwd-<version>.tgz > values.yaml
Sample override file:replicaCount: 1 image: registry: pureengageuse1-docker-multicloud.jfrog.io repository: nexus/iwd pullSecrets: - name: "pullsecret" gauth: auth: url: http://gauth-auth.${GAUTH_NAMESPACE} redirectUrl: https://gauth.${DOMAIN} redis: nodes: redis://${REDIS_ADDR}:${REDIS_PORT} useCluster: true enableTLS: false #password: xxx #in secrets gws: url: http://gauth-auth.${GAUTH_NAMESPACE} #clientId: xxx #in secrets #clientSecret: xxx #in secrets #apiKey: xxx #in secrets ingress: enabled: true hosts: - host: iwd.${domain} paths: - path: '/iwd/' port: 4024 annotations: cert-manager.io/issuer-name: ca-cluster-issuer kubernetes.io/ingress.class: nginx tls: - hosts: - iwd.${domain} secretName: iwd-ingress-cert nexus: url: http://nexus.${NEXUS_NAMESPACE} #apikey: xxx #in secrets elasticsearch: host: ${ES_ADDR} port: 9200 monitoring: # Deploy ServiceMonitor enabled: true # Create PrometheusRule k8s object with alarm definitions alarms: true # Create ConfigMap with Grafana Dashboards dashboards: true
- Install IWD using the following command (replace <> with applicable values):
helm install iwd ./iwd-<version>.tgz -f override_values.yaml --set gws.clientId=<client id> --set gws.clientSecret=<client secret> --set redis.password=<password to redis> --set nexus.apikey=<Nexus API key> --set gws.apiKey='None' --namespace=iwd
Validate the deployment
Watch the helm output at the end of installation. It provides the status and additional information about where to log in to the IWD UI.
See the following sample output:
Release "iwd" has been upgraded. Happy Helming!
NAME: iwd
LAST DEPLOYED: Tue Jul 13 10:18:07 2021
NAMESPACE: iwd
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Please be patient while iwd 100.0.0741322 is being deployed
Comments or questions about this documentation? Contact us for support!