-
Notifications
You must be signed in to change notification settings - Fork 19
K8s retool: Introducing "Cabotage" #3
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
Merged
Merged
Conversation
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
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
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
CertificateSigningRequest
by thecertificate-requestor
initContainer
in the deployments forconsul
andvault
SubjectAccessReview
is used to verify thatCertificateSigningRequest
s are valid for signing.Consul Bootstrapping
Vault Bootstrapping
Vault Kubernetes Auth Backend
ServiceAccount
is bound to a Kubernetes Auth Role for our enrollment-controller with the appropriate vault policies.Cabotage "Enrollment"
cabotage-enrollment-controller
manages the creation and deletion of Vault Kubernetes Auth roles, Vault Consul Secret Backend roles, and Vault PKI Secret Backend roles for KubernetesServiceAccounts
created with a specified labelServiceAccount
or aServiceAccount
is created with the label, this controller does not modify existing policies. This should allow us to useConfigMaps
to specify custom policies as needed.ServiceAccount
or aServiceAccount
with that label is deleted, all policies are purged.Cabotage Sidecar
kube_login
intended as aninitContainer
, andmaintain
which is intended to run as a sidecar toPod
s.kube_login
allows 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_login
entry point is intended to execute once... meaning that anything obtained by it will expire when it's Lease expires.maintain
side car! This sidecar will keep the Vault Token obtained bykube_login
renewed, as well optionally the Consul Token and TLS certificate.leases
directory of known path containing Vault Lease IDs and themaintain
loop will work to renew themGoldfish
cabotage-enrollment-controller
to ourServiceAccount
for Goldfish it is granted access!initContainer
fetches a token from vault with the specified Kubernetes Auth Backend role and stores it unwrapped for Goldfish to access at startup.SubjectAlternativeName
s in order to remove the need for the sidecar all-together.kube_login
initContainer
to 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_login
command by supplying the--no-unwrap
flag.Known Issues:
Next Steps:
Dockerfiles
or container images provided by users into Deployments