client-go - Go Client for Kubernetes

(Go client for Kubernetes.)

Created at: 2016-08-25 08:19:38
Language: Go
License: Apache-2.0

クライアントゴー

Kubernetesクラスターと通信するためのクライアントに移動します。

使用することをお勧めします Kubernetes リリースのタグ >=および Kubernetes リリースのタグ <。

v0.x.y
v1.17.0
kubernetes-1.x.y
v1.17.0

このライブラリをプロジェクトに追加する最も速い方法は、go1.16+で実行することです。 詳細なインストール手順とトラブルシューティングについては、INSTALL.mdを参照してください。

go get k8s.io/client-go@latest

ゴードックウィジェット

目次

料金に含まれるもの

  • パッケージには、Kubernetes API にアクセスするためのクライアントセットが含まれています。
    kubernetes
  • このパッケージは、Kubernetes API サーバーでサポートされている API を検出するために使用されます。
    discovery
  • パッケージには、任意の Kubernetes API オブジェクトに対して汎用操作を実行できる動的クライアントが含まれています。
    dynamic
  • パッケージには、外部ソースから資格情報を取得するためのオプションの認証プラグインが含まれています。
    plugin/pkg/client/auth
  • パッケージは、認証を設定し、接続を開始するために使用されます。
    transport
  • このパッケージは、コントローラを書くのに便利です。
    tools/cache

バージョン管理

  • 各 Kubernetes リリースについて、メジャー バージョン (最初の桁) 残るでしょう。

    v1.x.y
    0

  • バグ修正により、パッチバージョン(3桁目)が変更されます。である PR 古いKubernetesリリースブランチにチェリーピックすると、更新されます 対応するブランチに、対応する新しいタグを付けます パッチバージョンの変更。

    client-go

ブランチとタグ。

マイナーバージョンのインクリメントごとに新しいブランチとタグを作成します 数。パッチの増分ごとに新しいタグのみを作成します バージョン番号。メジャーの定義については、semverを参照してください。 マイナー、およびパッチ。

クライアントゴーのマスターブランチのHEADは、マスターのHEADを追跡します ブランチをメインの Kubernetes リポジトリに配置します。

互換性:あなたのコードは<->クライアントゴー

タグは、go API が互換性のない方法で変更される可能性があることを示します。 異なるバージョン。

v0.x.y

特定の要求に関するガイドラインについては、INSTALL.mdを参照してください。 クライアントゴーのバージョン。

互換性: クライアントゴー <> Kubernetes クラスター

Kubernetes はクライアントと下位互換性があるため、古いバージョンは多くの異なる Kubernetes クラスター バージョンで動作します。

client-go

バグ修正は古いバージョンにバックポートしますが、新機能はバックポートしません。

client-go

互換性マトリックス

Kubernetes 1.15 Kubernetes 1.16 Kubernetes 1.17 Kubernetes 1.18 Kubernetes 1.19 Kubernetes 1.20
kubernetes-1.15.0
+- +- +- +- +-
kubernetes-1.16.0
+- +- +- +- +-
kubernetes-1.17.0
/
v0.17.0
+- +- +- +- +-
kubernetes-1.18.0
/
v0.18.0
+- +- +- +- +-
kubernetes-1.19.0
/
v0.19.0
+- +- +- +- +-
kubernetes-1.20.0
/
v0.20.0
+- +- +- +- +-
HEAD
+- +- +- +- +- +-

鍵:

  • クライアントゴーとKubernetesの両方でまったく同じ機能/ APIオブジェクト バージョン。
  • +
    client-go には、 Kubernetes クラスターは、クライアントゴーに追加の新しい API があるため、または サーバーが古いAPIを削除したこと。しかし、彼らが持っているすべてのもの 一般的な(つまり、ほとんどのAPI)が機能します。アルファAPIが消える可能性があることに注意してください 1 回のリリースで大幅に変更されました。
  • -
    Kubernetes クラスターには、クライアントゴー ライブラリでは使用できない機能があります。 サーバーに追加の新しいAPIがあるため、またはclient-goには 古い API を削除しました。ただし、共通して共有するすべてのもの(つまり、ほとんどのAPI) 動作します。

変更の詳細については、変更ログを参照してください。 クライアントゴーバージョン間。

