Conversation
acl_agent_token _must_ be supplied in a file, so we might as well move gossip encryption key over as well
- rotate acl_agent_token only if necessary - rotate out a bootstrapping gossip encryption key
i mean the unseal keys are in memory right now anyway
Mohamezezo
approved these changes
Dec 2, 2024
Mohamezezo
approved these changes
Dec 2, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR Is a WIP until documentation and READMEs show up... but here's the 50,000 foot view!
Disclaimer: Beware sharp bash edges :)
TLS
CertificateSigningRequestby thecertificate-requestorinitContainerin the deployments forconsulandvaultSubjectAccessReviewis used to verify thatCertificateSigningRequests are valid for signing.Consul Bootstrapping
Vault Bootstrapping
Vault Kubernetes Auth Backend
ServiceAccountis bound to a Kubernetes Auth Role for our enrollment-controller with the appropriate vault policies.Cabotage "Enrollment"
cabotage-enrollment-controllermanages the creation and deletion of Vault Kubernetes Auth roles, Vault Consul Secret Backend roles, and Vault PKI Secret Backend roles for KubernetesServiceAccountscreated with a specified labelServiceAccountor aServiceAccountis created with the label, this controller does not modify existing policies. This should allow us to useConfigMapsto specify custom policies as needed.ServiceAccountor aServiceAccountwith that label is deleted, all policies are purged.Cabotage Sidecar
kube_loginintended as aninitContainer, andmaintainwhich is intended to run as a sidecar toPods.kube_loginallows for a container to fetch a vault token, storing it for later use either in clear text or as a wrapped response for another container to manage. Optionally, a TLS Certificate signed by the automated Intermediate Certificate Authority can fetched, as well as a Consul Token which has limited access to a prefix in Consul's KV store.kube_loginentry point is intended to execute once... meaning that anything obtained by it will expire when it's Lease expires.maintainside car! This sidecar will keep the Vault Token obtained bykube_loginrenewed, as well optionally the Consul Token and TLS certificate.leasesdirectory of known path containing Vault Lease IDs and themaintainloop will work to renew themGoldfish
cabotage-enrollment-controllerto ourServiceAccountfor Goldfish it is granted access!initContainerfetches a token from vault with the specified Kubernetes Auth Backend role and stores it unwrapped for Goldfish to access at startup.SubjectAlternativeNames in order to remove the need for the sidecar all-together.kube_logininitContainerto not be required to ever even have the token, but rather to write a wrapped response which the service itself can unwrap and use. This is supported by thekube_logincommand by supplying the--no-unwrapflag.Known Issues:
Next Steps:
Dockerfilesor container images provided by users into Deployments