ingpoint
/
main.go
66 строк · 1.4 Кб
1package main
2
3import (
4"context"
5"flag"
6"fmt"
7"log"
8"path/filepath"
9"sort"
10
11metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12"k8s.io/client-go/kubernetes"
13"k8s.io/client-go/tools/clientcmd"
14"k8s.io/client-go/util/homedir"
15)
16
17func main() {
18var kubeconfig *string
19if home := homedir.HomeDir(); home != "" {
20kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
21} else {
22kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
23}
24flag.Parse()
25
26// use the current context in kubeconfig
27config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
28if err != nil {
29panic(err.Error())
30}
31
32// create the clientset
33clientset, err := kubernetes.NewForConfig(config)
34if err != nil {
35panic(err.Error())
36}
37
38// get ingresses hosts
39ingresses, err := clientset.NetworkingV1().Ingresses("").List(context.Background(), metav1.ListOptions{})
40if err != nil {
41log.Fatal(err)
42}
43
44uniqueHosts := make(map[string]bool)
45
46for _, ingress := range ingresses.Items {
47for _, rule := range ingress.Spec.Rules {
48uniqueHosts[rule.Host] = true
49}
50}
51
52hosts := make([]string, 0, len(uniqueHosts))
53
54for host := range uniqueHosts {
55hosts = append(hosts, host)
56}
57sort.Strings(hosts)
58
59for _, host := range hosts {
60fmt.Println(host)
61}
62
63if len(uniqueHosts) == 0 {
64fmt.Println("No ingress resources found")
65}
66}
67