diff --git a/docs/tasks/upgrading/upgrading-0.10-0.11.rst b/docs/tasks/upgrading/upgrading-0.10-0.11.rst index 8e2f3e6fe..0e04470a0 100644 --- a/docs/tasks/upgrading/upgrading-0.10-0.11.rst +++ b/docs/tasks/upgrading/upgrading-0.10-0.11.rst @@ -53,8 +53,8 @@ A full table of annotations, including the old and new equivalents: | certmanager.k8s.io/acme-http01-ingress-class | acme.cert-manager.io/http01-ingress-class | | certmanager.k8s.io/issuer | cert-manager.io/issuer | | certmanager.k8s.io/cluster-issuer | cert-manager.io/cluster-issuer | -| certmanager.k8s.io/acme-challenge-type | DEPRECIATED | -| certmanager.k8s.io/acme-dns01-provider | DEPRECIATED | +| certmanager.k8s.io/acme-challenge-type | DEPRECATED | +| certmanager.k8s.io/acme-dns01-provider | DEPRECATED | | certmanager.k8s.io/alt-names | cert-manager.io/alt-names | | certmanager.k8s.io/ip-sans | cert-manager.io/ip-sans | | certmanager.k8s.io/common-name | cert-manager.io/common-name | @@ -84,13 +84,13 @@ your cluster for you. $ TODO: Add link # Mark the binary as executable and run the binary against your cluster - $ chmod +x api-migration && ./api-migration --kubeconfig /path/to/my/kubeconfig + $ chmod +x api-migration && ./api-migration --kubeconfig /path/to/my/kubeconfig.yaml # Follow the CLI ouput and check for the difference that has been made in files - $ vim -d ingress.yaml ingress-migrated.yaml + $ diff ingress.yaml ingress-migrated.yaml # Finally, once the new ingress resources have been reviewed, apply the manifests - $ kubectl apply -f ingress-migrated --kubeconfig /path/to/my/kubeconfig + $ kubectl apply -f ingress-migrated --kubeconfig /path/to/my/kubeconfig.yaml You should make sure to update _all_ Ingress resources to ensure that your certificates continue to be kept up to date. diff --git a/hack/api-migration/BUILD.bazel b/hack/api-migration/BUILD.bazel index 69a626183..693207fc2 100644 --- a/hack/api-migration/BUILD.bazel +++ b/hack/api-migration/BUILD.bazel @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:private"], deps = [ "@com_github_spf13_cobra//:go_default_library", - "@io_k8s_api//networking/v1beta1:go_default_library", + "@io_k8s_api//extensions/v1beta1:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_apimachinery//pkg/runtime/serializer/json:go_default_library", "@io_k8s_client_go//kubernetes:go_default_library", diff --git a/hack/api-migration/main.go b/hack/api-migration/main.go index e55c0d4ed..6be79294b 100644 --- a/hack/api-migration/main.go +++ b/hack/api-migration/main.go @@ -22,15 +22,17 @@ import ( "fmt" "io/ioutil" "os" + "os/exec" "strings" "github.com/spf13/cobra" - networkingv1beta "k8s.io/api/networking/v1beta1" + networkingv1beta "k8s.io/api/extensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/serializer/json" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/tools/clientcmd" + // This package is required to be imported to register all client // plugins. _ "k8s.io/client-go/plugin/pkg/client/auth" @@ -58,7 +60,7 @@ var ( "certmanager.k8s.io/certificate-name": "cert-manager.io/certificate-name", } - depreciations = []string{ + deprecations = []string{ "certmanager.k8s.io/acme-challenge-type", "certmanager.k8s.io/acme-dns01-provider", } @@ -81,7 +83,7 @@ var cmd = &cobra.Command{ return err } - ingList, err := client.NetworkingV1beta1().Ingresses("").List(metav1.ListOptions{}) + ingList, err := client.ExtensionsV1beta1().Ingresses("").List(metav1.ListOptions{}) if err != nil { return err } @@ -105,13 +107,13 @@ var cmd = &cobra.Command{ ingStr = strings.ReplaceAll(ingStr, oldA, newA) } - for _, d := range depreciations { + for _, d := range deprecations { count := strings.Count(ingStr, d) if count == 0 { continue } - fmt.Printf("found %d instances of %q\tthis field is DEPRECIATED and will be deleted\n", count, d) + fmt.Printf("found %d instances of %q\tthis field is DEPRECATED and will be deleted\n", count, d) lines := strings.Split(ingStr, "\n") @@ -134,10 +136,29 @@ var cmd = &cobra.Command{ return err } - fmt.Printf("written new ingresses to file %q\n", newFile) - fmt.Printf("\nPlease check for any missing or wrong annotations in your newly generated ingress manifests.\n") - fmt.Printf("You are encouraged to check the diff of the two files to determine what has changed (diff %s %s).\n", - origFile, newFile) + fmt.Printf("wrote new ingresses to file %q\n", newFile) + + var buff bytes.Buffer + diffFile := fmt.Sprintf("%s.%s.diff", origFile, newFile) + eCmd := exec.Command("diff", origFile, newFile) + eCmd.Stdout = &buff + + if err := eCmd.Run(); err != nil { + if exitErr, ok := err.(*exec.ExitError); !ok || exitErr.ExitCode() != 1 { + return err + } + } + + if err := ioutil.WriteFile(diffFile, buff.Bytes(), 0644); err != nil { + return err + } + + fmt.Printf("wrote diff to file %q\n", diffFile) + + fmt.Printf("\nPlease check for any missing or incorrect annotations in your newly generated ingress manifests.\n") + fmt.Printf("You should now check the diff of the two files to determine what has changed - either by inspecting the diff file %q, or running the command yourself:\n\n", + diffFile) + fmt.Printf("$ diff %s %s\n", origFile, newFile) return nil }, @@ -150,17 +171,14 @@ func writeIngressToFile(ingList *networkingv1beta.IngressList, path string) (str var buff bytes.Buffer for _, ing := range ingList.Items { - _, err := buff.WriteString("apiVersion: networking.k8s.io/v1beta1\nkind: Ingress\n") - if err != nil { - return "", err - } + ing.Kind = "Ingress" + ing.APIVersion = "extensions/v1beta1" if err := s.Encode(&ing, &buff); err != nil { return "", err } - _, err = buff.WriteString("---\n") - if err != nil { + if _, err := buff.WriteString("---\n"); err != nil { return "", err } } @@ -173,7 +191,6 @@ func writeIngressToFile(ingList *networkingv1beta.IngressList, path string) (str } func main() { - cmd.PersistentFlags().StringVarP(&kubeconfig, "kubeconfig", "k", "", "Path location to Kubeconfig") cmd.PersistentFlags().StringVarP(&origFile, "original-file", "o", "ingress.yaml", "File path to store the current list of Ingress resources") cmd.PersistentFlags().StringVarP(&newFile, "new-file", "n", "ingress-migrated.yaml", "File path to store the migrated Ingress resources")