Skip to content

Conversation

@jfuerth
Copy link

@jfuerth jfuerth commented Nov 19, 2024

This initial implementation requires low-level configuration of the client:

dnastack config contexts add data-connect-k8s
dnastack config contexts use data-connect-k8s
dnastack config endpoints add --type data_connect data-connect
dnastack config endpoints set data-connect url https://collection-service.staging.dnastack.com/data-connect/
dnastack config endpoints set data-connect authentication.client_id loader-cronjob-client
dnastack config endpoints set data-connect authentication.resource_url https://publisher-data.staging.dnastack.com/
dnastack config endpoints set data-connect authentication.token_endpoint https://wallet.staging.dnastack.com/oauth/token
dnastack config endpoints set data-connect authentication.grant_type client_credentials
dnastack config endpoints set data-connect authentication.client_assertion_file /var/run/secrets/kubernetes.io/serviceaccount/token

The plan for the future is to have dnastack use ${service-registry-url} detect if:

  • the file /var/run/secrets/kubernetes.io/serviceaccount/token exists
  • the terminal is non-interactive

and if so, edit all the service registry endpoint authentication objects on the fly, making the following edits:

  • add client_assertion_file with the path to the k8s token
  • replace client_id with the one found in the client_assertion_file
  • replace grant_type with client_credentials
  • null out client_secret

If this happens, the CLI will print a message that says so, and it'll offer some switch like --no-k8s-auth to inhibit this behaviour.

This initial implementation requires low-level configuration of the client:

```
dnastack config contexts add data-connect-k8s
dnastack config contexts use data-connect-k8s
dnastack config endpoints add --type data_connect data-connect
dnastack config endpoints set data-connect url https://collection-service.staging.dnastack.com/data-connect/
dnastack config endpoints set data-connect authentication.client_id loader-cronjob-client
dnastack config endpoints set data-connect authentication.resource_url https://publisher-data.staging.dnastack.com/
dnastack config endpoints set data-connect authentication.token_endpoint https://wallet.staging.dnastack.com/oauth/token
dnastack config endpoints set data-connect authentication.grant_type client_credentials
dnastack config endpoints set data-connect authentication.client_assertion_file /var/run/secrets/kubernetes.io/serviceaccount/token
```

The plan for the future is to have `dnastack use ${service-registry-url}`
detect if:

* the file /var/run/secrets/kubernetes.io/serviceaccount/token exists
* the terminal is non-interactive

and if so, edit all the service registry endpoint authentication objects
on the fly, making the following edits:

* add `client_assertion_file` with the path to the k8s token
* replace `client_id` with the one found in the `client_assertion_file`
* replace `grant_type` with `client_credentials`
* null out `client_secret`

If this happens, the CLI will print a message that says so, and it'll offer
some switch like `--no-k8s-auth` to inhibit this behaviour.
@platform-automation-dnastack

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants