diff --git a/pkg/controller/cluster/server/ingress.go b/pkg/controller/cluster/server/ingress.go index ce526963..39c5dd54 100644 --- a/pkg/controller/cluster/server/ingress.go +++ b/pkg/controller/cluster/server/ingress.go @@ -91,3 +91,6 @@ func configureIngressOptions(ingress *networkingv1.Ingress, ingressClassName str ingress.Annotations[nginxBackendProtocolAnnotation] = "HTTPS" } } +func IngressName(clusterName string) string { + return controller.SafeConcatNameWithPrefix(clusterName, "ingress") +} diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index b6f37471..357028df 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -70,8 +70,8 @@ func Addresses(ctx context.Context, client ctrlruntimeclient.Client) ([]string, } addresses := make([]string, len(nodeList.Items)) - for _, node := range nodeList.Items { - addresses = append(addresses, nodeAddress(&node)) + for i, node := range nodeList.Items { + addresses[i] = nodeAddress(&node) } return addresses, nil diff --git a/pkg/controller/kubeconfig/kubeconfig.go b/pkg/controller/kubeconfig/kubeconfig.go index 53225bce..d342aef0 100644 --- a/pkg/controller/kubeconfig/kubeconfig.go +++ b/pkg/controller/kubeconfig/kubeconfig.go @@ -15,6 +15,7 @@ import ( "github.com/rancher/k3k/pkg/controller/cluster/server" "github.com/rancher/k3k/pkg/controller/cluster/server/bootstrap" v1 "k8s.io/api/core/v1" + networkingv1 "k8s.io/api/networking/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" @@ -73,6 +74,18 @@ func (k *KubeConfig) Extract(ctx context.Context, client client.Client, cluster nodePort := k3kService.Spec.Ports[0].NodePort url = fmt.Sprintf("https://%s:%d", hostServerIP, nodePort) } + if cluster.Spec.Expose.Ingress.Enabled { + var k3kIngress networkingv1.Ingress + nn = types.NamespacedName{ + Name: server.IngressName(cluster.Name), + Namespace: cluster.Namespace, + } + + if err := client.Get(ctx, nn, &k3kIngress); err != nil { + return nil, err + } + url = fmt.Sprintf("https://%s", k3kIngress.Spec.Rules[0].Host) + } kubeconfigData, err := kubeconfig(url, []byte(bootstrap.ServerCA.Content), adminCert, adminKey) if err != nil { return nil, err