kubeadm: use output/v1alpha2 in kubeadm commands

Use the new API for "config images list" and
"token list".
This commit is contained in:
Lubomir I. Ivanov 2021-09-27 23:35:43 +03:00
parent 2d4fcedbcf
commit b92966aeac
4 changed files with 17 additions and 19 deletions

View File

@ -38,7 +38,7 @@ import (
kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme"
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme" outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
outputapiv1alpha1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha1" outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
"k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs"
@ -413,7 +413,7 @@ type imageTextPrinter struct {
// PrintObj is an implementation of ResourcePrinter.PrintObj for plain text output // PrintObj is an implementation of ResourcePrinter.PrintObj for plain text output
func (itp *imageTextPrinter) PrintObj(obj runtime.Object, writer io.Writer) error { func (itp *imageTextPrinter) PrintObj(obj runtime.Object, writer io.Writer) error {
var err error var err error
if imgs, ok := obj.(*outputapiv1alpha1.Images); ok { if imgs, ok := obj.(*outputapiv1alpha2.Images); ok {
_, err = fmt.Fprintln(writer, strings.Join(imgs.Images, "\n")) _, err = fmt.Fprintln(writer, strings.Join(imgs.Images, "\n"))
} else { } else {
err = errors.New("unexpected object type") err = errors.New("unexpected object type")
@ -436,7 +436,7 @@ func (ipf *imageTextPrintFlags) ToPrinter(outputFormat string) (output.Printer,
func (i *ImagesList) Run(out io.Writer, printer output.Printer) error { func (i *ImagesList) Run(out io.Writer, printer output.Printer) error {
imgs := images.GetControlPlaneImages(&i.cfg.ClusterConfiguration) imgs := images.GetControlPlaneImages(&i.cfg.ClusterConfiguration)
if err := printer.PrintObj(&outputapiv1alpha1.Images{Images: imgs}, out); err != nil { if err := printer.PrintObj(&outputapiv1alpha2.Images{Images: imgs}, out); err != nil {
return errors.Wrap(err, "unable to print images") return errors.Wrap(err, "unable to print images")
} }

View File

@ -253,7 +253,7 @@ k8s.gcr.io/coredns/coredns:{{.CoreDNSVersion}}
outputFormat: "json", outputFormat: "json",
expectedOutput: `{ expectedOutput: `{
"kind": "Images", "kind": "Images",
"apiVersion": "output.kubeadm.k8s.io/v1alpha1", "apiVersion": "output.kubeadm.k8s.io/v1alpha2",
"images": [ "images": [
"k8s.gcr.io/kube-apiserver:{{.KubeVersion}}", "k8s.gcr.io/kube-apiserver:{{.KubeVersion}}",
"k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}", "k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}",
@ -272,7 +272,7 @@ k8s.gcr.io/coredns/coredns:{{.CoreDNSVersion}}
KubernetesVersion: dummyKubernetesVersionStr, KubernetesVersion: dummyKubernetesVersionStr,
}, },
outputFormat: "yaml", outputFormat: "yaml",
expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha1 expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha2
images: images:
- k8s.gcr.io/kube-apiserver:{{.KubeVersion}} - k8s.gcr.io/kube-apiserver:{{.KubeVersion}}
- k8s.gcr.io/kube-controller-manager:{{.KubeVersion}} - k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}

View File

@ -41,11 +41,10 @@ import (
bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1"
kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme"
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme" outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
outputapiv1alpha1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha1" outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
@ -300,7 +299,7 @@ func RunGenerateToken(out io.Writer) error {
return nil return nil
} }
func formatBootstrapToken(obj *outputapiv1alpha1.BootstrapToken) string { func formatBootstrapToken(obj *outputapiv1alpha2.BootstrapToken) string {
ttl := "<forever>" ttl := "<forever>"
expires := "<never>" expires := "<never>"
if obj.Expires != nil { if obj.Expires != nil {
@ -347,7 +346,7 @@ func (ttp *tokenTextPrinter) PrintObj(obj runtime.Object, writer io.Writer) erro
} }
// Print token // Print token
fmt.Fprint(tabw, formatBootstrapToken(obj.(*outputapiv1alpha1.BootstrapToken))) fmt.Fprint(tabw, formatBootstrapToken(obj.(*outputapiv1alpha2.BootstrapToken)))
return tabw.Flush() return tabw.Flush()
} }
@ -391,9 +390,9 @@ func RunListTokens(out io.Writer, errW io.Writer, client clientset.Interface, pr
} }
// Convert token into versioned output structure // Convert token into versioned output structure
outputToken := outputapiv1alpha1.BootstrapToken{ outputToken := outputapiv1alpha2.BootstrapToken{
BootstrapToken: kubeadmapiv1beta2.BootstrapToken{ BootstrapToken: bootstraptokenv1.BootstrapToken{
Token: &kubeadmapiv1beta2.BootstrapTokenString{ID: token.Token.ID, Secret: token.Token.Secret}, Token: &bootstraptokenv1.BootstrapTokenString{ID: token.Token.ID, Secret: token.Token.Secret},
Description: token.Description, Description: token.Description,
TTL: token.TTL, TTL: token.TTL,
Expires: token.Expires, Expires: token.Expires,

View File

@ -33,10 +33,9 @@ import (
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1"
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme" outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
outputapiv1alpha1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha1" outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2"
"k8s.io/kubernetes/cmd/kubeadm/app/util/output" "k8s.io/kubernetes/cmd/kubeadm/app/util/output"
) )
@ -360,7 +359,7 @@ func TestTokenOutput(t *testing.T) {
outputFormat: "json", outputFormat: "json",
expected: `{ expected: `{
"kind": "BootstrapToken", "kind": "BootstrapToken",
"apiVersion": "output.kubeadm.k8s.io/v1alpha1", "apiVersion": "output.kubeadm.k8s.io/v1alpha2",
"token": "abcdef.1234567890123456", "token": "abcdef.1234567890123456",
"description": "valid bootstrap tooken", "description": "valid bootstrap tooken",
"usages": [ "usages": [
@ -381,7 +380,7 @@ func TestTokenOutput(t *testing.T) {
usages: []string{"signing", "authentication"}, usages: []string{"signing", "authentication"},
extraGroups: []string{"system:bootstrappers:kubeadm:default-node-token"}, extraGroups: []string{"system:bootstrappers:kubeadm:default-node-token"},
outputFormat: "yaml", outputFormat: "yaml",
expected: `apiVersion: output.kubeadm.k8s.io/v1alpha1 expected: `apiVersion: output.kubeadm.k8s.io/v1alpha2
description: valid bootstrap tooken description: valid bootstrap tooken
groups: groups:
- system:bootstrappers:kubeadm:default-node-token - system:bootstrappers:kubeadm:default-node-token
@ -428,9 +427,9 @@ abcdef.1234567890123456 <forever> <never> signing,authentication valid b
} }
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
token := outputapiv1alpha1.BootstrapToken{ token := outputapiv1alpha2.BootstrapToken{
BootstrapToken: kubeadmapiv1beta2.BootstrapToken{ BootstrapToken: bootstraptokenv1.BootstrapToken{
Token: &kubeadmapiv1beta2.BootstrapTokenString{ID: tc.id, Secret: tc.secret}, Token: &bootstraptokenv1.BootstrapTokenString{ID: tc.id, Secret: tc.secret},
Description: tc.description, Description: tc.description,
Usages: tc.usages, Usages: tc.usages,
Groups: tc.extraGroups, Groups: tc.extraGroups,