0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go言語でkubernetes APIをkubernetes clusterの外から呼び出す

Last updated at Posted at 2018-08-04

はじめに

kubernetes(以下k8s)のREST APIを呼び出す際にgo/python etc.のさまざまなクライアントライブラリが存在します。

この際、多くの実行例がk8sクラスタ内部またはk8sコンテナ上からAPIを呼び出す方法を解説しており、実際の作成物は最終的にはそうなるんでしょうが、開発途中の段階ではクラスタの外部からk8s APIを呼び出しながらコードを書きたいということでやり方を調べました。
接続先だけを設定した空っぽのconfigを作って、そこに必要な設定を上書きしていく感じですかね

コード

BuildConfigFromFlagsに渡している IP は https://10.0.1.44:32382 みたいな感じでk8sのAPIサーバのアドレスとポート
BearerToken に指定しているTOKENは secret で出てくる token(eyJhbGciOiJSUzI1NiIsImtpZCIとかなってる長い奴)

importはやや適当

main.go
import(
	"fmt"
	meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
)
func main() {
	config, err := clientcmd.BuildConfigFromFlags("https://API_SERVER_ADDRESS:API_PORT", "")
	if err != nil {
		log.Fatal(err)
	}
	config.Insecure = true
	config.BearerToken = "YOUR TOKEN HERE"
	client, err := kubernetes.NewForConfig(config)

	if err != nil {
		log.Fatal(err)
	}

	pods, err := client.CoreV1().Pods("").List(meta_v1.ListOptions{})
	if err != nil {
		log.Fatal(err)
	}

	for _, pod := range pods.Items {
		fmt.Println(pod.Name)
	}

}

参考資料

https://qiita.com/dtan4/items/f2f30207e0acec454c3d
http://ks888.hatenablog.com/entry/2017/12/25/001259

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?