Need to have a cluster specific user [MySQLTopologyUser] in Orchestrator.
Description
Environment
MySQL 8.0.36 & Orchestrator 3.26
AFFECTED CS IDs
Activity

Kamil Holubicki June 17, 2024 at 9:26 AMEdited
Hi @Aaditya, this issue has one fundamental problem I've described previously. How Orc will know which password to use during discovery? Having pass stored in k8s pod is not an option. Orc can only connect MySQL instance with a given pass. It has no possibility to ask for credentials from any API. The simplest solution I see is having credentials mapped to IP ranges in Orc's config.
Of course it is possible technically to implement the functionality of querying credentials from external service/database, but the effort for this is significantly bigger. Therefore unless we agree on solution, I'm not able to provide any estimates.
If this is k8s environment, wouldn't it be the easiest/quickest/cheapest solution to have a dedicated Orc instance per cluster?

Kamil Holubicki June 17, 2024 at 9:25 AM
Hi @Aaditya, this issue has one fundamental problem I've described previously. How Orc will know which password to use during discovery? Having pass stored in k8s pod is not an option. Orc can only connect MySQL instance with a given pass. It has no possibility to ask for credentials from any API. The simplest solution I see is having credentials mapped to IP ranges in Orc's config.
Of course it is possible technically to implement the functionality of querying credentials from external service/database, but the effort for this is significantly bigger. Therefore unless we agree on solution, I'm not able to provide any estimates.

Kamil Holubicki June 12, 2024 at 2:07 PM
Let’s start from the beginning. Whey you open an empty Orchestrator and go to ‘Discover’ window, you need to point out to any instance of a particular cluster to be discovered (provide IP or FQDN and port). Then Orchestrator tries to connect to a given instance with credentials. So at this moment we need the mapping for Orchestrator to know which credentials to use.
Then it needs to use the same credentials for all discovered instances in this cluster. OK it can be handled somehow, maybe store internally that we are using particular credentials or so. But we need this initial mapping for Orc to know which credentials to use during discovery.
Please ask the customer how would he this feature to work from user point of view. They install Orchestrator, what next? How would they configure different credentials for different clusters.

anil.joshi June 12, 2024 at 1:58 PM
,
Well, I have no clue. We might use “ClusterAlias” settings to fetch out cluster details from the [orchestrator] database and use a separate config file to define [MySQLTopologyUser] for each of the clusters OR somehow store and query those details from the backend. Ultimately, that file could be mapped into the original config file [orchestrator.conf.json] or using some sort of variables.
Just a theory indeed, would not that be ultra-easy to implement, I believe :-(

Kamil Holubicki June 12, 2024 at 8:22 AM
Is there any proposal on how to distinguish clusters at the configuration time?
We will need to put these usernames/passwords in Orchestrator’s config file and assign them somehow to clusters. By name? IP range? any other way?
Details
Assignee
Kamil HolubickiKamil HolubickiReporter
anil.joshianil.joshiNeeds QA
YesNeeds Doc
YesComponents
Affects versions
Priority
Medium
Details
Details
Assignee

Reporter

Needs QA
Needs Doc
Components
Affects versions
Priority
Smart Checklist
Open Smart Checklist
Smart Checklist
Open Smart Checklist
Smart Checklist

As of now, we have a single “MySQLTopologyUser/MySQLTopologyPassword” for monitoring different instances/clusters in the orchestrator.
The requirement came from one of the customers to have a separate topology user [ MySQLTopologyUser credentials] for each of the different clusters. ie; each program will have a different user/password that Orchestrator can use as MySQLTopologyUser/MySQLTopologyPassword.
This needs to be done for the single orchestrator server/UI.