From df3f1ff39093e168a6b3b9b8ee18bc60e641bb91 Mon Sep 17 00:00:00 2001 From: hangaoshuai Date: Thu, 31 May 2018 16:35:26 +0800 Subject: [PATCH] kubeadm uses its own scheme instead of kubectl scheme --- cmd/kubeadm/app/util/audit/BUILD | 7 +++++-- cmd/kubeadm/app/util/audit/utils.go | 16 +++++++++++----- cmd/kubeadm/app/util/audit/utils_test.go | 8 ++++++-- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/cmd/kubeadm/app/util/audit/BUILD b/cmd/kubeadm/app/util/audit/BUILD index 7f5453fab3..cd3098c00f 100644 --- a/cmd/kubeadm/app/util/audit/BUILD +++ b/cmd/kubeadm/app/util/audit/BUILD @@ -8,8 +8,10 @@ go_library( deps = [ "//cmd/kubeadm/app/util:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apiserver/pkg/apis/audit/install:go_default_library", "//vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", ], ) @@ -18,8 +20,9 @@ go_test( srcs = ["utils_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/kubectl/scheme:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apiserver/pkg/apis/audit/install:go_default_library", "//vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1:go_default_library", ], ) diff --git a/cmd/kubeadm/app/util/audit/utils.go b/cmd/kubeadm/app/util/audit/utils.go index 688d8f0f61..8155d096b1 100644 --- a/cmd/kubeadm/app/util/audit/utils.go +++ b/cmd/kubeadm/app/util/audit/utils.go @@ -23,8 +23,10 @@ import ( "path/filepath" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apiserver/pkg/apis/audit/install" auditv1beta1 "k8s.io/apiserver/pkg/apis/audit/v1beta1" - "k8s.io/client-go/kubernetes/scheme" "k8s.io/kubernetes/cmd/kubeadm/app/util" ) @@ -32,7 +34,7 @@ import ( func CreateDefaultAuditLogPolicy(policyFile string) error { policy := auditv1beta1.Policy{ TypeMeta: metav1.TypeMeta{ - APIVersion: "audit.k8s.io/v1beta1", + APIVersion: auditv1beta1.SchemeGroupVersion.String(), Kind: "Policy", }, Rules: []auditv1beta1.PolicyRule{ @@ -50,11 +52,15 @@ func writePolicyToDisk(policyFile string, policy *auditv1beta1.Policy) error { return fmt.Errorf("failed to create directory %q: %v", filepath.Dir(policyFile), err) } - // Registers auditv1beta1 with the runtime Scheme - auditv1beta1.AddToScheme(scheme.Scheme) + scheme := runtime.NewScheme() + // Registers the API group with the scheme and adds types to a scheme + install.Install(scheme) + + codecs := serializer.NewCodecFactory(scheme) // writes the policy to disk - serialized, err := util.MarshalToYaml(policy, auditv1beta1.SchemeGroupVersion) + serialized, err := util.MarshalToYamlForCodecs(policy, auditv1beta1.SchemeGroupVersion, codecs) + if err != nil { return fmt.Errorf("failed to marshal audit policy to YAML: %v", err) } diff --git a/cmd/kubeadm/app/util/audit/utils_test.go b/cmd/kubeadm/app/util/audit/utils_test.go index 113488a752..01fde9eb8d 100644 --- a/cmd/kubeadm/app/util/audit/utils_test.go +++ b/cmd/kubeadm/app/util/audit/utils_test.go @@ -23,8 +23,9 @@ import ( "testing" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apiserver/pkg/apis/audit/install" auditv1beta1 "k8s.io/apiserver/pkg/apis/audit/v1beta1" - "k8s.io/kubernetes/pkg/kubectl/scheme" ) func cleanup(t *testing.T, path string) { @@ -50,8 +51,11 @@ func TestCreateDefaultAuditLogPolicy(t *testing.T) { if err != nil { t.Fatalf("failed to read %v: %v", auditPolicyFile, err) } + scheme := runtime.NewScheme() + install.Install(scheme) + codecs := serializer.NewCodecFactory(scheme) policy := auditv1beta1.Policy{} - err = runtime.DecodeInto(scheme.Codecs.UniversalDecoder(), policyBytes, &policy) + err = runtime.DecodeInto(codecs.UniversalDecoder(), policyBytes, &policy) if err != nil { t.Fatalf("failed to decode written policy: %v", err) }