Skip to content

Commit

Permalink
feat: added the aws support
Browse files Browse the repository at this point in the history
Signed-off-by: Dipankar Das <[email protected]>
  • Loading branch information
dipankardas011 committed Apr 29, 2024
1 parent 7c14048 commit 9b18bf2
Show file tree
Hide file tree
Showing 8 changed files with 270 additions and 14 deletions.
72 changes: 72 additions & 0 deletions cli/cmd/addNodesHAAws.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package cmd

// authors Dipankar <[email protected]>

import (
"context"
"os"

"github.com/ksctl/ksctl/pkg/helpers"

"github.com/spf13/cobra"

"github.com/ksctl/ksctl/pkg/helpers/consts"
)

var addMoreWorkerNodesHAAws = &cobra.Command{
Use: "add-nodes",
Short: "Use to add more worker nodes in HA aws k3s cluster",
Long: `It is used to add nodes to worker nodes in cluster with the given name from user. For example:
ksctl create-cluster ha-azure add-nodes <arguments to civo cloud provider>
`,
Run: func(cmd *cobra.Command, args []string) {
verbosity, _ := cmd.Flags().GetInt("verbose")
SetRequiredFeatureFlags(cmd)

cli.Client.Metadata.LogVerbosity = verbosity
cli.Client.Metadata.LogWritter = os.Stdout
cli.Client.Metadata.Provider = consts.CloudAws

SetDefaults(consts.CloudAws, consts.ClusterTypeHa)

cli.Client.Metadata.NoWP = noWP
cli.Client.Metadata.WorkerPlaneNodeType = nodeSizeWP
cli.Client.Metadata.ClusterName = clusterName
cli.Client.Metadata.Region = region
cli.Client.Metadata.IsHA = true
cli.Client.Metadata.K8sDistro = consts.KsctlKubernetes(distro)
cli.Client.Metadata.K8sVersion = k8sVer

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}

if err := createApproval(cmd.Flags().Lookup("approve").Changed); err != nil {
log.Error(err.Error())
os.Exit(1)
}

err := controller.AddWorkerPlaneNode(&cli.Client)
if err != nil {
log.Error("Failed to scale up", "Reason", err)
os.Exit(1)
}
log.Success("Scale up successful")
},
}

