目次
2. Kubernetes クラスターでサービス アカウントを使用する
4. genericclioptions.NewConfigFlags() を使用する
Kubernetes API client-client-go を使用するプロセスでは、通常、Kubernetes API サーバーと対話するための*rest.Config
構成。この記事では、一般的に使用される 4 つの*rest.Config
入手。
1. kubeconfig ファイルを使用する
kubeconfig
このファイルは、Kubernetes クラスターのアクセス資格情報、コンテキスト、クラスター情報などを指定する YAML ファイルです。次のようにして*rest.Config
オブジェクトを。
import (
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
func getRestConfigFromKubeConfig() (*rest.Config, error) {
kubeConfigPath := "/path/to/kubeconfig"
config, err := clientcmd.BuildConfigFromFlags("", kubeConfigPath)
if err != nil {
return nil, err
}
return config, nil
}
func main() {
config, err := getRestConfigFromKubeConfig()
if err != nil {
panic(err.Error())
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
// 使用 clientset 进行操作
}
2. Kubernetes クラスターでサービス アカウントを使用する
Kubernetes では、各ネームスペースにデフォルトのサービス アカウントがあります。このサービス アカウントを通じて*rest.Config
オブジェクト。
import (
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
func getRestConfigFromServiceAccount() (*rest.Config, error) {
config, err := rest.InClusterConfig()
if err != nil {
return nil, err
}
return config, nil
}
func main() {
config, err := getRestConfigFromServiceAccount()
if err != nil {
panic(err.Error())
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
// 使用 clientset 进行操作
}
3. APIサーバーのアドレスと認証情報を直接指定
API サーバーのアドレスと認証情報を直接指定して*rest.Config
オブジェクト。
import (
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
func getRestConfigFromDirect() (*rest.Config, error) {
config := &rest.Config{
Host: "https://<api-server-address>",
TLSClientConfig: rest.TLSClientConfig{
// 省略证书认证相关参数
},
// 省略 token 认证相关参数
}
return config, nil
}
func main() {
config, err := getRestConfigFromDirect()
if err != nil {
panic(err.Error())
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
// 使用 clientset 进行操作
}
4. genericclioptions.NewConfigFlags() を使用する
`genericclioptions.NewConfigFlags()`
このメソッドは、環境変数、コマンド ライン パラメーター、デフォルト構成ファイルなどの複数のソースから Kubernetes クラスターの構成情報を取得し、対応する*rest.Config
オブジェクト。
import (
"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
func getRestConfigFromConfigFlags() (*rest.Config, error) {
configFlags := genericclioptions.NewConfigFlags(true)
config, err := configFlags.ToRESTConfig()
if err != nil {
return nil, err
}
return config, nil
}
func main() {
config, err := getRestConfigFromConfigFlags()
if err != nil {
panic(err.Error())
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
// 使用 clientset 进行操作
}
要約する
この記事では、Kubernetes API クライアントの*rest.Config
オブジェクトkubeconfig
として、ファイルを使用する方法、Kubernetes クラスターのサービス アカウントを使用する方法、API サーバーのアドレスと認証情報を直接指定する方法、およびgenericclioptions.NewConfigFlags()
メソッド。さまざまな方法がさまざまなシナリオに適しており、開発者は独自のニーズに応じてそれらの使用を選択できます。