diff --git a/internal/app/machined/pkg/controllers/secrets/kubernetes.go b/internal/app/machined/pkg/controllers/secrets/kubernetes.go index 33933f8be7..648aa9a03a 100644 --- a/internal/app/machined/pkg/controllers/secrets/kubernetes.go +++ b/internal/app/machined/pkg/controllers/secrets/kubernetes.go @@ -209,7 +209,7 @@ func (ctrl *KubernetesController) updateSecrets(k8sRoot *secrets.RootKubernetesS k8sSecrets.APIServer = x509.NewCertificateAndKeyFromKeyPair(apiServer) apiServerKubeletClient, err := x509.NewKeyPair(ca, - x509.CommonName(constants.KubernetesAdminCertCommonName), + x509.CommonName(constants.KubernetesAPIServerKubeletClientCommonName), x509.Organization(constants.KubernetesAdminCertOrganization), x509.NotAfter(time.Now().Add(KubernetesCertificateValidityDuration)), ) diff --git a/pkg/kubernetes/kubernetes.go b/pkg/kubernetes/kubernetes.go index 0bf140d845..0173302f01 100644 --- a/pkg/kubernetes/kubernetes.go +++ b/pkg/kubernetes/kubernetes.go @@ -108,8 +108,9 @@ func NewClientFromPKI(ca, crt, key []byte, endpoint *url.URL) (client *Client, e // with a TTL of 10 minutes. func NewTemporaryClientFromPKI(ca *x509.PEMEncodedCertificateAndKey, endpoint *url.URL) (client *Client, err error) { opts := []x509.Option{ - x509.CommonName("admin"), - x509.Organization("system:masters"), + x509.CommonName(constants.KubernetesAdminCertCommonName), + x509.Organization(constants.KubernetesAdminCertOrganization), + x509.NotBefore(time.Now().Add(-time.Minute)), // allow for a minute for the time to be not in sync across nodes x509.NotAfter(time.Now().Add(10 * time.Minute)), } diff --git a/pkg/machinery/constants/constants.go b/pkg/machinery/constants/constants.go index 559aa77abb..ca8652d2ad 100644 --- a/pkg/machinery/constants/constants.go +++ b/pkg/machinery/constants/constants.go @@ -163,11 +163,14 @@ const ( KubernetesEtcdListenClientPort = "2379" // KubernetesAdminCertCommonName defines CN property of Kubernetes admin certificate. - KubernetesAdminCertCommonName = "apiserver-kubelet-client" + KubernetesAdminCertCommonName = "admin" // KubernetesAdminCertOrganization defines Organization values of Kubernetes admin certificate. KubernetesAdminCertOrganization = "system:masters" + // KubernetesAPIServerKubeletClientCommonName defines CN property of Kubernetes API server certificate to access kubelet API. + KubernetesAPIServerKubeletClientCommonName = "apiserver-kubelet-client" + // KubernetesControllerManagerOrganization defines Organization value of kube-controller-manager client certificate. KubernetesControllerManagerOrganization = "system:kube-controller-manager"