Commit Graph

54 Commits

Author SHA1 Message Date
Andrew Lytvynov
ab6fed13f4 Re-use private key after failed CSR
If we create a new key on each CSR, if CSR fails the next attempt will
create a new one instead of reusing previous CSR.

If approver/signer don't handle CSRs as quickly as new nodes come up,
they can pile up and approver would keep handling old abandoned CSRs and
Nodes would keep timing out on startup.

Kubernetes-commit: 2c0f043957d25da162fe4e1026c50e2587529ff9
2018-06-13 11:27:25 -07:00
Andrew Lytvynov
6c082e8151 Extract connection rotating dialer into a package
This will be re-used for exec auth plugin to rotate connections on
credential change.

Kubernetes-commit: 85a61ff3aa7df8d83af304ebffab780fabd028a8
2018-05-16 10:30:53 -07:00
Mikhail Mazurskiy
9446f4ef9d Stop() for Ticker to enable leak-free code
Kubernetes-commit: 1f393cdef96fe6e4ddcbf93825d65a9980463406
2018-03-31 19:41:43 +11:00
Clayton Coleman
caf2e70aa1 When bootstrapping a client cert, store it with other client certs
The kubelet uses two different locations to store certificates on
initial bootstrap and then on subsequent rotation:

* bootstrap: certDir/kubelet-client.(crt|key)
* rotation:  certDir/kubelet-client-(DATE|current).pem

Bootstrap also creates an initial node.kubeconfig that points to the
certs. Unfortunately, with short rotation the node.kubeconfig then
becomes out of date because it points to the initial cert/key, not the
rotated cert key.

Alter the bootstrap code to store client certs exactly as if they would
be rotated (using the same cert Store code), and reference the PEM file
containing cert/key from node.kubeconfig, which is supported by kubectl
and other Go tooling. This ensures that the node.kubeconfig continues to
be valid past the first expiration.

Kubernetes-commit: 368959346af6e06085c63a4cc7c37839f262f636
2018-04-04 21:56:15 -04:00
Cao Shufeng
a52532be7b fix assert.Equal argument order
Reference:
https://godoc.org/github.com/stretchr/testify/assert#Equal

Kubernetes-commit: f95bc9289d684d311c54ff66adc2dd50a4af8143
2018-02-04 15:14:55 +08:00
Kubernetes Publisher
fff8c3d73e sync: initially remove files BUILD */BUILD BUILD.bazel */BUILD.bazel 2018-03-15 09:19:38 +00:00
Wang Guoliang
a8dc497f30 fix some syntax related errors
Kubernetes-commit: d065157dd74fa02eec87f5849528b079a3736c3d
2018-02-11 19:50:49 +08:00
Jordan Liggitt
dd61bd2530 Split self-signed cert and CA
Kubernetes-commit: 3d3cde45b73ec31c81fadbfd494387d141858a40
2018-02-15 23:30:17 -05:00
Clayton Coleman
b30485cc03 When using the bootstrap cert, update the store
Otherwise, the certificate store will return nil the first time a store
cert is accessed. When background rotation is being used, prevents the
client from being nil.

Kubernetes-commit: b81f4745546340f08abd3f877c585aac9581d0f0
2018-02-04 01:24:56 -05:00
Jeff Grafton
fca8bb2928 Autogenerated: hack/update-bazel.sh
Kubernetes-commit: ef56a8d6bb3800ab7803713eafc4191e8202ad6e
2018-02-16 13:43:01 -08:00
Di Xu
d39d12f4b0 fix all the typos across the project
Kubernetes-commit: 48388fec7eaad4ac8d84fbe20673ffacf41964a1
2018-02-09 14:53:53 +08:00
Jordan Liggitt
acc52496ce Switch from juju/ratelimit to golang.org/x/time/rate
Kubernetes-commit: 4b9f00988b9401f6c774d3d5e1bce45a8e8f81c8
2018-01-19 02:08:51 -05:00
Jordan Liggitt
7392f7f78f Remove Saturation() from rate limiter interface
Kubernetes-commit: a9ed90f227f07fab2da75541d57a5366ddb38f66
2018-01-19 01:59:33 -05:00
halfcrazy
b6a34c5a00 fix typo in client-go
Kubernetes-commit: 86801dee64215e76080fe8df83ffd1fb7df9e093
2018-02-01 02:33:45 +08:00
Clayton Coleman
3f65b38279 Only rotate certificates in the background
The certificate manager originally had a "block on startup" rotation
behavior to ensure at least one rotation happened on startup. However,
since rotation may not succeed within the first time window the code was
changed to simply print the error rather than return it. This meant that
the blocking rotation has no purpose - it cannot cause the kubelet to
fail, and it *does* block the kubelet from starting static pods before
the api server becomes available.

The current block behavior causes a bootstrapped kubelet that is also
set to run static pods to wait several minutes before actually launching
the static pods, which means self-hosted masters using static pods have
a pointless delay on startup.

