私は、迅速なデモの日かかったクライアント・ゴーの外に出ていました

そこ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)
}

  

おすすめ

転載: www.cnblogs.com/aguncn/p/11598715.html