func init() {
createClusterHAAws.AddCommand(addMoreWorkerNodesHAAws)
clusterNameFlag(addMoreWorkerNodesHAAws)
noOfWPFlag(addMoreWorkerNodesHAAws)
nodeSizeWPFlag(addMoreWorkerNodesHAAws)
regionFlag(addMoreWorkerNodesHAAws)
k8sVerFlag(addMoreWorkerNodesHAAws)
distroFlag(addMoreWorkerNodesHAAws)
storageFlag(addMoreWorkerNodesHAAws)

addMoreWorkerNodesHAAws.MarkFlagRequired("name")
addMoreWorkerNodesHAAws.MarkFlagRequired("region")
}
30 changes: 23 additions & 7 deletions cli/cmd/createCluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,29 @@ ksctl create-cluster ["azure", "gcp", "aws", "local"]
`,
}

var createClusterAws = &cobra.Command{
var createClusterHAAws = &cobra.Command{
Use: "aws",
Short: "Use to create a EKS cluster in AWS",
Long: `It is used to create cluster with the given name from user. For example:
ksctl create-cluster aws <arguments to civo cloud provider>
`,
Run: func(cmd *cobra.Command, args []string) {},
Run: func(cmd *cobra.Command, args []string) {
verbosity, _ := cmd.Flags().GetInt("verbose")
SetRequiredFeatureFlags(cmd)

cli.Client.Metadata.LogVerbosity = verbosity
cli.Client.Metadata.LogWritter = os.Stdout
cli.Client.Metadata.Provider = consts.CloudAws

SetDefaults(consts.CloudAws, consts.ClusterTypeHa)

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}
createHA(cmd.Flags().Lookup("approve").Changed)
},
}

var createClusterAzure = &cobra.Command{
Expand All @@ -51,7 +66,7 @@ var createClusterAzure = &cobra.Command{
SetDefaults(consts.CloudAzure, consts.ClusterTypeMang)

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Inialize Storage Driver", "Reason", err)
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}

Expand All @@ -77,7 +92,7 @@ ksctl create-cluster civo <arguments to civo cloud provider>
SetDefaults(consts.CloudCivo, consts.ClusterTypeMang)

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Inialize Storage Driver", "Reason", err)
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}

Expand All @@ -103,7 +118,7 @@ ksctl create-cluster local <arguments to civo cloud provider>
SetDefaults(consts.CloudLocal, consts.ClusterTypeMang)

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Inialize Storage Driver", "Reason", err)
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}

Expand Down Expand Up @@ -154,7 +169,7 @@ var createClusterHAAzure = &cobra.Command{
SetDefaults(consts.CloudAzure, consts.ClusterTypeHa)

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Inialize Storage Driver", "Reason", err)
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}
createHA(cmd.Flags().Lookup("approve").Changed)
Expand All @@ -164,17 +179,18 @@ var createClusterHAAzure = &cobra.Command{
func init() {
rootCmd.AddCommand(createClusterCmd)

createClusterCmd.AddCommand(createClusterAws)
createClusterCmd.AddCommand(createClusterAzure)
createClusterCmd.AddCommand(createClusterCivo)
createClusterCmd.AddCommand(createClusterLocal)
createClusterCmd.AddCommand(createClusterHACivo)
createClusterCmd.AddCommand(createClusterHAAzure)
createClusterCmd.AddCommand(createClusterHAAws)

createClusterAzure.MarkFlagRequired("name")
createClusterCivo.MarkFlagRequired("name")
createClusterCivo.MarkFlagRequired("region")
createClusterLocal.MarkFlagRequired("name")
createClusterHAAzure.MarkFlagRequired("name")
createClusterHACivo.MarkFlagRequired("name")
createClusterHAAws.MarkFlagRequired("name")
}
28 changes: 28 additions & 0 deletions cli/cmd/deleteCluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,32 @@ ksctl delete-cluster civo
},
}

var deleteClusterHAAws = &cobra.Command{
Use: "ha-aws",
Short: "Use to delete a HA k3s cluster in Azure",
Long: `It is used to delete cluster with the given name from user. For example:
ksctl delete-cluster ha-azure <arguments to civo cloud provider>
`,
Run: func(cmd *cobra.Command, args []string) {
verbosity, _ := cmd.Flags().GetInt("verbose")
SetRequiredFeatureFlags(cmd)

cli.Client.Metadata.LogVerbosity = verbosity
cli.Client.Metadata.LogWritter = os.Stdout
cli.Client.Metadata.Provider = consts.CloudAws

SetDefaults(consts.CloudAws, consts.ClusterTypeHa)

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Inialize Storage Driver", "Reason", err)
os.Exit(1)
}

deleteHA(cmd.Flags().Lookup("approve").Changed)
},
}

var deleteClusterHAAzure = &cobra.Command{
Use: "ha-azure",
Short: "Use to delete a HA k3s cluster in Azure",
Expand Down Expand Up @@ -161,6 +187,7 @@ func init() {
deleteClusterCmd.AddCommand(deleteClusterHAAzure)
deleteClusterCmd.AddCommand(deleteClusterAzure)
deleteClusterCmd.AddCommand(deleteClusterLocal)
deleteClusterCmd.AddCommand(deleteClusterHAAws)

deleteClusterAzure.MarkFlagRequired("name")
deleteClusterAzure.MarkFlagRequired("region")
Expand All @@ -170,4 +197,5 @@ func init() {
deleteClusterHAAzure.MarkFlagRequired("region")
deleteClusterHACivo.MarkFlagRequired("name")
deleteClusterLocal.MarkFlagRequired("name")
deleteClusterHAAws.MarkFlagRequired("name")
}
68 changes: 68 additions & 0 deletions cli/cmd/deleteNodesHAAws.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package cmd

// authors Dipankar <[email protected]>

import (
"context"
"os"

"github.com/ksctl/ksctl/pkg/helpers"

"github.com/ksctl/ksctl/pkg/helpers/consts"
"github.com/spf13/cobra"
)

var deleteNodesHAAws = &cobra.Command{
Use: "delete-nodes",
Short: "Use to delete a HA aws k3s cluster",
Long: `It is used to delete cluster with the given name from user. For example:
ksctl delete-cluster ha-azure delete-nodes <arguments to civo cloud provider>
`,
Run: func(cmd *cobra.Command, args []string) {
verbosity, _ := cmd.Flags().GetInt("verbose")
SetRequiredFeatureFlags(cmd)

cli.Client.Metadata.LogVerbosity = verbosity
cli.Client.Metadata.LogWritter = os.Stdout
cli.Client.Metadata.Provider = consts.CloudAws
cli.Client.Metadata.IsHA = true

SetDefaults(consts.CloudAws, consts.ClusterTypeHa)

cli.Client.Metadata.NoWP = noWP
cli.Client.Metadata.ClusterName = clusterName
cli.Client.Metadata.Region = region
cli.Client.Metadata.K8sDistro = consts.KsctlKubernetes(distro)

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}

if err := deleteApproval(cmd.Flags().Lookup("approve").Changed); err != nil {
log.Error(err.Error())
os.Exit(1)
}

err := controller.DelWorkerPlaneNode(&cli.Client)
if err != nil {
log.Error("Failed to scale down", "Reason", err)
os.Exit(1)
}
log.Success("Scale down successful")
},
}

func init() {
deleteClusterHAAws.AddCommand(deleteNodesHAAws)

clusterNameFlag(deleteNodesHAAws)
noOfWPFlag(deleteNodesHAAws)
regionFlag(deleteNodesHAAws)
distroFlag(deleteNodesHAAws)
storageFlag(deleteNodesHAAws)

deleteNodesHAAws.MarkFlagRequired("name")
deleteNodesHAAws.MarkFlagRequired("region")
}
14 changes: 12 additions & 2 deletions cli/cmd/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,27 @@ func verboseFlags() {
msgVerbose := "for verbose output"
msgApproval := "approval to avoid showMsg"

//createClusterAws.Flags().BoolP("verbose", "v", true, "for verbose output")
createClusterAzure.Flags().IntP("verbose", "v", 0, msgVerbose)
createClusterCivo.Flags().IntP("verbose", "v", 0, msgVerbose)
createClusterLocal.Flags().IntP("verbose", "v", 0, msgVerbose)
createClusterHACivo.Flags().IntP("verbose", "v", 0, msgVerbose)
createClusterHAAzure.Flags().IntP("verbose", "v", 0, msgVerbose)
createClusterHAAws.Flags().IntP("verbose", "v", 0, msgVerbose)

deleteClusterAzure.Flags().IntP("verbose", "v", 0, msgVerbose)
deleteClusterCivo.Flags().IntP("verbose", "v", 0, msgVerbose)
deleteClusterHAAzure.Flags().IntP("verbose", "v", 0, msgVerbose)
deleteClusterHACivo.Flags().IntP("verbose", "v", 0, msgVerbose)
deleteClusterHAAws.Flags().IntP("verbose", "v", 0, msgVerbose)
deleteClusterLocal.Flags().IntP("verbose", "v", 0, msgVerbose)

addMoreWorkerNodesHAAzure.Flags().IntP("verbose", "v", 0, msgVerbose)
addMoreWorkerNodesHACivo.Flags().IntP("verbose", "v", 0, msgVerbose)
addMoreWorkerNodesHAAws.Flags().IntP("verbose", "v", 0, msgVerbose)

deleteNodesHAAzure.Flags().IntP("verbose", "v", 0, msgVerbose)
deleteNodesHACivo.Flags().IntP("verbose", "v", 0, msgVerbose)
deleteNodesHAAws.Flags().IntP("verbose", "v", 0, msgVerbose)

getClusterCmd.Flags().IntP("verbose", "v", 0, msgVerbose)
switchCluster.Flags().IntP("verbose", "v", 0, msgVerbose)
Expand All @@ -34,15 +37,22 @@ func verboseFlags() {
createClusterLocal.Flags().BoolP("approve", "", true, msgApproval)
createClusterHACivo.Flags().BoolP("approve", "", true, msgApproval)
createClusterHAAzure.Flags().BoolP("approve", "", true, msgApproval)
createClusterHAAws.Flags().BoolP("approve", "", true, msgApproval)

deleteClusterLocal.Flags().BoolP("approve", "", true, msgApproval)
deleteClusterAzure.Flags().BoolP("approve", "", true, msgApproval)
deleteClusterCivo.Flags().BoolP("approve", "", true, msgApproval)
deleteClusterHAAzure.Flags().BoolP("approve", "", true, msgApproval)
deleteClusterHACivo.Flags().BoolP("approve", "", true, msgApproval)
deleteClusterLocal.Flags().BoolP("approve", "", true, msgApproval)
deleteClusterHAAws.Flags().BoolP("approve", "", true, msgApproval)

addMoreWorkerNodesHAAzure.Flags().BoolP("approve", "", true, msgApproval)
addMoreWorkerNodesHACivo.Flags().BoolP("approve", "", true, msgApproval)
addMoreWorkerNodesHAAws.Flags().BoolP("approve", "", true, msgApproval)

deleteNodesHAAzure.Flags().BoolP("approve", "", true, msgApproval)
deleteNodesHACivo.Flags().BoolP("approve", "", true, msgApproval)
deleteNodesHAAws.Flags().BoolP("approve", "", true, msgApproval)
}

func storageFlag(f *cobra.Command) {
Expand Down
2 changes: 1 addition & 1 deletion cli/cmd/getCluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ ksctl get-clusters `,
}