Since blocking rotation has no benefit and can't actually fail startup,
this commit removes the blocking behavior and simplifies the code at the
same time. The goroutine for rotation now completely owns the deadline,
the shouldRotate() method is removed, and the method that sets
rotationDeadline now returns it. We also explicitly guard against a
negative sleep interval and omit the message.

Should have no impact on bootstrapping except the removal of a long
delay on startup before static pods start.

Also add a guard condition where if the current cert in the store is
expired, we fall back to the bootstrap cert initially (we use the
bootstrap cert to communicate with the server). This is consistent with
when we don't have a cert yet.

Kubernetes-commit: 44493de195d89ec43cc7246af921e626e0002c16
2018-01-28 14:28:28 -05:00
Jeff Grafton
fe985a55a2 Autogenerate BUILD files
Kubernetes-commit: efee0704c60a2ee3049268a41535aaee7f661f6c
2017-12-23 13:06:26 -08:00
Sergey Lanzman
302b3649ef Move regexp.MustCompile to global variable
Kubernetes-commit: 34747474659b26456c3615d9f79d014deacf505a
2017-09-04 22:56:06 +03:00
Cao Shufeng
66ea4a9362 remove duplicated import
Kubernetes-commit: 86968e44d09e713b8cd5adca5705bba7e511c033
2017-11-14 11:36:32 +08:00
Eric Chiang
134dba2dab certificate manager: reduce max backoff from 128s to 32s
Kubernetes-commit: cba8939504e303a3e8ab7f8b69be29ef78fa48cc
2017-11-08 16:24:01 -08:00
Clayton Coleman
cb1d458c41 When cert dir is relative, cert rotation builds incorrect symlinks
Symlinks relative to a working directory were being constructed to the
wrong location, leading to failure to refresh client certs.

Kubernetes-commit: 3ec453d0d000a9bd3244d9d455f715bfe64d2e6b
2017-11-02 00:34:34 -04:00
Marcin Owsiany
c80a7b8142 Fix lint warnings for useless err checks.
This check was recently added to golint.

Kubernetes-commit: 49553d4a7a5179f0cfabbdcb7d3551c21cbcb646
2017-10-17 12:52:54 +02:00
Clayton Coleman
1372839f29 Move pkg/kubelet/util/csr into client-go
Everything else it depends on was already there, and now we have a
somewhat consistent code chain.

Kubernetes-commit: 5649f9a578f4f130f61579d77d5609fbdaf82a1f
2017-10-10 20:15:03 -04:00
Clayton Coleman
f7a735a8c2 Have the certificate manager decide if the server is healthy
Prevent a Kubelet from shutting down when the server isn't responding to
us but we cannot get a new certificate. This allows a cluster to coast
if the master is unresponsive or a node is partitioned and their client
cert expires.

Kubernetes-commit: b3a11aa635022761637090f4fc8d5cb57f3f0010
2017-10-05 18:57:53 -04:00
Clayton Coleman
bb96050dfb Collapse duplicate code into pkg/util/csr
There is no reason to duplicate this code into two places.

Kubernetes-commit: c3bea24ab6242b084e7d09073c8906c778611243
2017-10-01 16:10:51 -04:00
Jeff Grafton
c92755ea3b update BUILD files
Kubernetes-commit: aee5f457dbfd70c2d15c33e392dce6a3ca710116
2017-10-12 13:52:10 -07:00
Jacob Simpson
1bb4ecc0ae Move certificate manager to client.
Kubernetes-commit: 415c4d2c3af1fadb839bf4b73c6ea16db6b8c59f
2017-03-09 16:34:55 -08:00
Mikhail Mazurskiy
00c624b92c Ring buffer for notifications
Results from BenchmarkListener:
Current code:
1000000	      1540 ns/op	     109 B/op	       1 allocs/op

New:
1000000	      1139 ns/op	      16 B/op	       1 allocs/op

Kubernetes-commit: 1940f5a5d2acce377ab16b5561f3d9002fb2a319
2017-09-26 21:58:48 +10:00
ymqytw
6a94c085e7 move retry to client-go
Kubernetes-commit: 7500b55ce42f82a405def05386e642ba661b2460
2017-08-29 12:52:26 +00:00
Jeff Grafton
5da217e5c4 Use buildozer to delete licenses() rules except under third_party/
Kubernetes-commit: a7f49c906df816123e7d4ccbd4cebab411519465
2017-08-29 12:51:55 +00:00
Jeff Grafton
fa2ceb7462 Use buildozer to remove deprecated automanaged tags
Kubernetes-commit: 33276f06be5e872bf53ca62a095fcf0a6b6c11a8
2017-08-29 12:51:55 +00:00
Jeff Grafton
573b6e6289 Autogenerate BUILD files
Kubernetes-commit: cf55f9ed45e6df2431d47cfc5b9c9b30758527f1
2017-08-29 12:51:54 +00:00
Nikhita Raghunath
e447af6403 jsonpath: fix comments
avoid named return errors

