Commit Graph

1490 Commits

Author SHA1 Message Date
Lubomir I. Ivanov
8a5f849c66 kubeadm: keep v1beta3 only in required code paths
Use v1beta4 everywhere and only use v1beta3
in a few required locations:
- kubeadm-config map handling
- unit and integration tests
2024-06-17 10:07:32 +03:00
Lubomir I. Ivanov
02ed1aee71 kubeadm: fix the generation of ECDSA keys in kubeconfig files
When the PublicKeysECDSA feature gate is used or the new
v1beta4.ClusterConfiguration.EncryptionAlgorithm field is used
with "ECDSA-P256" as value, make sure that this is reflected
in the "cert spec" used to generate private keys and they end
up as "EC keys".
2024-06-07 20:04:18 +03:00
Lubomir I. Ivanov
52302e4ad5 kubeadm: use the actual configured kubelet healthz address:port
When doing a kubelet health check on init/join, do not
hardcode the "localhost" address. Instead, use the
KubeletConfiguration HealthzBindAddress and HealthzPort
fields.
2024-06-01 10:10:31 +03:00
Kubernetes Prow Robot
8565e37525 Merge pull request #125127 from my-git9/ut-compute
kubeadm: increase ut coverage for compute
2024-05-31 02:41:37 -07:00
xin.li
d24d82eda9 kubeadm: increase ut coverage for compute
Signed-off-by: xin.li <xin.li@daocloud.io>
2024-05-31 16:39:51 +08:00
Kubernetes Prow Robot
b503409e9c Merge pull request #124363 from claudiubelu/unittests-11
unittests: Fixes unit tests for Windows (part 11)
2024-05-30 08:17:24 -07:00
Kubernetes Prow Robot
529896474f Merge pull request #124688 from neolit123/1.31-always-rotate-etcd-certs-on-upgrade
kubeadm: ensure that etcd certs are rotated on apiserver upgrade
2024-05-29 05:10:30 -07:00
Lubomir I. Ivanov
f4d5e1d65d kubeadm: ensure that etcd certs are rotated on apiserver upgrade
Currently if etcd.yaml does not have a diff on "kubeadm upgrade"
certificate renewal for it is also skipped.

Check if kube-apiserver.yaml needs an upgrade, if so and if
cert renewal is not disabled, renew etcd's certs and restart
its static pod.
2024-05-29 13:07:41 +03:00
Lubomir I. Ivanov
5e290ebc90 switch k/k to pause version 3.10 2024-05-24 10:02:51 +03:00
Kubernetes Prow Robot
44c45484e0 Merge pull request #124465 from neolit123/1.31-add-etcd-livez-readyz
kubeadm: use etcd 3.5.11's /livez and /readyz endpoints for probes
2024-05-21 04:40:23 -07:00
Claudiu Belu
e90cfb83ed unittests: Fixes unit tests for Windows (part 11)
Currently, there are some unit tests that are failing on
Windows due to various reasons:

- Cannot remove a directory if there's a file open in that directory.
- Paths may have / or \ on Windows.
2024-05-16 12:36:49 +00:00
SataQiu
1329935739 kubeadm: add support for patching a corednsdeployment target 2024-05-11 18:21:20 +08:00
Kubernetes Prow Robot
eeb42fa543 Merge pull request #124678 from my-git9/dns-test-54
kubeadm: increase ut coverage for addon/dns
2024-05-08 21:46:39 -07:00
Kubernetes Prow Robot
78bc18dcb0 Merge pull request #124715 from SataQiu/fix-kubeadm-20240507
kubeadm: remove deprecated UpgradeAddonsBeforeControlPlane featuregate
2024-05-07 13:29:24 -07:00
Kubernetes Prow Robot
72786649b6 Merge pull request #124652 from neolit123/1.31-add-cert-expiration-v1beta4
kubeadm: add support for custom cert validity period in v1beta4
2024-05-07 10:38:51 -07:00
SataQiu
6f94700886 kubeadm: remove deprecated UpgradeAddonsBeforeControlPlane featuregate 2024-05-07 09:24:10 +08:00
xin.li
d1dff562ad kubeam: increase ut coverage for addon/dns
Signed-off-by: xin.li <xin.li@daocloud.io>
2024-05-03 21:21:06 +08:00
SataQiu
1c82e03c2a kubeadm: remove unused CreateKubeConfigFileFunc type 2024-05-03 16:19:51 +08:00
Lubomir I. Ivanov
74e1438d86 kubeadm: add support for custom cert validity period in v1beta4
Allow the user to pass custom cert validity period with
ClusterConfiguration.CertificateValidityPeriod and
CACertificateValidityPeriod.

The defaults remain 1 year for regular cert and 10 years for CA.
Show warnings if the provided values are more than the defaults.

