Skip to content

Commit 83129f1

Browse files
authored
chore: update rook to 1.16.6 (#333)
1 parent 0f92d2b commit 83129f1

File tree

8 files changed

+1231
-273
lines changed

8 files changed

+1231
-273
lines changed

cmd/ekco/cli/regen-cert.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import (
66
"strings"
77

88
"github.com/pkg/errors"
9+
"github.com/replicatedhq/ekco/pkg/util"
910
"github.com/spf13/cobra"
1011
"github.com/spf13/viper"
1112
certutil "k8s.io/client-go/util/cert"
12-
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
1313
certsphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
1414
"k8s.io/kubernetes/cmd/kubeadm/app/phases/certs/renewal"
1515
"k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil"
@@ -37,15 +37,22 @@ func RegenCertCmd(v *viper.Viper) *cobra.Command {
3737
return fmt.Errorf("Expected exactly 1 cert in %s, got %d", certPath, len(certs))
3838
}
3939
cert := certs[0]
40+
41+
// check if encryption algorithm is supported
42+
encryptionAlgorithm, err := util.GetEncryptionAlgorithmType(cert)
43+
if err != nil {
44+
return errors.Wrapf(err, "get encryption algorithm type from %s", certPath)
45+
}
46+
4047
cfg := &pkiutil.CertConfig{
4148
Config: certutil.Config{
4249
CommonName: cert.Subject.CommonName,
4350
Organization: cert.Subject.Organization,
4451
AltNames: certutil.AltNames{},
4552
Usages: cert.ExtKeyUsage,
4653
},
47-
NotAfter: &cert.NotAfter,
48-
EncryptionAlgorithm: kubeadmapi.EncryptionAlgorithmType(cert.PublicKeyAlgorithm.String()),
54+
NotAfter: cert.NotAfter,
55+
EncryptionAlgorithm: encryptionAlgorithm,
4956
}
5057

5158
newCertIPs := map[string]net.IP{}

go.mod

Lines changed: 93 additions & 89 deletions
Large diffs are not rendered by default.

go.sum

Lines changed: 1053 additions & 163 deletions
Large diffs are not rendered by default.

pkg/cluster/registry_cert.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ func (c *Controller) RotateRegistryCert(ctx context.Context) error {
6161
return errors.Wrap(err, "load cluster CA")
6262
}
6363

64-
config := certToConfig(cert)
64+
config, err := certToConfig(cert)
65+
if err != nil {
66+
return errors.Wrap(err, "convert cert to config")
67+
}
6568

6669
newCert, newKey, err := generateNewCertAndKey(caCert, caKey, config)
6770
if err != nil {
@@ -131,9 +134,15 @@ func (c *Controller) updateRegistryCert(ctx context.Context, namespace, name str
131134
return nil
132135
}
133136

134-
func certToConfig(crt *x509.Certificate) *certConfig {
137+
func certToConfig(crt *x509.Certificate) (*certConfig, error) {
135138
notBefore := time.Now().UTC()
136-
notAfter := notBefore.Add(kubeadmconstants.CertificateValidity)
139+
notAfter := notBefore.Add(kubeadmconstants.CertificateValidityPeriod)
140+
141+
encryptionAlgorithm, err := util.GetEncryptionAlgorithmType(crt)
142+
if err != nil {
143+
return nil, errors.Wrapf(err, "get encryption algorithm type from %s", crt.Subject.CommonName)
144+
}
145+
137146
return &certConfig{
138147
Config: cert.Config{
139148
CommonName: crt.Subject.CommonName,
@@ -146,8 +155,8 @@ func certToConfig(crt *x509.Certificate) *certConfig {
146155
},
147156
NotBefore: &notBefore,
148157
NotAfter: &notAfter,
149-
PublicKeyAlgorithm: kubeadmapi.EncryptionAlgorithmType(crt.PublicKeyAlgorithm.String()),
150-
}
158+
PublicKeyAlgorithm: encryptionAlgorithm,
159+
}, nil
151160
}
152161

153162
// Copied from pkiutil.NewCertAndKey
@@ -192,7 +201,7 @@ func newSignedCert(cfg *certConfig, key crypto.Signer, caCert *x509.Certificate,
192201
notBefore = *cfg.NotBefore
193202
}
194203

195-
notAfter := time.Now().Add(kubeadmconstants.CertificateValidity).UTC()
204+
notAfter := time.Now().Add(kubeadmconstants.CertificateValidityPeriod).UTC()
196205
if cfg.NotAfter != nil {
197206
notAfter = *cfg.NotAfter
198207
}

pkg/cluster/registry_cert_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func Test_generateNewCertAndKey(t *testing.T) {
4949

5050
for _, test := range tests {
5151
t.Run(test.name, func(t *testing.T) {
52-
caKey, err := rsa.GenerateKey(rand.Reader, 1024)
52+
caKey, err := rsa.GenerateKey(rand.Reader, 2048)
5353
assert.NoError(t, err)
5454

5555
caBytes, err := x509.CreateCertificate(rand.Reader, test.ca, test.ca, &caKey.PublicKey, caKey)
@@ -58,7 +58,8 @@ func Test_generateNewCertAndKey(t *testing.T) {
5858
parsedCA, err := x509.ParseCertificate(caBytes)
5959
assert.NoError(t, err)
6060

61-
cfg := certToConfig(parsedCA)
61+
cfg, err := certToConfig(parsedCA)
62+
assert.NoError(t, err)
6263
newCert, _, err := generateNewCertAndKey(parsedCA, caKey, cfg)
6364
assert.NoError(t, err)
6465

pkg/cluster/rook_ceph_test.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,9 +1139,12 @@ func TestController_SetFilesystemReplication(t *testing.T) {
11391139
Namespace: "rook-ceph",
11401140
},
11411141
Spec: cephv1.FilesystemSpec{
1142-
MetadataPool: cephv1.PoolSpec{
1143-
Replicated: cephv1.ReplicatedSpec{
1144-
Size: 1,
1142+
MetadataPool: cephv1.NamedPoolSpec{
1143+
Name: "myfs-metadata",
1144+
PoolSpec: cephv1.PoolSpec{
1145+
Replicated: cephv1.ReplicatedSpec{
1146+
Size: 1,
1147+
},
11451148
},
11461149
},
11471150
DataPools: []cephv1.NamedPoolSpec{
@@ -1181,9 +1184,12 @@ func TestController_SetFilesystemReplication(t *testing.T) {
11811184
Namespace: "rook-ceph",
11821185
},
11831186
Spec: cephv1.FilesystemSpec{
1184-
MetadataPool: cephv1.PoolSpec{
1185-
Replicated: cephv1.ReplicatedSpec{
1186-
Size: 1,
1187+
MetadataPool: cephv1.NamedPoolSpec{
1188+
Name: "myfs-metadata",
1189+
PoolSpec: cephv1.PoolSpec{
1190+
Replicated: cephv1.ReplicatedSpec{
1191+
Size: 1,
1192+
},
11871193
},
11881194
},
11891195
DataPools: []cephv1.NamedPoolSpec{
@@ -1223,9 +1229,12 @@ func TestController_SetFilesystemReplication(t *testing.T) {
12231229
Namespace: "rook-ceph",
12241230
},
12251231
Spec: cephv1.FilesystemSpec{
1226-
MetadataPool: cephv1.PoolSpec{
1227-
Replicated: cephv1.ReplicatedSpec{
1228-
Size: 1,
1232+
MetadataPool: cephv1.NamedPoolSpec{
1233+
Name: "myfs-metadata",
1234+
PoolSpec: cephv1.PoolSpec{
1235+
Replicated: cephv1.ReplicatedSpec{
1236+
Size: 1,
1237+
},
12291238
},
12301239
},
12311240
DataPools: []cephv1.NamedPoolSpec{

pkg/objectstore/migrate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func updateRegistryObjectStore(ctx context.Context, client kubernetes.Interface,
133133
return fmt.Errorf("get registry-s3-secret secret in kurl namespace: %v", err)
134134
}
135135
}
136-
if registryConfig != nil && registrySecret != nil {
136+
if registryConfig != nil && registrySecret != nil && registryConfig.Data != nil && registrySecret.Data != nil {
137137
logs("Updating Registry to use new object store")
138138

139139
existingConfig := registryConfig.Data["config.yml"]

pkg/util/cert.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package util
2+
3+
import (
4+
"crypto/ecdsa"
5+
"crypto/elliptic"
6+
"crypto/rsa"
7+
"crypto/x509"
8+
"fmt"
9+
10+
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
11+
)
12+
13+
// GetEncryptionAlgorithmType returns the encryption algorithm type for a given certificate
14+
// https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta4/#kubeadm-k8s-io-v1beta4-ClusterConfiguration
15+
// Can be one of "RSA-2048" (default), "RSA-3072", "RSA-4096" or "ECDSA-P256"
16+
func GetEncryptionAlgorithmType(cert *x509.Certificate) (kubeadmapi.EncryptionAlgorithmType, error) {
17+
switch pubKey := cert.PublicKey.(type) {
18+
case *rsa.PublicKey:
19+
keySize := pubKey.Size() * 8 // Size() returns bytes, convert to bits
20+
switch keySize {
21+
case 2048:
22+
return kubeadmapi.EncryptionAlgorithmRSA2048, nil
23+
case 3072:
24+
return kubeadmapi.EncryptionAlgorithmRSA3072, nil
25+
case 4096:
26+
return kubeadmapi.EncryptionAlgorithmRSA4096, nil
27+
default:
28+
return "", fmt.Errorf("unsupported RSA key size: %d bits", keySize)
29+
}
30+
case *ecdsa.PublicKey:
31+
if pubKey.Curve == elliptic.P256() {
32+
return kubeadmapi.EncryptionAlgorithmECDSAP256, nil
33+
}
34+
return "", fmt.Errorf("unsupported ECDSA curve: %s", pubKey.Curve.Params().Name)
35+
default:
36+
return "", fmt.Errorf("unsupported public key type: %T", pubKey)
37+
}
38+
}

0 commit comments

Comments
 (0)