fix compile error

Kubernetes-commit: 77e347b8d086c51c02ffdf50c00452864a6ec747
2017-08-29 12:51:54 +00:00
Christoph Blecker
2ae2a25386 Move remaining cert helper functions to client-go/util/cert
- Move public key functions to client-go/util/cert
- Move pki file helper functions to client-go/util/cert
- Standardize on certutil package alias
- Update dependencies to client-go/util/cert

Kubernetes-commit: aac4d5382d8ea632360a08369f5adfdebce7c2c3
2017-08-29 12:50:17 +00:00
Jeff Grafton
f921a73942 Run hack/update-bazel.sh to generate BUILD files
Kubernetes-commit: 3579017b865ddbc5449d6bba87346f086e4b93ff
2017-08-29 12:50:17 +00:00
juanvallejo
f0c66765d7 check for negative index values
Kubernetes-commit: 113ff3bb9854d6c5c4e8d1a66749075c480130a9
2017-07-28 13:45:48 +00:00
Andy Goldstein
75943a8927 jsonpath filter: allow intermediate missing keys
In jsonpath, when filtering a list, if allowMissingKeys is true, skip
over any items that are missing an intermediate key in the filter,
instead of returning a confusing error.

For example, if the filter is

{.items[?(@.metadata.annotations.foo=="bar")].metadata.name}

we should return all items where metadata.annotations.foo == bar, but if
an item in the list does not have metadata, metadata.annotations, or
metadata.annotations.foo, skip it instead of erroring.

Kubernetes-commit: e6f97d514d83fc2614d1ad4e18de0b318cc81653
2017-07-16 03:58:42 +00:00
Shiyang Wang
e7816d5d9a add more unit test
Kubernetes-commit: 87f877962468a83efe4f46ec01582d8703a4e899
2017-07-06 23:49:18 +00:00
Shiyang Wang
27f2f9370c fix JSONPath parser will not filter strings containing parentheses
Kubernetes-commit: fb4fc7d7d108a94053671160894011e84f821742
2017-07-06 23:49:18 +00:00
Tim Hockin
7bef0aa41b Inject clock through flowcontrol
Kubernetes-commit: 3153ca2815c5a596adec770392248573c7e448b7
2017-06-13 20:38:45 +00:00
Clayton Coleman
09165439d7 Refactor move of client-go/util/clock to apimachinery
Kubernetes-commit: 3e095d12b4f152a45b593927804e2e7b8816239a
2017-05-21 17:20:29 +00:00
Clayton Coleman
dd465010d3 Move client-go/util/clock to apimachinery/pkg/util/clock
For reuse

Kubernetes-commit: 8013212db54e95050c622675c6706cce5de42b45
2017-05-21 17:20:29 +00:00
Dmitry Shulyak
dffa083760 Add exec module to client-go/util only with required code
client-go/pkt/util was removed in favor of client-go util, which consists
only from CodeExitError and ExitError interface

Kubernetes-commit: 8574bc564f4c54aa964d6c0c7ccec3202d9e2f1b
2017-05-16 17:20:28 +00:00
Andy Lindeman
f851632ada Uses container/heap
Kubernetes-commit: dad64459a9b8c56d5bca681e37c3d0f44921d472
2017-05-15 17:20:25 +00:00
Andy Lindeman
fe9ac9f9c0 Adds benchmark test
Kubernetes-commit: 21ca6c498aec2879fd7b9796f55743e5f14d5a80
2017-05-15 17:20:25 +00:00
Mike Danese
4b15a8b136 add testdata for tests in //vendor/k8s.io/...
Kubernetes-commit: 981dd8dc6615f397a9b85c5b965998dc8a0b1338
2017-04-15 20:28:18 +00:00
Mike Danese
9a45999fa0 autogenerated
Kubernetes-commit: a05c3c0efdc5822049e34b1a5a1ee259c5fb1906
2017-04-15 20:28:18 +00:00
StudyNick
268171e690 'workqueue' modify 'work queue'
Kubernetes-commit: dc460c3e15651d7e3527337c7997ab7f956ad6b1
2017-04-14 20:28:20 +00:00
Jacob Simpson
f503ec43c7 Change the PEM block type to use the constant
Kubernetes-commit: 515987db3f039f5f19c3f6292af072b937aacdd7
2017-04-11 20:28:18 +00:00
Chao Xu
98caa049f9 remove timed_queue, its functionality is supported by a regular queue now
Kubernetes-commit: 29432ce05476e3452b3afe0563d45bdc66ef8c27
2017-03-31 20:29:30 +00:00
Chao Xu
088dc4a30d manually sync with k8s.io/kubernetest at 17375fc59fff39135af63bd1750bb07c36ef873b, k8s.io/apimachinery at d90aa2c8531f13b0ca734845934c10dcb6a56ca7 2017-02-23 12:27:32 -08:00