justinsb
010a0d5e4c
feat: Support PKI bootstrap
...
Similar to the TPM bootstrapping on GCE (indeed, a lot of the code is
modified from there), but we verify the PKI signature against a public
key in a Host CRD object.
2023-11-30 18:35:58 -05:00
John Gardiner Myers
1ea0fd3004
AWS always uses resource-based names
2023-09-04 16:08:48 -07:00
John Gardiner Myers
0d9c130b07
Remove use of ClusterSpec in nodeup
2023-08-09 18:12:37 -07:00
Kubernetes Prow Robot
5d08bc3b0a
Merge pull request #15640 from johngmyers/vfscontext
...
Refactor out references to global vfs.Context
2023-07-17 09:15:19 -07:00
John Gardiner Myers
e04fc1314f
Use NewVFSContext in kops-controller
2023-07-15 15:48:56 -07:00
Ciprian Hacman
83d14d4343
azure: Add support for dns=none
2023-07-13 09:04:06 +03:00
Leïla MARABESE
dab001c3e9
scaleway authenticator and verifier
2023-06-14 15:15:17 +02:00
Ciprian Hacman
505c0c87de
kops-controller: Return `http.StatusConflict` only when node is ready
2023-05-27 12:58:50 +03:00
Ciprian Hacman
7b545dde4b
kops-controller: Return `http.StatusConflict` when node already exists
2023-05-27 09:47:40 +03:00
justinsb
1faee9dd8c
digitalocean: bootstrap nodes through kops-controller.
...
We start with a simple node verifier.
2023-05-07 13:17:56 -04:00
justinsb
c89f434f1b
Only use node challenge on hetzner
...
DigitalOcean (and others) will follow shortly.
Also create a method for CloudProvider, so that we are more ambivalent
towards bootstrapping methods.
2023-05-06 08:57:21 -04:00
Justin SB
c67f895226
Perform challenge callbacks into a node
...
In order to verify that the caller is running on the specified node,
we source the expected IP address from the cloud, and require that the
node set up a simple challenge/response server to answer requests.
Because the challenge server runs on a port outside of the nodePort
range, this also makes it harder for pods to impersonate their host
nodes - though we do combine this with TPM and similar functionality
where it is available.
2023-05-06 08:03:21 -04:00
justinsb
868823bbcf
Block bootstrap when the node already exists
...
We now do this across all clouds, as it has been demonstrated on
OpenStack.
2023-04-27 11:47:42 -04:00
Jesse Haka
a765191898
use http.StatusConflict
2023-02-20 13:01:43 +02:00
Jesse Haka
8e6199fa39
exit gracefully if server already exists in k8s
2023-02-12 16:52:13 +02:00
Justin SB
9b02017059
openstack verifier: support IPv6
...
Add IPv6 support to the openstack verifier and polish up a few error messages.
2023-01-28 10:54:48 -05:00
Jesse Haka
b3c134be06
make openstack kops-controller boostrap auth better
2023-01-19 10:07:11 +02:00
John Gardiner Myers
775ed65820
Run kops-controller server on non-leaders as well
2023-01-14 10:20:04 -08:00
Jesse Haka
3dab0eb807
Use kops-controller to boostrap nodes in OpenStack
2023-01-14 13:54:14 +02:00
justinsb
6c2edaee7e
Add Context arg to vfs ReadFile
...
This is an "action" method, so should take a context.
2023-01-01 09:51:44 -05:00
Ciprian Hacman
b3a07ee83e
Use short service name with discovery labels
2022-12-26 13:21:43 +02:00
justinsb
817c1e63b3
FindKeyset can return nil
...
We had missed a case in nodeup; add a Context argument to force us to
revisit the codepaths.
2022-12-24 16:12:21 -05:00
Ciprian Hacman
61eaeddb9b
Serve secrets from kops-controller for nodes without state store access
2022-11-15 14:51:54 +02:00
Ciprian Hacman
c9d1eb9761
hetzner: Use kops-controller for node bootstrap
2022-11-02 12:43:25 +02:00
Ole Markus With
ce2e877aeb
Remove bazel files from vendor
2022-04-12 13:29:03 +02:00
justinsb
f60f2476ed
kops-controller: use controller-runtime manager
...
This gives us access to a managed client, and it lets us hook into the
lifecycle.
2021-12-18 19:38:53 -05:00
John Gardiner Myers
73f164e229
Use instance ID as node name when AWS CCM supports it
2021-11-30 17:54:54 -08:00
justinsb
6133250046
gossip: support resolution of k8s.local names from pods
...
We add the hosts plugin to CoreDNS, and we populate a ConfigMap from
kops-controller (when in gossip mode).
This enables resolution of the internal apiserver DNS name from Pods,
even when gossip mode (k8s.local) is in use. This should fix the
failing e2e tests which are assuming that the name in the JWT token is
resolvable from inside the cluster.
This is also a possible step towards a simpler gossip mode, now that
we have a central controller.
2021-11-19 11:02:15 -05:00
justinsb
813f2f1431
kops-controller should log port it is listening on
2021-11-14 10:45:13 -05:00
Eng Zer Jun
425173ae9f
refactor: move from io/ioutil to io and os packages
...
The io/ioutil package has been deprecated as of Go 1.16, see
https://golang.org/doc/go1.16#ioutil . This commit replaces the existing
io/ioutil functions with their new definitions in io and os packages.
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2021-11-12 15:37:18 +08:00
justinsb
4dc2c062fd
Support GCE TPM verification
2021-10-06 08:40:20 -04:00
justinsb
fad6db8beb
Refactor bootstrap verifier/authenticator into its own package
...
No code changes, but this avoids a circular package dependency that we
would otherwise introduce in the GCE logic.
2021-09-26 09:43:53 -04:00
Ole Markus With
88bd1953ce
Have kops-controller assign instance ipv6 prefix to node
2021-09-16 19:25:19 +02:00
Ole Markus With
ad16042a1f
Add IPs to kubelet server cert
...
Since AWS does not resolve instance hostnames to ipv6, ipv6-only pods that talk to kubelet API has to use node IP, not hostname. Thus we need to add IPs to kubelet server cert.
2021-08-26 20:54:02 +02:00
John Gardiner Myers
191df58267
Verify CA keypair IDs for kops-controller-issued certs
2021-07-14 08:15:28 -07:00
John Gardiner Myers
4a47614e62
Simplify config server protocol
2021-06-26 09:56:47 -07:00
John Gardiner Myers
1752f0f4db
Move most of nodeup.Config out of userdata
2021-06-25 22:25:49 -07:00
John Gardiner Myers
c337d217ba
Refactor kops-controller to use FindPrimaryKeypair and use consistent filenames
2021-06-19 10:56:29 -07:00
John Gardiner Myers
09259ad30f
Remove unused field
2021-06-12 16:05:53 -07:00
Kubernetes Prow Robot
b71ba1d566
Merge pull request #11219 from johngmyers/refactor-keypair
...
Refactor keypair code in preparation for secret rotation
2021-06-12 14:25:00 -07:00
John Gardiner Myers
2300d89591
Rename pki.FindKeypair to FindPrimaryKeypair
2021-06-05 16:38:26 -07:00
John Gardiner Myers
0364a3af25
Refactor FindKeypair interfaces
2021-06-05 16:38:24 -07:00
John Gardiner Myers
eb09d31a3c
Pass AuxConfig to nodeup
2021-06-03 21:04:21 -07:00
Justin SB
4ac9d5c17b
Boot nodes without state store access
...
kops-controller can now serve the instance group & cluster config to
nodes, as part of the bootstrap process.
This enables nodes to boot without access to the state
store (i.e. without S3 / GCS / etc permissions)
Feature-flagged behind the KopsControllerStateStore feature-flag.
2021-01-09 13:08:48 -05:00
Ole Markus With
466dcd001e
Apply suggestions from code review
...
Co-authored-by: John Gardiner Myers <jgmyers@proofpoint.com>
2020-10-09 08:27:08 +02:00
Ole Markus With
809aa93634
Make use of kubelet service certificate
2020-10-09 08:27:08 +02:00
Rodrigo Menezes
4c057f138a
Allow caching of Nodeidentity Info in kops-controller for AWS to reduce the number of DescribeInstances API calls.
2020-09-09 22:11:29 +03:00
John Gardiner Myers
07220797b4
Issue the cilium etcd client cert out of kops-controller
2020-08-17 21:15:34 -07:00
Peter Rifel
bae8150e12
Update more klog v1 references to v2
...
I missed these in the previous PR. This removes the direct dependency on v1 entirely.
The kubernetes 1.19 upgrade will remove the indirect reference on v1.
2020-08-17 07:44:48 -05:00
John Gardiner Myers
d05f9a3eff
Don't issue certs for features not enabled
2020-08-16 23:40:43 -07:00