Expertflow CX Components Blueprint on Kubernetes
This page illustrates the Kubernetes objects and their corresponding implementation specifications for deploying the Expertflow CIM solution on customer infrastructure.
Supported Operating Systems
Kubernetes Distributions
Kubernetes Objects for Expertflow CIM Internal Components
Component | Type | Namespace | Deployment | ReplicaSet | Restart Policy | Volume Name | Mount-Point | Volume size | Container-Ports | Port-name | Service | service-type | Service Ports | Config-Maps | Health | Ingress | Request | Limit | Calls (Internal - CIM) | Calls (External) | Called By | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 360-connector | deployment | expertflow | ef-360-connector | 1 | Always | 8080 | http-360c | ef-360-connector-svc | Cluster-IP | 8080 | ef-connector360-cm | https://${FQDN}/360connector | CPUs RAM |
|
| CCM, File-engine | 360-Server | |||||
2 | file-engine | deployment | expertflow | ef-file-engine | 1 | Always | 8443 | https-fi | ef-file-engine-svc | Cluster-IP | 8443 | ef-file-engine-cm, variables-common- env-cm | curl -fsk https://localhost:8443/api/SystemInfo | https://${FQDN}/file-engine | CPUs RAM |
|
| Minio | 360-Connector, Unified-Admin, Customer-Widget, Unified-Agent | ||||
3 | ccm | deployment | expertflow | ef-ccm | 1 | Always | 8081 | http-ccm | ef-ccm-svc | Cluster-IP | 8081 | ef-ccm-cm, ef-connection-env-cm | https://${FQDN}/ccm | CPUs RAM |
|
| CIM-Customer, Bot-framework, Connectors(Web, whatsapp ...) | ActiveMq, Redis, Mongo | 360-Connector, Unified-Admin, Web-Channel-Manager, Agent-Manager, Customer-Widget, Twillio-Connector | ||||
4 | bot-framework | deployment | expertflow | ef-bot-framework | 1 | Always | 8082 | http-bot- | ef-bot-framework-svc | Cluster-IP | 8082 | ef-bot-framwork-cm, ef-connection-env-cm | https://${FQDN}/bot-framework | CPUs RAM |
|
| Routing-engine | ActiveMQ, Redis, Mongo, Rasa-x | Routing-engine, CCM, Unified-admin, Agent-Manager, Unified-Agent | ||||
5 | routing-engine | deployment | expertflow | ef-routing-engine | 1 | Always | 8081 | http- | ef-routing-engine-svc | Cluster-IP | 8081 | ef-routing-engine-cm, ef-connection-env-cm | https://${FQDN}/routing-engine | CPUs RAM |
|
| Agent-manager, Bot-Framework | ActiveMq, Redis, Mongo | Bot-Framework, Unified-admin, Agent-Manager | ||||
6 | cim-customer | deployment | expertflow | ef-cim-customer | 1 | Always | 8080 | http- | ef-cim-customer-svc | Cluster-IP | 8080 | ef-cim-customer-cm, ef-connection-env-cm | https://${FQDN}/cim-customer | CPUs RAM |
|
| Redis, Mongo | CCM, Agent-Manager, Unified-Agent | |||||
7 | agent-manager | deployment | expertflow | ef-agent-manager | 1 | Always | 3000 | http-ag | ef-agent-manager-svc | Cluster-IP | 3000 | ef-agent-manager-cm, ef-connection-env-cm | https://${FQDN}/agent-manager | CPUs RAM |
|
| Bot-Framework, Routing-engine, Cim-Customer, Unified-Admin, CCM, License-Manager | ActiveMQ, Redis, Keycloak | Routing-engine, Unified-Agent | ||||
8 | unified-admin | deployment | expertflow | ef-unified-admin | 1 | Always | 3000 | http-un- | ef-unified-admin-svc | Cluster-IP | 3000 | ef-unified-admin-cm, ef-connection-env-cm | https://${FQDN}/unified-admin | CPUs RAM |
|
| Routing-Engine, CCM, Bot-Framework, License-Manager, Business-Calendar, File-Engine | Keycloak, Mongo, Redis | Agent-Manager | ||||
9 | license-manager | deployment | expertflow | ef-license-manager | 1 | Always | 8888 | http-li- | ef-license-manager-svc | Cluster-IP | 8888 | ef-licence-manager-cm, ef-connection-env-cm | https://${FQDN}/license-manager | CPUs RAM |
|
| Redis, Mongo | Unified-Admin, Agent-Manager | |||||
10 | business-calendar | deployment | expertflow | ef-business-calendar | 1 | Always | 8443 | http-bu- | ef-business-calender-svc | Cluster-IP | 8443 | ef-business-calender-cm | https://${FQDN}/business-calendar | CPUs RAM |
|
| Unified-Admin | ||||||
11 | web-channel-manager | deployment | expertflow | ef-web-channel-manager | 1 | Always | 7000 | http-we-ch | ef-web-channel- manager-svc | Cluster-IP | 7000 | ef-web-channel- manager-cm | https://${FQDN}/web-channel-manager | CPUs RAM |
|
| CCM | Customer-Widget, CCM | |||||
12 | customer-widget | deployment | expertflow | ef-customer-widget | 1 | Always | 8080 | http-cu |
| Cluster-IP | 8080 | ef-customer-widget-cm | https://${FQDN}/customer-widget | CPUs RAM |
|
| Web-Channel-Manager(Socket), CCM, File-Engine | ||||||
13 | twillio-connector | deployment | expertflow | ef-twillio-connecctor | 1 | Always | 8085 | http-tw- | ef-twilio-connector-svc | Cluster-IP | 8085 | ef-twilio-connector-cm | https://${FQDN}/twilio-connector | CPUs RAM |
|
| CCM | Twillio Server | |||||
14 | unified-agent | deployment | expertflow | ef-unified-agent | 1 | Always | 80 | http-un | ef-unified-agent-svc | Cluster-IP | 80 | ef-unified-agent-cm | https://${FQDN}/unified-agent | CPUs RAM |
|
| Agent-Manager, File-Engine, Bot-Framework, Cim-Customer | Finesse | |||||
15 | conversation-controller | deployment | expertflow | ef-conversation | 1 | Always | ef-conversation- controller-actions, ef-conversation- controller-pycache, ef-conversation- controller-utils |
| 5000 | http-co- | ef-conversation- controller-svc | Cluster-IP | 5000 | ef-connection-env-cm, ef-conversation- controller-cm | CPUs RAM |
|
| ||||||
16 | conversation-manager | deployment | expertflow | ef-conversation | 1 | Always | 8080 | http-co- | ef-conversation- | Cluster-IP | 8080 | ef-connection-env-cm, ef-conversation -manager-cm | https://${FQDN}/conversation- | CPUs RAM |
|
| |||||||
17 | facebook-connector | deployment | expertflow | ef-facebook | 1 | Always | 8080 | http-fb- | ef-facebook- | Cluster-IP | 8080 | ef-facebook- | https://${FQDN}/facebook-connector | CPUs RAM |
|
| |||||||
18 | realtime-reports | deployment | expertflow | ef-realtime | 1 | Always | 8080 | http-re- | ef-realtime- | Cluster-IP | 8080 | ef-connection-env-cm, ef-realtime-reports-cm | https://${FQDN}/realtime-reports | CPUs RAM |
|
| |||||||
19 | reporting-connector | deployment | expertflow | ef-reporting | 1 | Always | config-volume-conf, config-volume-cron |
| ef-realtime- | Cluster-IP | 8080 | CPUs RAM |
|
| |||||||||
20 | state-event-logger | deployment | expertflow | ef-state- | 1 | Always | ef-connection-env-cm, | CPUs RAM |
|
| |||||||||||||
21 | web-widget | deployment | expertflow | ef-web-widget | 1 | Always | 80 | http-we | ef-web- | Cluster-IP | 8080 | https://${FQDN}/web-widget | CPUs RAM | 50m | 100m |
Kubernetes Objects for Expertflow CIM External Components
Component | Type | Namespace | Deployment | ReplicaSet | Restart Policy | Volume size | Mount-Point | Container-Ports | Service Identifier | service-type | Service Ports | Config-Maps | Secret | Health | Ingress | Calls (Internal - CIM) | Calls (External) | Called By | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | minio | deployment | ef-external | minio | 1 | Always | 8Gi | /data | 9000 | minio.ef-external.svc | Cluster-IP | 9000 | |||||||
2 | mongo | statefulset | ef-external | mongo-mongodb | 1 | Always | 8Gi | /bitnami/mongodb | 27017 | mongo-mongodb.ef-external.svc | Cluster-IP | 27017 | |||||||
3 | activemq | statefulset | ef-external | ef-amq | 1 | Always | 8Gi | /opt/activemq/data | 8162, 61613-61617 | ef-amq.ef-external.svc | Cluster-IP | 8162, 61613-61617 | |||||||
4 | redis | statefulset | ef-external | redis | 1 | Always | 8Gi | /data | 6379 | redis-master.ef-external.svc | Cluster-IP | 6379 | |||||||
5 | keycloak | deployment | ef-external | keycloak | 1 | Always | 8Gi | 8080, 8443 | keycloak.ef-external.svc | Cluster-IP | 8080, 8443 | ef-keycloak-config | https://${FQDN}/auth | ||||||
6 | grafana | deployment | ef-external | grafana | 1 | Always | 4Gi | /var/lib/grafana | 3000 | grafana.ef-external.svc | Cluster-IP | 3000 | ef-grafana-ini-cm, ef-supervisor-dashboard-cm | ef-grafana-dashboard-provider-secret | https://${FQDN}/grafana | ||||
7 | postgresql | statefulset | ef-external | ef-postgresql | 1 | Always | 32Gi | ||||||||||||
8 | superset | deployment | ef-external | superset | 1 | Always | 8088,5432 | superset.ef-external.svc | Cluster-IP | 8088,5432 |
Storage class
A default Storage class of any of these providers can be provisioned for dynamic volume provisioning.
- Multi-node on-prem setup
- Longhorn by Rancher ( supported, tested to work )
- GlusterFS ( supported, not tested )
- NFS ( supported, not tested)
- openEBS ( supported, not tested )
- For cloud based storage
- AWS
GCE
- Single-Node Deployment
- hostpath ( suitable for single node deployment only )
- Any other K8s compatible storage solution for dynamic volume provisioning may be used e.g., Rook-Ceph.
Ingress
Ingress Controller | POC |
---|---|
ingress-nginx | COMAPTIBLE |
Traefik | COMAPTIBLE |
Load Balancer
A VRRP based IP Transition is supported by using metallb as load-balancer for on-prem deployments.
Load Balancer | Compatible |
---|---|
metalLB | COMAPTIBLE |
For K3s Based cluster, the Load-Balancer is not required as all the nodes in the cluster are exposed to the network and can be used for FQDN to IP Mapping.
Geographically Federated Cluster
Please refer to this link for a cluster spanning geographically spanned architecture.
https://kubernetes.io/docs/setup/best-practices/
https://kubernetes.io/blog/2016/10/globally-distributed-services-kubernetes-cluster-federation/
https://kubernetes.io/docs/setup/best-practices/cluster-large/
https://kubernetes.io/docs/setup/best-practices/node-conformance/