if err := safeInitializeStorageLoggerFactory(context.WithValue(context.Background(), "USERID", helpers.GetUserName())); err != nil {
log.Error("Failed Inialize Storage Driver", "Reason", err)
log.Error("Failed Initialize Storage Driver", "Reason", err)
os.Exit(1)
}

Expand Down
6 changes: 5 additions & 1 deletion cli/cmd/switchCluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var switchCluster = &cobra.Command{
Short: "Use to switch between clusters",
Long: `It is used to switch cluster with the given ClusterName from user. For example:
ksctl switch-context -p <civo,local,civo-ha,azure-ha,azure> -n <clustername> -r <region> <arguments to civo cloud provider>
ksctl switch-context -p <civo,local,civo-ha,azure-ha,aws-ha,azure> -n <clustername> -r <region> <arguments to civo cloud provider>
`,
Run: func(cmd *cobra.Command, args []string) {
verbosity, _ := cmd.Flags().GetInt("verbose")
Expand Down Expand Up @@ -52,6 +52,10 @@ ksctl switch-context -p <civo,local,civo-ha,azure-ha,azure> -n <clustername> -r
cli.Client.Metadata.Provider = consts.CloudAzure
cli.Client.Metadata.IsHA = true

case string(consts.ClusterTypeHa) + "-" + string(consts.CloudAws):
cli.Client.Metadata.Provider = consts.CloudAws
cli.Client.Metadata.IsHA = true

case string(consts.CloudAzure):
cli.Client.Metadata.Provider = consts.CloudAzure
}
Expand Down
Loading

0 comments on commit 9b18bf2

Please sign in to comment.