kops/pkg
Rohith 4531384649 This PR attempts to solve two issues
a) The current implementation use's a static kubelet which doesn't not conform to the Node authorization mode (i.e. system:nodes:<nodename>)
b) As present the kubeconfig is static and reused across all the masters and nodes

The PR firstly introduces the ability for users to use bootstrap tokens and secondly when enabled ensure the kubelets for the masters as have unique usernames.  Note, this PR does not attempt to address the distribution of the bootstrap tokens themselves, that's for cluster admins. One solution for this would be a daemonset on the masters running on hostNetwork and reuse dns-controller to annotated the pods and give as the DNS

Notes:
- the master node do not use bootstrap tokens, instead given they have access to the ca anyhow, we generate certificates for each.
- when bootstrap token is not enabled the behaviour will stay the same; i.e. a kubelet configuration brought down from the store.
- when bootstrap tokens are enabled, the Nodes sit in a timeout loop waiting for the configuration to appear (by third party).
- given the nodeup docker and manifests builders are executed before the kubelet builder, the assumption here is a unit file kicks of a custom container to bootstrap the rest.
- the current firewalls on between the master and nodes are fairly open so no need to open ports between the two
- much of the work was ported from @justinsb PR [here](https://github.com/kubernetes/kops/pull/4134/)
- we add a very presumptuous server and client certificates for use with an authorizer (node-bootstrap-internal.dns_zone)

I do have an additional PR which performs the entire thing. The process being a node_authorizer which runs on the master nodes via a daemonset, the service implements a series of authorizers (i.e. alwaysallow, aws, gce etc). For aws, the process is similar to how vault authorizes nodes [here](https://www.vaultproject.io/docs/auth/aws.html). Nodeup no then calls out to the node_authorizer on bootstrap and provisions the kubelet.
2018-06-11 09:56:32 +01:00
..
acls Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
apis This PR attempts to solve two issues 2018-06-11 09:56:32 +01:00
apiserver Update apiserver for 1.10 2018-04-18 20:38:44 -04:00
assets Typo fix in error message 2018-04-02 20:20:04 +08:00
bundle Set AWS_REGION into bootstrapscript 2018-04-12 17:39:24 -04:00
client Support (optional) etcd-manager 2018-05-25 16:01:22 -04:00
cloudinstances Update bazel. 2018-05-16 14:33:54 -05:00
commands Create override for etcd-manager image 2018-05-26 12:48:55 -07:00
diff Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
dns gazelle updates with new bazel version 2017-11-05 17:41:53 -07:00
edit gazelle updates with new bazel version 2017-11-05 17:41:53 -07:00
featureflag Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
flagbuilder Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
formatter Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
instancegroups set GracePeriodSeconds to -1 2018-05-10 18:33:54 -07:00
jsonutils gazelle updates with new bazel version 2017-11-05 17:41:53 -07:00
k8scodecs Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
k8sversion Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
kopscodecs Fix bazel deprecation notice 2018-02-26 09:36:13 -05:00
kubeconfig Don't use ELB DNS name for internal ELBs 2018-03-21 20:12:15 -04:00
kubemanifest Support (optional) etcd-manager 2018-05-25 16:01:22 -04:00
model This PR attempts to solve two issues 2018-06-11 09:56:32 +01:00
openapi - fixing up the spelling mistakes found 2018-06-06 10:03:51 +01:00
pki Create lifecycle test against AWS mocks 2018-03-11 17:04:30 -04:00
pretty gazelle updates with new bazel version 2017-11-05 17:41:53 -07:00
resources digitalocean: only delete A DNS records 2018-04-15 20:38:58 -04:00
sshcredentials Refactor CAStore to use API types 2017-12-17 20:09:00 -05:00
systemd typo fix 2018-03-31 14:31:01 +08:00
templates gazelle updates with new bazel version 2017-11-05 17:41:53 -07:00
testutils Merge pull request #5139 from justinsb/fix_subnet_egress_indexing 2018-06-09 09:27:01 -07:00
tokens Avoid ListSecrets call in nodeup 2017-12-19 11:45:04 -05:00
urls Support (optional) etcd-manager 2018-05-25 16:01:22 -04:00
util This PR attempts to solve two issues 2018-06-11 09:56:32 +01:00
validation Fix for validating kubeconfig's hosts 2018-05-03 11:48:51 +09:00
values Enabling the file assets 2017-12-17 15:26:57 -07:00