Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provisioning each Control Plane Machine with Unique Credentials. #3782

Closed
zawachte opened this issue Oct 13, 2020 · 20 comments
Closed

Provisioning each Control Plane Machine with Unique Credentials. #3782

zawachte opened this issue Oct 13, 2020 · 20 comments
Labels
area/control-plane Issues or PRs related to control-plane lifecycle management help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. triage/accepted Indicates an issue or PR is ready to be actively worked on.

Comments

@zawachte
Copy link
Contributor

User Story

As an operator, I would like to be able to provision each control plane machine with unique credentials. My use case is for KMS Plugins. KMS plugins need to run as static pods or services and can't rely on the api-server (configmaps, secrets). (Can't encrypt secrets if you rely on them!)

Today the best I can do is use KCP and add the credentials as a file, but the problem is that this file is for the whole KCP replica set and not an individual machine. Ideally, each KMS Plugin instance has its own "identity". In theory, I guess could try to do some sort of appending to the Files list for each time I scale up, but that sounds pretty messy and would result in controlplanes having other controlplanes creds.

I am not really sure how we would go about editing the KCP CRD to support this. Is there a pattern used today by other kubernetes "replicasets" to achieve this?

Another solution I thought of was letting Infrastructure Providers have the ability to edit the bootstrap kubeadmconfig before it's encoded as cloud-init. Then the infrastructure providers can add a way to add files or other configs? I don't really know if this route makes much sense, but it would be nice if infrastructure providers had some say in the bootstrap data. A way for infrastructure providers to always set some needed configs without relying on higher-level input.

/kind feature

@k8s-ci-robot k8s-ci-robot added the kind/feature Categorizes issue or PR as related to a new feature. label Oct 13, 2020
@detiber
Copy link
Member

detiber commented Oct 13, 2020

Thinking somewhat generically about this with a bit of an AWS tinted set of glasses, I would expect to be able to accomplish something along these lines using a combination of IAM profiles that allow access to the needed services for KMS, and the individual identities of the control plane instances.

Of course that isn't overly applicable to all the places that Cluster API can run or for supporting a KMS provider that isn't tied closely to the cloud provider (such as Hashicorp Vault), so I do think it makes sense to try to enable this type of workflow in a more generic way.

@vincepri
Copy link
Member

/milestone Next
/priority awaiting-more-evidence

@k8s-ci-robot k8s-ci-robot added this to the Next milestone Oct 16, 2020
@k8s-ci-robot k8s-ci-robot added the priority/awaiting-more-evidence Lowest priority. Possibly useful, but not yet enough support to actually get it done. label Oct 16, 2020
@randomvariable
Copy link
Member

Possibly a use case within #3761 . Similar to how we want to treat domain joins potentially.

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 14, 2021
@fabriziopandini
Copy link
Member

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 14, 2021
@vincepri
Copy link
Member

/lifecycle frozen

@k8s-ci-robot k8s-ci-robot added the lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. label Jan 21, 2021
@vincepri vincepri removed the lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. label Jan 21, 2021
@vincepri
Copy link
Member

Actually, should we close this?

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Apr 21, 2021
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels May 21, 2021
@vincepri
Copy link
Member

@randomvariable @yastij Can this be part of machine attestation?

@randomvariable
Copy link
Member

randomvariable commented May 25, 2021

it's completely orthogonal. machine attestation isn't part of control plane provisioning (because you're providing the machine with the cluster key material). we'll need to treat it as part of whatever happens if we revisit #4221

@vincepri vincepri removed the priority/awaiting-more-evidence Lowest priority. Possibly useful, but not yet enough support to actually get it done. label May 27, 2021
@vincepri
Copy link
Member

/lifecycle frozen

@k8s-ci-robot k8s-ci-robot added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. labels May 27, 2021
@vincepri
Copy link
Member

/assign @randomvariable
to retriage once security review has been done

@randomvariable
Copy link
Member

/area control-plane

@k8s-ci-robot k8s-ci-robot added the area/control-plane Issues or PRs related to control-plane lifecycle management label Nov 2, 2021
@randomvariable
Copy link
Member

Reading through this again, I wonder if this is a use case for #5175

@randomvariable
Copy link
Member

I think i'll take my name off this for now, as I'll be reviewing the area labels on a frequent basis.

/unassign

@fabriziopandini fabriziopandini added the triage/accepted Indicates an issue or PR is ready to be actively worked on. label Jul 29, 2022
@fabriziopandini fabriziopandini removed this from the Next milestone Jul 29, 2022
@fabriziopandini fabriziopandini removed the triage/accepted Indicates an issue or PR is ready to be actively worked on. label Jul 29, 2022
@fabriziopandini
Copy link
Member

/triage accepted
/help

@k8s-ci-robot
Copy link
Contributor

@fabriziopandini:
This request has been marked as needing help from a contributor.

Guidelines

Please ensure that the issue body includes answers to the following questions:

  • Why are we solving this issue?
  • To address this issue, are there any code changes? If there are code changes, what needs to be done in the code and what places can the assignee treat as reference points?
  • Does this issue have zero to low barrier of entry?
  • How can the assignee reach out to you for help?

For more details on the requirements of such an issue, please see here and ensure that they are met.

If this request no longer meets these requirements, the label can be removed
by commenting with the /remove-help command.

In response to this:

/triage accepted
/help

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added triage/accepted Indicates an issue or PR is ready to be actively worked on. help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. labels Sep 30, 2022
@fabriziopandini
Copy link
Member

(doing some cleanup on old issues without updates)
/close
Unfortunately no real progress toward a solution yet, so I'm closing

@k8s-ci-robot
Copy link
Contributor

@fabriziopandini: Closing this issue.

In response to this:

(doing some cleanup on old issues without updates)
/close
Unfortunately no real progress toward a solution yet, so I'm closing

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/control-plane Issues or PRs related to control-plane lifecycle management help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

No branches or pull requests

7 participants