正規のソースコードの場所 メンテナンス状況
release-1.4
Kubernetes メイン リポジトリ、1.4 ブランチ = -
release-1.5
Kubernetes メイン リポジトリ、1.5 ブランチ = -
release-2.0
Kubernetes メイン リポジトリ、1.5 ブランチ = -
release-3.0
Kubernetes メイン リポジトリ、1.6 ブランチ = -
release-4.0
Kubernetes メイン リポジトリ、1.7 ブランチ = -
release-5.0
Kubernetes メイン リポジトリ、1.8 ブランチ = -
release-6.0
Kubernetes メイン リポジトリ、1.9 ブランチ = -
release-7.0
Kubernetes メイン リポジトリ、1.10 ブランチ = -
release-8.0
Kubernetes メイン リポジトリ、1.11 ブランチ =-
release-9.0
Kubernetes メイン リポジトリ、1.12 ブランチ =-
release-10.0
Kubernetes メイン リポジトリ、1.13 ブランチ =-
release-11.0
Kubernetes メイン リポジトリ、1.14 ブランチ =-
release-12.0
Kubernetes メイン リポジトリ、1.15 ブランチ =-
release-13.0
Kubernetes メイン リポジトリ、1.16 ブランチ =-
release-14.0
Kubernetes メイン リポジトリ、1.17 ブランチ
release-1.18
Kubernetes メイン リポジトリ、1.18 ブランチ
release-1.19
Kubernetes メイン リポジトリ、1.19 ブランチ
release-1.20
Kubernetes メイン リポジトリ、1.20 ブランチ
クライアントゴーヘッド Kubernetes メイン リポジトリ、マスター ブランチ

鍵:

  • メインの Kubernetes リポジトリの変更は、ボットによって client-go にアクティブに発行されます
  • =
    メンテナンスは手動で行われ、重大なセキュリティバグにのみパッチが適用されます。
  • -
    廃止;アップグレードしてください。

非推奨ポリシー

最初の安定したタグから少なくとも6か月間ブランチを維持します カットされています。(たとえば、リリース2.0ブランチの時計は、次のときに時を刻み始めました。 タグ付きv2.0.0、最初のアルファを作成したときではありません。このポリシーは、以下に適用されます。 2.0 以上のすべてのバージョン。

1.4と1.5のブランチにバージョンにちなんで名付けられたトップレベルフォルダが含まれているのはなぜですか?

client-goの最初のリリースでは、維持するのが最も簡単だと考えました マイナー バージョンごとに個別のディレクトリ。それはすぐに間違いであることが判明しました。 最上位フォルダを1.4および1.5ブランチに保持して、 既存のユーザーは壊れません。

Kubernetes タグ

このリポジトリはまだk8s.io/kubernetes/staging/src/client-go のミラーです。 コード開発は引き続きステージング領域で行われます。

Kubernetes以降、ステージング領域からコードを同期すると、 また、Kubernetes バージョン タグを client-go に同期し、プレフィックスを付けます。Kubernetes からは、Kubernetes リリースごとに一致する semvertag も作成されます。

v1.8.0
kubernetes-
v1.17.0
v0.x.y
v1.x.y

たとえば、チェックアウトした場合またはタグ client-go、あなたが得るコードはあなたがチェックアウトした場合とまったく同じですKubernetesのタグ、そしてディレクトリをに変更します。

kubernetes-1.17.0
v0.17.0
v1.17.0
staging/src/k8s.io/client-go

目的は、ユーザーが公開されたリポジトリ間で一致するコミットをすばやく見つけられるようにすることです。 サンプル-apiserver、apiextension-apiserverのように、 等。Kubernetesバージョンタグは下位互換性を主張していません クライアントゴーの保証。次の場合は、セマンティックバージョンを確認してください 下位互換性を気にします。

入手方法

最新バージョンを取得するには、go1.16+を使用し、コマンドを使用してフェッチしますコマンド。例えば:

go get

go get k8s.io/client-go@latest

特定のバージョンを取得するには、go1.11+を使用し、コマンドを使用して目的のバージョンをフェッチします。例えば:

go get

go get k8s.io/client-go@v0.20.4

詳細な手順とトラブルシューティングについては、INSTALL.mdを参照してください。

使い方

アプリケーションがクラスター内のPodで実行されている場合は、 クラスター内の、それ以外の場合はお願いします クラスタ外の例を参照してください。

依存関係の管理

client-goをインストールするための依存関係管理を正しく使用する方法については、INSTALL.md を参照してください。

コードの貢献

Kubernetes メインリポジトリ内のクライアント パッケージに対してプル要求を送信してください。ステージング領域の変更は、このリポジトリに毎日公開されます。