Documentation
¶
Index ¶
Constants ¶
View Source
const NoHeaderKey = "no-header"
Variables ¶
View Source
var KubernetesCmd = &cobra.Command{ Use: "kubernetes", Aliases: []string{"kube", "k8s", "k"}, Short: "Manage Kubernetes clusters, node pools and more services related to Kubernetes", Long: "Kubernetes commands to manage your Kubernetes clusters and node pools within the Thalassa Cloud Platform", }
View Source
var KubernetesKubeConfigCmd = &cobra.Command{ Use: "kubeconfig", Aliases: []string{}, Short: "Kubernetes Kubeconfig management", Args: cobra.MaximumNArgs(1), Run: func(cmd *cobra.Command, args []string) { ctx := cmd.Context() client, err := thalassa.NewClient( client.WithBaseURL(contextstate.Server()), client.WithOrganisation(contextstate.Organisation()), client.WithAuthPersonalToken(contextstate.Token()), ) if err != nil { fmt.Println(err) return } if len(args) != 1 { fmt.Println("must provide a cluster. Missing value <cluster>") return } clusterIdentity := args[0] cluster, err := client.Kubernetes().GetKubernetesCluster(ctx, clusterIdentity) if err != nil { clusters, err := client.Kubernetes().ListKubernetesClusters(ctx) if err != nil { fmt.Println(err) return } for _, potentialCluster := range clusters { if potentialCluster.Name == clusterIdentity || potentialCluster.Slug == clusterIdentity { cluster = &potentialCluster break } } } if cluster == nil { fmt.Println("cluster not found") return } fmt.Printf("Getting kubeconfig for cluster %s\n", cluster.Name) session, err := client.Kubernetes().GetKubernetesClusterKubeconfig(ctx, cluster.Identity) if err != nil { fmt.Println(err) return } fmt.Println(session.Kubeconfig) }, }
View Source
var KubernetesUpgradeCmd = &cobra.Command{ Use: "upgrade <cluster>", Short: "Upgrade a Kubernetes cluster", Aliases: []string{"u"}, Args: cobra.MaximumNArgs(1), Run: func(cmd *cobra.Command, args []string) { client, err := thalassa.NewClient( client.WithBaseURL(contextstate.Server()), client.WithOrganisation(contextstate.Organisation()), client.WithAuthPersonalToken(contextstate.Token()), ) if err != nil { fmt.Println("Error creating client:", err) return } versions, err := client.Kubernetes().ListKubernetesVersions(cmd.Context()) if err != nil { fmt.Println("Error getting versions:", err) return } clusters := []kubernetesclient.KubernetesCluster{} if upgradeAllClusters { fmt.Println("Upgrading all clusters") clusters, err = client.Kubernetes().ListKubernetesClusters(cmd.Context()) if err != nil { fmt.Println("Error getting clusters:", err) return } } else { clusterIdentity, err := getSelectedCluster(args) if err != nil { fmt.Println("Error getting cluster:", err) return } cluster, err := client.Kubernetes().GetKubernetesCluster(cmd.Context(), clusterIdentity) if err != nil { fmt.Println("Error getting cluster:", err) return } clusters = append(clusters, *cluster) } for _, cluster := range clusters { if cluster.Status == "error" || cluster.Status == "deleting" { fmt.Println("Cluster is in error or deleting state...") continue } currentVersion, err := semver.Parse(cluster.ClusterVersion.KubernetesVersion) if err != nil { if !upgradeAllClusters { fmt.Println("Error parsing current cluster version:", err) } continue } upgradeToVersion, err := selectUpgradeVersion(currentVersion, versions, upgradeClusterToVersion) if err != nil { if upgradeClusterToVersion == "" && strings.Contains(err.Error(), "already at the latest available version") { fmt.Println("Cluster", cluster.Name, "is already at the latest available version:", cluster.ClusterVersion.KubernetesVersion) continue } if !upgradeAllClusters { fmt.Println("Error selecting upgrade version:", err) } continue } if cluster.ClusterVersion.KubernetesVersion == upgradeToVersion.KubernetesVersion { fmt.Println("Cluster", cluster.Name, "is already at the desired version") continue } if upgradeClusterDryRun { fmt.Println("Dry run mode: would upgrade cluster", cluster.Name, "to version", upgradeToVersion.KubernetesVersion) continue } fmt.Println("Upgrading cluster", cluster.Name, "to version", upgradeToVersion.KubernetesVersion) updateRequest := kubernetesclient.UpdateKubernetesCluster{ KubernetesVersionIdentity: ptr.To(upgradeToVersion.Identity), } _, err = client.Kubernetes().UpdateKubernetesCluster(cmd.Context(), cluster.Identity, updateRequest) if err != nil { fmt.Println("Error upgrading cluster:", err) continue } if !upgradeAllClusters { fmt.Println("Upgrade of cluster", cluster.Name, "initiated successfully. The cluster will be upgraded in the background.") } } if upgradeAllClusters { fmt.Println("Upgrade of all clusters initiated successfully. The clusters will be upgraded in the background.") } }, }
Functions ¶
This section is empty.
Types ¶
type VersionGroup ¶
type VersionGroup struct {
MajorMinor string
Versions []kubernetesclient.KubernetesVersion
}
Group candidates by major.minor to identify patch versions
Click to show internal directories.
Click to hide internal directories.