Upgrade Guide CX4.6/4.6.1 to CX4.7
This upgrade guide serves for Non-Helm to Helm-based deployments.
For this upgrade, the following Kubernetes version range is compatible v1.29.13+rke2r1 to v1.31.4+rke2r1
Existing CX deployment along with other groups ( for details about groups see CX Deployment Groups ) must be converted to their helm-based deployments. For this to work properly two approaches are possible
Retain External Components – Recommended
Migrate the complete solution – resulting longer downtime
This guide focuses on the Retain External Components approach
Clone the CX-4.7 revision
git clone -b CX-4.7 https://efcx:RecRpsuH34yqp56YRFUb@gitlab.expertflow.com/cim/cim-solution.git $HOME/CX-4.7
Retain External Components
WARNING:
After completing the cut-over using this migration guide from 4.6/4.6.1 to 4.7 CX Release, External components for example redis, minio, mongo and redis deployments are still referenced from the 4.6/4.6.1 release folders.
Bring down the CX solution by following these steps
Change directory to the folder containing 4.6/4.6.1 release
cd CX-4.6/cim-solution/kubernetes
Delete deployments
kubectl delete -f cim/Deployments
Delete config-maps
kubectl delete -f cim/ConfigMaps
Delete services
kubectl delete -f cim/Services
Delete ActiveMQ Statefulset
kubectl delete -f cim/StatefulSet
Delete ingress resources (for ingress-nginx )
kubectl delete -f cim/Ingresses/nginx
OR if Traefik Ingress Controller is used then delete ingress resources ( for Traefik )
kubectl delete -f cim/Ingresses/traefik
Uninstall the grafana helm charts as it is now part of the AgentDesk group chart in expertflow namespace
helm -n ef-external uninstall grafana
Delete the crons
kubectl -n expertflow delete -f pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml
kubectl -n expertflow delete -f pre-deployment/team-announcement/ef-team-announcement-cronjob.yaml
Delete old deployment of CX Surveys (if deployed):
kubectl delete -f cx-surveys/ConfigMaps -f cx-surveys/Ingresses/nginx -f cx-surveys/Services -f cx-surveys/Deployments
OR if Traefik Ingress Controller is used then delete ingress resources ( for Traefik )
kubectl delete -f cx-surveys/Ingresses/traefik
Delete old deployment of CX Campaigns (if deployed):
kubectl delete -f cx-campaigns/ConfigMaps -f cx-campaigns/Ingresses/nginx -f cx-campaigns/Services -f cx-campaigns/Deployments
OR if Traefik Ingress Controller is used then delete ingress resources ( for Traefik )
kubectl delete -f cx-campaigns/Ingresses/traefik
Delete Conversation Controller ConfigMaps
kubectl -n expertflow delete configmap ef-conversation-controller-actions-utils-cm
kubectl -n expertflow delete configmap ef-conversation-controller-actions-cm
kubectl -n expertflow delete configmap ef-conversation-controller-actions-pycache-cm
Custom Password Interpolations
Below are the interpolations when using custom or not-default password for mongodb, minio, redis, postgresql and activeMQ
Component with custom password | update required in |
---|---|
MongoDB |
|
PostgreSQL |
|
minio |
|
Redis |
|
keycloak | N/A |
activeMQ | N/A |
Add helm repository
helm repo add expertflow https://expertflow.github.io/charts/
update helm repo
helm repo update expertflow
Deploy ActiveMQ using helm
Change to 4.7 release directory
cd $HOME/CX-4.7
create a folder to hold the helm values files
mkdir helm-values
clone the values file to update the parameters required
helm show values expertflow/activemq > helm-values/ef-activemq-custom-values.yaml
helm upgrade --install=true --namespace=ef-external --values=helm-values/ef-activemq-custom-values.yaml activemq expertflow/activemq
Wait for the ActiveMQ to start running
kubectl wait pods activemq-0 -n ef-external --for condition=Ready --timeout=600s
CX Core
Apply Conversation Controller ConfigMaps
kubectl -n expertflow create configmap ef-conversation-controller-actions-cm --from-file=pre-deployment/conversation-Controller/actions
kubectl -n expertflow create configmap ef-conversation-controller-actions-utils-cm --from-file=pre-deployment/conversation-Controller/utils
kubectl -n expertflow create configmap ef-conversation-controller-actions-pycache-cm --from-file=pre-deployment/conversation-Controller/__pycache__
Apply https-certificates for unified-admin
kubectl apply -f pre-deployment/static-tls/ef-unified-admin-https-certs.yaml
clone the values file for CX core and update all the site specific parameters in the values file
helm show values expertflow/cx > helm-values/ef-cx-custom-values.yaml
Edit/update the values file helm-values/ef-cx-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
Deploy the CX Core using default values.
helm upgrade --install --namespace expertflow --create-namespace ef-cx --debug --values helm-values/ef-cx-custom-values.yaml expertflow/cx
CX AgentDesk
Delete the exiting translations config-map
kubectl delete cm ef-app-translations-cm -n expertflow
now run the following commands
kubectl -n expertflow create configmap ef-app-translations-cm --from-file=pre-deployment/app-translations/unified-agent/i18n/
Apply the grafana data-source manifest.
kubectl -n expertflow create secret generic ef-grafana-datasource-secret --from-file=post-deployment/config/grafana/supervisor-dashboards/datasource.yml
Create the grafana dashboard configs for grafana by applying the config-map manifest.
kubectl -n expertflow create cm ef-grafana-dashboard-provider-cm --from-file=post-deployment/config/grafana/supervisor-dashboards/dashboard.yml
For MySQL
Apply config-map for the MySQL supervisor and agent dashboard files using the steps below.
kubectl -n expertflow create configmap ef-grafana-supervisor-dashboard-mysql --from-file=post-deployment/config/grafana/supervisor-dashboards/Supervisor_Dashboard_CIM-mysql.json
Add Agent Dashboard for MySQL
kubectl -n expertflow create configmap ef-grafana-agent-dashboard-mysql --from-file=post-deployment/config/grafana/supervisor-dashboards/Agent_Dashboard_CIM-mysql.json
For MSSQL Server
Apply config-map for the MSSQL supervisor dashboard files
kubectl -n expertflow create configmap ef-grafana-supervisor-dashboard-mssql --from-file=post-deployment/config/grafana/supervisor-dashboards/Supervisor_Dashboard_CIM-mssql.json
Add config-map for agent dashboard MSSQL
kubectl -n expertflow create configmap ef-grafana-agent-dashboard-mssql --from-file=post-deployment/config/grafana/supervisor-dashboards/Agent_Dashboard_CIM-mssql.json
change these tags in helm-values/cx-agent-desk-custom-values.yaml
for MSSQL Server Only in global section at the top of the file created in next step.
efGrafanaSupervisorDashboardConfigMap: "ef-grafana-supervisor-dashboard-mssql"
efGrafanaSupervisorDashboardFilename: "Supervisor_Dashboard_CIM-mssql.json"
efGrafanaAgentDashboardConfigMap: "ef-grafana-agent-dashboard-mssql"
efGrafanaAgentDashboardFilename: "Agent_Dashboard_CIM-mssql.json"
Clone the values file for CX AgentDesk and customize the file to accommodate the site specific details
helm show values expertflow/agent-desk > helm-values/cx-agent-desk-custom-values.yaml
Edit/update the values file helm-values/cx-agent-desk-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
Install the AgentDesk using helm chart
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" cx-agent-desk --debug --values=helm-values/cx-agent-desk-custom-values.yaml expertflow/agent-desk
CX Channels
Customize the deployment by fetching the values file and edit it as per requirements.
helm show values expertflow/channels > helm-values/cx-channels-custom-values.yaml
Edit/update the values file helm-values/cx-channels-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
Deploy the Channels helm chart by
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" --debug cx-channels --values helm-values/cx-channels-custom-values.yaml expertflow/channels
CX Surveys (skip if CX Surveys is not deployed)
Customize the deployment by fetching the values.yaml file and edit it as per requirements.
helm show values expertflow/surveys > helm-values/cx-surveys-custom-values.yaml
Edit/update the values file helm-values/cx-surveys-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
Deploy the CX Surveys helm chart by
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" cx-surveys --debug --values helm-values/cx-surveys-custom-values.yaml expertflow/surveys
CX Campaigns(skip if CX Campaigns is not deployed)
Customize the deployment by fetching the helm values file and edit it as per requirements.
helm show values expertflow/campaigns > helm-values/cx-campaigns-custom-values.yaml
Edit/update the values file helm-values/cx-campaigns-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
Deploy the CX Surveys helm chart by
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" cx-campaigns --debug --values helm-values/cx-campaigns-custom-values.yaml expertflow/campaigns
CX Reporting
Delete the existing configmap containing Reporting-Connector configurations
kubectl -n expertflow delete configmap ef-reporting-connector-conf
Reporting Connector Config-Map Setup
Create the the database in target Database Management System using the scripts from cim-solution/kubernetes/pre-deployment/reportingConnector/SQLScripts/dbcreation
directory.
Update below parameters in the file pre-deployment/reportingConnector/reporting-connector.conf
Parameter | Requirement |
---|---|
fqdn | FQDN of the CX Solution |
svc_name | k get svc -n expertflow | grep historical http://ef-cx-historical-reports-svc.expertflow.svc:8081 |
browser_language | en or ar |
connection_type | mysql or mssql |
sql_dbms_server_ip | <IP> |
sql_dbms_port | for mysql 3306 / for msql 1433 |
sql_dbms_username | <username> |
sql_dbms_password | <password> |
sql_database_name | <database name> |
Apply configuration for Reporting-Connector
kubectl -n expertflow create configmap ef-reporting-connector-conf-cm --from-file=pre-deployment/reportingConnector/reporting-connector.conf
Customize the deployment by fetching the helm values file and edit it as per requirements.
helm show values expertflow/reporting > helm-values/cx-reporting-scheduler-custom-values.yaml
Edit/update the values file helm-values/cx-reporting-scheduler-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
and deploy the Reporting Scheduler
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" cx-reporting --debug --values helm-values/cx-reporting-scheduler-custom-values.yaml expertflow/reporting
CX Eleveo(skip if CX Eleveo is not deployed)
Customize the deployment by fetching the values.yaml file and edit it as per requirements.
helm show values expertflow/eleveo > helm-values/ef-cx-eleveo-custom-values.yaml
Edit/update the values file helm-values/ef-cx-eleveo-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
and deploy the eleveo
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" cx-eleveo --debug --values helm-values/ef-cx-eleveo-custom-values.yaml expertflow/eleveo
CX CiscoScheduler (skip if CX CiscoScheduler is not deployed)
Customize the deployment by fetching the values.yaml file and edit it as per requirements.
helm show values expertflow/cisco-scheduler > helm-values/cx-cisco-scheduler-custom-values.yaml
Edit/update the values file helm-values/cx-cisco-scheduler-custom-values.yaml
with
global:
ingressRouter: <DEFAULT-FQDN>
Edit the values.yaml
file and adjust the Cronjob schedule and other parameters.
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" cx-ciscoscheduler --debug --values helm-values/cx-cisco-scheduler-custom-values.yaml expertflow/cisco-scheduler
change the directory
cd $HOME/CX-4.6/cim-solution/kubernetes
Re-apply the keycloak resources
kubectl apply -f cim/Ingresses/nginx/ef-keycloak-Ingress.yaml
Upgrade Upgrading Permissions On Keycloak For 4.7
Guide for migrating Keycloak Groups/Teams to CX Teams Guide for migrating Keycloak Groups/Teams to CX Teams
Update the channel Provider on unified admin
Goto channel provider menu and update all Provider Webhook with the following service name
for web channel, replace ef with ef-cx in the service name e.g.
from http://ef-web-channel-manager-svc:7000
To http://ef-cx-web-channel-manager-svc:7000
for any other channel deployed via cx-channels, replace ef with cx-channels in the service name e.g.
From http://ef-twilio-connector-svc:8085
To http://cx-channels-twilio-connector-svc:8085