そこannotaion大使のもののすべてのサービスに直接アクセスします。
または、クラスタのイベントを見ます。
パッケージのメイン インポート( "FMT" "OS" // "時間" "文字列" //"k8s.io/apimachinery/pkg/api/errors」 "k8s.io/api/core/v1" //"k8s.io / apimachinery / PKG /ラベル" //"k8s.io/apimachinery/pkg/watch" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" 「K8S。 IO /クライアント・ゴー/休息」 // //コメントを解除すべての認証プラグインをロードする // _ 『』 k8s.io/client-go/plugin/pkg/client/auth // //あるいはコメントを外し、特定の認証プラグインをロードします / / _ "k8s.io/client-go/plugin/pkg/client/auth/azure" // _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" // _ "k8s.io/client-go/plugin/pkg/client/auth/oidc" // _ "k8s.io/client-go/plugin/pkg/client/auth/openstack" ) FUNCメイン(){ //作成におけるクラスタコンフィグ 設定、ERR = rest.InClusterConfig() もしERR =ゼロ{! パニック(err.Error()) } //はclientsetの作成 clientset、ERR = kubernetes.NewForConfig(設定) する場合を!= nilの{誤る パニック(err.Error()) } //名前空間の省略することによって、すべての名前空間のポッドを取得 //または特定の名前空間にポッドを取得するには、名前空間を指定 ERR、サービス:= clientset.CoreV1()をサービス(」 「)の.List(metav1.ListOptions {}) 誤る場合!=ゼロ{ パニック(err.Error()) } iについて:= 0; 私は、LEN(services.Itemsを)<; iは{++ 項目:= services.Items [I] .Annotations kについて、V:=範囲項目{ ならstrings.Contains(K、 "getambassador")&& strings.Contains(V、 "大使")&& strings.Contains(V、 "マッピング"){ fmt.Println(V) fmt.Println(" @@@@@@@@@@@@@@@@@@@@@@@ ") } } } //time.Sleep(10 * time.Second) handleNewServices(clientset) } FUNCのhandleNewServices(clientset * kubernetes.Clientset){ serviceStreamWatcher、ERR:= clientset.CoreV1()サービス( "")。ウォッチ(metav1.ListOptions {}) !=ゼロ{誤る場合 パニック(err.Error()) } fmt.Printf( "%Tの\ n"、serviceStreamWatcher) {ため {選択 = <-serviceStreamWatcher.ResultChan():ケースイベント サービス:= event.Object(* v1.Service)。 キー、値のために:=レンジservice.Annotations { strings.Contains(キー、 "getambassador")&& strings.Contains(値、 "大使")場合&& strings.Contains(値は、 "マッピング"){ toFileStr:= fmt.Sprintf( "%sの\ n%sの\ nは============= \ n"は、event.Type、値) //fmt.Println(toFileStr) _appendToFile(」/アプリ/ K8S-大使」、toFileStr)値) } } } } } } _appendToFile(ファイル、strの文字列){FUNC F、ERR:= os.OpenFile(ファイル、os.O_CREATE | os.O_APPEND | os.O_RDWR、0664) の場合、ERR = nilの{! fmt.Printf(「オープンできませんファイル%s!\ n」は、ファイル) リターン } 延期f.Close() f.WriteString(STR) }