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"
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
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"
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
"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
func (itp *imageTextPrinter) PrintObj(obj runtime.Object, writer io.Writer) 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"))
} else {
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 {
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")
}

View File

@ -253,7 +253,7 @@ k8s.gcr.io/coredns/coredns:{{.CoreDNSVersion}}
outputFormat: "json",
expectedOutput: `{
"kind": "Images",
"apiVersion": "output.kubeadm.k8s.io/v1alpha1",
"apiVersion": "output.kubeadm.k8s.io/v1alpha2",
"images": [
"k8s.gcr.io/kube-apiserver:{{.KubeVersion}}",
"k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}",
@ -272,7 +272,7 @@ k8s.gcr.io/coredns/coredns:{{.CoreDNSVersion}}
KubernetesVersion: dummyKubernetesVersionStr,
},
outputFormat: "yaml",
expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha1
expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha2
images:
- k8s.gcr.io/kube-apiserver:{{.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"
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"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
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"
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
@ -300,7 +299,7 @@ func RunGenerateToken(out io.Writer) error {
return nil
}
func formatBootstrapToken(obj *outputapiv1alpha1.BootstrapToken) string {
func formatBootstrapToken(obj *outputapiv1alpha2.BootstrapToken) string {
ttl := "<forever>"
expires := "<never>"
if obj.Expires != nil {
@ -347,7 +346,7 @@ func (ttp *tokenTextPrinter) PrintObj(obj runtime.Object, writer io.Writer) erro
}
// Print token
fmt.Fprint(tabw, formatBootstrapToken(obj.(*outputapiv1alpha1.BootstrapToken)))
fmt.Fprint(tabw, formatBootstrapToken(obj.(*outputapiv1alpha2.BootstrapToken)))
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
outputToken := outputapiv1alpha1.BootstrapToken{
BootstrapToken: kubeadmapiv1beta2.BootstrapToken{
Token: &kubeadmapiv1beta2.BootstrapTokenString{ID: token.Token.ID, Secret: token.Token.Secret},
outputToken := outputapiv1alpha2.BootstrapToken{
BootstrapToken: bootstraptokenv1.BootstrapToken{
Token: &bootstraptokenv1.BootstrapTokenString{ID: token.Token.ID, Secret: token.Token.Secret},
Description: token.Description,
TTL: token.TTL,
Expires: token.Expires,

View File

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