From be0cd5a31d6f6c9e8285fb4beef74e7fc26e8629 Mon Sep 17 00:00:00 2001 From: Ondrej Sika Date: Tue, 29 Aug 2023 07:06:52 +0200 Subject: [PATCH] feat(install_ingress_aks): Create `slu s k install-ingress-aks` --- cmd/cmd.go | 1 + .../install_ingress_aks.go | 47 +++++++++++++++++++ utils/k8s_scripts/k8s_scripts_ingress.go | 22 +++++++++ 3 files changed, 70 insertions(+) create mode 100644 cmd/scripts/kubernetes/install_ingress_aks/install_ingress_aks.go diff --git a/cmd/cmd.go b/cmd/cmd.go index 49446858..e6b8d71c 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -188,6 +188,7 @@ import ( _ "github.com/sikalabs/slu/cmd/scripts/kubernetes/install_cluster_issuer_cloudflare" _ "github.com/sikalabs/slu/cmd/scripts/kubernetes/install_hello_world" _ "github.com/sikalabs/slu/cmd/scripts/kubernetes/install_ingress" + _ "github.com/sikalabs/slu/cmd/scripts/kubernetes/install_ingress_aks" _ "github.com/sikalabs/slu/cmd/scripts/kubernetes/install_maildev" _ "github.com/sikalabs/slu/cmd/scripts/kubernetes/install_metrics_server" _ "github.com/sikalabs/slu/cmd/scripts/kubernetes/install_prometheus_operator_crd" diff --git a/cmd/scripts/kubernetes/install_ingress_aks/install_ingress_aks.go b/cmd/scripts/kubernetes/install_ingress_aks/install_ingress_aks.go new file mode 100644 index 00000000..3e29bf9c --- /dev/null +++ b/cmd/scripts/kubernetes/install_ingress_aks/install_ingress_aks.go @@ -0,0 +1,47 @@ +package install_ingress + +import ( + parent_cmd "github.com/sikalabs/slu/cmd/scripts/kubernetes" + "github.com/sikalabs/slu/utils/k8s_scripts" + "github.com/spf13/cobra" +) + +var FlagDry bool +var FlagLoadBalancerIP string +var FlagResourceGroupName string + +var Cmd = &cobra.Command{ + Use: "install-ingress-aks", + Short: "Install Ingress Nginx AKS (Azure)", + Aliases: []string{"iiaks"}, + Args: cobra.NoArgs, + Run: func(c *cobra.Command, args []string) { + k8s_scripts.InstallIngressAKS(FlagLoadBalancerIP, FlagResourceGroupName, FlagDry) + }, +} + +func init() { + parent_cmd.Cmd.AddCommand(Cmd) + Cmd.Flags().BoolVar( + &FlagDry, + "dry", + false, + "Dry run", + ) + Cmd.Flags().StringVarP( + &FlagLoadBalancerIP, + "loadbalancer-ip", + "i", + "", + "LoadBalancer IP", + ) + Cmd.MarkFlagRequired("loadbalancer-ip") + Cmd.Flags().StringVarP( + &FlagResourceGroupName, + "resource-group-name", + "r", + "", + "Resource Group Name", + ) + Cmd.MarkFlagRequired("resource-group-name") +} diff --git a/utils/k8s_scripts/k8s_scripts_ingress.go b/utils/k8s_scripts/k8s_scripts_ingress.go index 13c8b4d0..d64faa06 100644 --- a/utils/k8s_scripts/k8s_scripts_ingress.go +++ b/utils/k8s_scripts/k8s_scripts_ingress.go @@ -18,3 +18,25 @@ func InstallIngress(useProxyProtocol bool, dry bool) { --set controller.config.use-proxy-protocol=`+useProxyProtocolStr+` \ --wait`, dry) } + +func InstallIngressAKS( + loadBalancerIP string, + resourceGroupName string, + dry bool, +) { + sh(`helm upgrade --install \ + ingress-nginx ingress-nginx \ + --repo https://kubernetes.github.io/ingress-nginx \ + --create-namespace \ + --namespace ingress-nginx \ + --set controller.service.type=LoadBalancer \ + --set controller.ingressClassResource.default=true \ + --set controller.kind=DaemonSet \ + --set controller.hostPort.enabled=true \ + --set controller.metrics.enabled=true \ + --set controller.config.use-proxy-protocol=false \ + --set controller.service.loadBalancerIP=`+loadBalancerIP+` \ + --set controller.service.annotations.service\.beta\.kubernetes\.io/azure-load-balancer-resource-group=`+resourceGroupName+` \ + --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \ + --wait`, dry) +}