Additional changes:
- In "certs show-expiration" use HumanDuration() to print
more detailed durations instead of ShortHumanDuration().
- Add a new kubeadm util GetStartTime() which can be used
to consistently get a UTC time for tasks like writing certs
and unit tests.
- Update unit tests to validate the new customizable NotAfter.
2024-05-01 19:01:49 +03:00
Kubernetes Prow Robot
29a4812f03 Merge pull request #124080 from claudiubelu/skip-windows-tests
Skip failing Windows tests
2024-05-01 07:48:12 -07:00
Lubomir I. Ivanov
786ad3ca81 kubeadm: check for available nodes during 'CreateJob' preflight
Instead of erroring during the preflight check 'CreateJob'
from "upgrade" commands when there are no schedulable nodes,
show a warning.

This can happen in single node clusters.

Also increase the Job TTL after completion to 20 seconds
to make sure it's more than the timeout what waits
for the Job to complete.
2024-04-26 12:18:02 +03:00
Claudiu Belu
2be8baeaef unittests: Skip failing Windows tests
Some of the unit tests are currently failing on Windows.

Skip them for now, and remove the skips later, once the underlying issues
have been resolved.
2024-04-25 14:24:16 +00:00
Lubomir I. Ivanov
eeac2dda70 kubeadm: use new etcd /livez and /readyz endpoints
etcd >= 3.5.11 includes new endpoints for liveness, startup
and readyness probes. Use them in 1.31.
2024-04-23 17:07:27 +03:00
Lubomir I. Ivanov
9c156218cc kubeadm: don't mount /etc/pki for apiserver and KCM
According to kubeadm repo ticket 1665, /etc/pki
can contain subdirectories with private keys on some distros.
Avoid mounting the entire /etc/pki and mount /etc/pki/ca-trust
and /etc/pki/tls/certs instead. These directories are mounted
as an extra locations which can be used to search
for additional system CAs.
2024-04-18 12:33:18 +03:00
carlory
363fee59e4 fix panic with SIGSEGV in kubeadm certs check-expiration 2024-04-01 11:09:53 +08:00
Kubernetes Prow Robot
9d39ce04fd Merge pull request #123595 from neolit123/1.30-add-timeouts-upgradeconfig
kubeadm: add timeouts to v1beta4.UpgradeConfiguration
2024-03-04 01:16:44 -08:00
Lior Lieberman
db115ca929 [kubeadam] do not set authorization-mode in api server when authorization-config is provided 2024-03-03 14:43:47 +00:00
Kubernetes Prow Robot
7c11cc9cfc Merge pull request #123578 from carlory/fix-kubeadm-494
kubeadm: print all the kubelets and nodes that need to be upgraded on "upgrade plan"
2024-03-03 01:46:03 -08:00
carlory
22adf221a1 print nodename 2024-03-03 11:03:29 +08:00
Lubomir I. Ivanov
ded6354a8f kubeadm: add Timeouts struct to v1beta4.UpgradeConfiguration
Follow the same process of adding the Timeouts struct
to UpgradeConfiguration similarly to how it was done for
other API Kinds.

In the Timeouts struct include one new timeout:
- UpgradeManifests
2024-03-01 13:04:08 +02:00
Kubernetes Prow Robot
d8122df1b7 Merge pull request #123555 from neolit123/1.30-fix-apiserver-authz-arg-defaulting
kubeadm: fix a bug in defaulting apiserver "authorizaion-mode"
2024-02-29 09:49:08 -08:00
Kubernetes Prow Robot
03f24068da Merge pull request #123341 from neolit123/1.30-health-check-all-cp-components
kubeadm: introduce the WaitForAllControlPlaneComponents feature gate
2024-02-29 05:05:42 -08:00
Lubomir I. Ivanov
5f7c36a4e9 kubeadm: fix a bug in default apiserver "authorizaion-mode"
When the flag is defaulted before writing the apiserver manifest,
the input "cfg" object should not be mutated.

If the "cfg" is mutated, the upload ClusterConfiguration
to the cluster will include the defaulting, which is not
needed.
2024-02-28 14:32:28 +02:00
carlory
fb3ab53822 Replace fmt.Print with printer in upgrade plan code and fix configVersions are not printed when output is json or yaml 2024-02-25 21:58:18 +08:00
SataQiu
f3cb5059a7 kubeadm: fix a bug during kubeadm upgrade, where it is not possible to mount a new device and create a symbolic link for /etc/kubernetes (or a sub-directory) so that kubeadm stores its information on the mounted device 2024-02-22 09:42:57 +08:00
Lubomir I. Ivanov
c29450eb00 kubeadm: apply retries to all API calls in idempotency.go
The idempotency.go (perhaps not so accurately named) contains
API calls that kubeadm does against an API server using client-go.

Some users seem to have unstable setups where for unknown reasons
the API server can be unavailable or refuse to respond as expected.

Use PollUntilContextTimeout in all exported functions to ensure
such API calls are all retry-able.

