1
0
mirror of https://github.com/rancher/rke.git synced 2025-07-12 06:38:34 +00:00

Merge pull request #2701 from rawmind0/encryption13

Update cluster.parseCustomConfig function to proper decode custom EncryptionConfiguration
This commit is contained in:
Raúl Sánchez 2021-11-11 22:40:56 +01:00 committed by GitHub
commit 1ae89e56c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -23,8 +23,6 @@ import (
v1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
apiserverconfig "k8s.io/apiserver/pkg/apis/config"
apiserverconfigv1 "k8s.io/apiserver/pkg/apis/config/v1"
"k8s.io/client-go/kubernetes"
@ -556,26 +554,12 @@ func parseCustomConfig(customConfig map[string]interface{}) (*apiserverconfigv1.
if err != nil {
return nil, fmt.Errorf("error marshalling: %v", err)
}
scheme := runtime.NewScheme()
err = apiserverconfig.AddToScheme(scheme)
if err != nil {
return nil, fmt.Errorf("error adding to scheme: %v", err)
}
err = apiserverconfigv1.AddToScheme(scheme)
if err != nil {
return nil, fmt.Errorf("error adding to scheme: %v", err)
}
codecs := serializer.NewCodecFactory(scheme)
decoder := codecs.UniversalDecoder()
decodedObj, objType, err := decoder.Decode(data, nil, nil)
// apiserverconfigv1.EncryptionConfiguration struct has json tags defined, using JSON Unmarshal instead of runtime serializer
decodedConfig := &apiserverconfigv1.EncryptionConfiguration{}
err = json.Unmarshal(data, decodedConfig)
if err != nil {
return nil, fmt.Errorf("error decoding data: %v", err)
}
decodedConfig, ok := decodedObj.(*apiserverconfigv1.EncryptionConfiguration)
if !ok {
return nil, fmt.Errorf("unexpected type: %T", objType)
return nil, fmt.Errorf("error unmarshalling: %v", err)
}
return decodedConfig, nil
}