NOTE: The context passed to PollUntilContextTimeout is not propagated
in the polled function. Instead the poll function creates it's own
context 'ctx := context.Background()', this is to avoid
breaking expectations on the side of the callers, that expect
a certain type of error and not "context timeout" errors.

Additional changes:
- Make all context.TODO() -> context.Background()
- Update all unit tests and make sure during testing the retry
interval and timeout are short. Test coverage of idempotency.go
is at ~97%.
- Remove the TestMutateConfigMapWithConflict test. It does not
contribute much, because conflict handling is done at the API,
server side, not on the side of kubeadm. This simulating this is not
needed.
2024-02-18 13:14:32 +02:00
Lubomir I. Ivanov
7db7222592 kubeadm: introduce the WaitForAllControlPlaneComponents feature gate
WaitForAllControlPlaneComponents is a new feature gate
that can be used to tell kubeadm to wait for all control plane
components and not only kube-apiserver.

- Add the Waiter function WaitForControlPlaneComponents
that waits for all CP components in parallel. Uses the regular
healthz endpoint for checks of status 200.
- Add a new experimental phase to kubeadm join called "wait-control-plane".
A similar phase exists for kubeadm init.
2024-02-16 17:33:38 +02:00
Kubernetes Prow Robot
8cbe59308c Merge pull request #122786 from HirazawaUi/remove-kubeadm-useless-code
kubeadm: remove code to be removed in 1.30
2024-02-05 07:21:29 -08:00
Shida Qiu
f47c2a1ba6 Revert "kubeadm: fix a bug where the uploaded kubelet configuration in kube-system/kubelet-config ConfigMap does not respect user patch" 2024-02-02 20:34:30 +08:00
Kubernetes Prow Robot
2372837838 Merge pull request #123054 from neolit123/1.30-v1beta4-encryption-enhance
kubeadm: enhance encryption algorithm support in v1beta4
2024-02-02 01:11:09 -08:00
Markus Rudy
065066d1ab kubeadm: support digests in DeployedDNSAddon()
kubeadm upgrade checks the migration path for the existing CoreDNS
deployment pre-flight. Migration paths are defined for CoreDNS
versions, which are derived from the image tag used in the existing
deployment.

The kubeadm ClusterConfiguration.DNS.ImageMeta supports suffixing the
tag with a digest, but at upgrade time does not derive the version
correctly from an image with digest suffix, because DeployedDNSAddon
does not deal with digests correctly. This commit makes DeployedDNSAddon
digest-aware.

Signed-off-by: Markus Rudy <mr@edgeless.systems>
2024-02-01 10:04:15 +01:00
Lubomir I. Ivanov
2cab79710d kubeadm: enhance encryption algorithm support in v1beta4
Previous v1beta4 work added support for
ClusterConfiguration.EncryptionAlgorithm, however the possible
values were limited to just "RSA" (2048 key size) and "ECDSA" (P256).

Allow more arbitrary algorithm types, that can also include key size
or curve type encoded in the name:
"RSA-2048" (default), "RSA-3072", "RSA-4096" or "ECDSA-P256".

Update the deprecation notice of the PublicKeysECDSA FeatureGate
as ideally it should be removed only after v1beta3 is removed.
2024-01-31 23:49:21 +02:00
Kubernetes Prow Robot
918f7c28af Merge pull request #122875 from my-git9/readwriterut
kubeadm: increase ut coverage certs/renewal/readwriter
2024-01-29 06:49:35 -08:00
xin.li
d7c1a61e04 kubeadm: increase ut coverage certs/renewal/readwriter
Signed-off-by: xin.li <xin.li@daocloud.io>
2024-01-29 19:52:59 +08:00
Paco Xu
8bc63027d9 remove extra space in log 2024-01-29 16:34:44 +08:00
Kubernetes Prow Robot
7340ce932b Merge pull request #122978 from SataQiu/fix-20240126
kubeadm: fix the error check bug in certlist test
2024-01-26 10:10:00 +01:00
SataQiu
5ab9f3d15f kubeadm: fix the err check bug in certlist test 2024-01-26 11:01:03 +08:00
HirazawaUi
6e5e1d0317 Remove useless org mutate code 2024-01-25 21:49:14 +08:00
Paco Xu
ec1516b45d kubeadm: don't fail post upgrade in EnsureAdminClusterRoleBindingImpl if the error is crb already exists 2024-01-25 18:15:29 +08:00
Dan Winship
b46455ddfe Fix to previous EnsureAdminClusterRoleBindingImpl fix
The previous fix changed the behavior of
EnsureAdminClusterRoleBindingImpl under the assumption that the unit
test was correct and the real-world behavior was wrong, but in fact,
the real-world behavior was already correct, and the unit test was
expecting the wrong result because of the difference in behavior
between real and fake clients.
2024-01-22 08:23:41 -05:00