diff --git a/.github/workflows/gen-repository-iso.yaml b/.github/workflows/gen-repository-iso.yaml index 844ba9a02..c0ed8de46 100644 --- a/.github/workflows/gen-repository-iso.yaml +++ b/.github/workflows/gen-repository-iso.yaml @@ -39,7 +39,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Build iso image to local - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: hack/gen-repository-iso file: hack/gen-repository-iso/${{ matrix.dockerfile }} @@ -54,7 +54,7 @@ jobs: sha256sum *.iso > ${{ matrix.name }}.iso.sha256sum.txt - name: Wait for release workflow to finish - uses: lewagon/wait-on-check-action@v1.3.3 + uses: lewagon/wait-on-check-action@v1.3.4 with: ref: ${{ github.ref }} check-name: 'create draft release' diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 64d65b0a5..96ffb4f22 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -22,7 +22,7 @@ jobs: with: go-version: 1.19 - name: golangci-lint - uses: golangci/golangci-lint-action@v4.0.0 + uses: golangci/golangci-lint-action@v6.0.1 with: version: v1.50.1 working-directory: ${{matrix.working-directory}} diff --git a/README.md b/README.md index 22df4da32..3e2baa1d3 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![CI](https://github.com/kubesphere/kubekey/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/kubesphere/kubekey/actions?query=event%3Apush+branch%3Amaster+workflow%3ACI+) -> English | [中文](README_zh-CN.md) +> English | [中文](README_zh-CN.md) | [日本語](README_ja-JP.md) ### 👋 Welcome to KubeKey! diff --git a/README_ja-JP.md b/README_ja-JP.md new file mode 100644 index 000000000..d332e5b5d --- /dev/null +++ b/README_ja-JP.md @@ -0,0 +1,413 @@ +# KubeKey + +[![CI](https://github.com/kubesphere/kubekey/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/kubesphere/kubekey/actions?query=event%3Apush+branch%3Amaster+workflow%3ACI+) + +> [English](README.md) | [中文](README_zh-CN.md) | 日本語 + +KubeKeyは、Kubernetesクラスターをデプロイするためのオープンソースの軽量ツールです。Kubernetes/K3s、Kubernetes/K3sとKubeSphere、および関連するクラウドネイティブアドオンをインストールするための柔軟で迅速かつ便利な方法を提供します。また、クラスターのスケールとアップグレードを効率的に行うツールでもあります。 + +さらに、KubeKeyはカスタマイズされたエアギャップパッケージもサポートしており、オフライン環境でクラスターを迅速にデプロイすることができます。 + +> KubeKeyは[CNCF kubernetes 一致性認証](https://www.cncf.io/certification/software-conformance/)に合格しています。 + +KubeKeyを使用する3つのシナリオがあります。 + +* Kubernetes/K3sのみをインストールする +* Kubernetes/K3sとKubeSphereを1つのコマンドでインストールする +* まずKubernetes/K3sをインストールし、その上に[ks-installer](https://github.com/kubesphere/ks-installer)を使用してKubeSphereをデプロイする + +> **重要:** 既存のKubernetesクラスターがある場合は、[ks-installer (既存のKubernetesクラスターにKubeSphereをインストールする)](https://github.com/kubesphere/ks-installer)を参照してください。 + +## サポートされている環境 + +### Linuxディストリビューション + +* **Ubuntu** *16.04, 18.04, 20.04, 22.04* +* **Debian** *Bullseye, Buster, Stretch* +* **CentOS/RHEL** *7* +* **AlmaLinux** *9.0* +* **SUSE Linux Enterprise Server** *15* + +> 推奨Linuxカーネルバージョン: `4.15以降` +> Linuxカーネルバージョンを確認するには、`uname -srm`コマンドを実行します。 + +### Kubernetesバージョン + +* **v1.19**:   *v1.19.15* +* **v1.20**:   *v1.20.10* +* **v1.21**:   *v1.21.14* +* **v1.22**:   *v1.22.15* +* **v1.23**:   *v1.23.10* (デフォルト) +* **v1.24**:   *v1.24.7* +* **v1.25**:   *v1.25.3* + +> サポートされているバージョンの詳細については、以下を参照してください: \ +> [Kubernetesバージョン](./docs/kubernetes-versions.md) \ +> [K3sバージョン](./docs/k3s-versions.md) + +### コンテナマネージャー + +* **Docker** / **containerd** / **CRI-O** / **iSula** + +> `Kata Containers`は、コンテナマネージャーがcontainerdまたはCRI-Oの場合に、ランタイムクラスを自動的にインストールおよび構成するように設定できます。 + +### ネットワークプラグイン + +* **Calico** / **Flannel** / **Cilium** / **Kube-OVN** / **Multus-CNI** + +> カスタムネットワークプラグインの要件がある場合、Kubekeyはネットワークプラグインを`none`に設定することもサポートしています。 + +## 要件と推奨事項 + +* 最小リソース要件(KubeSphereの最小インストールの場合): + * 2 vCPU + * 4 GB RAM + * 20 GBストレージ + +> /var/lib/dockerは主にコンテナデータを保存するために使用され、使用および操作中に徐々にサイズが大きくなります。プロダクション環境の場合、/var/lib/dockerが別のドライブにマウントされることをお勧めします。 + +* OS要件: + * `SSH`がすべてのノードにアクセスできること。 + * すべてのノードの時間が同期されていること。 + * すべてのノードで`sudo`/`curl`/`openssl`が使用できること。 + * `docker`は自分でインストールするか、KubeKeyを使用してインストールできます。 + * `Red Hat`の`Linuxリリース`には`SELinux`が含まれています。SELinuxを無効にするか、[SELinuxのモードを切り替える](./docs/turn-off-SELinux.md)ことをお勧めします。 + +> * OSがクリーンであることをお勧めします(他のソフトウェアがインストールされていない)。そうしないと、競合が発生する可能性があります。 +> * dockerhub.ioからのイメージのダウンロードに問題がある場合は、コンテナイメージミラー(アクセラレータ)を準備することをお勧めします。[Dockerデーモンのレジストリミラーを構成する](https://docs.docker.com/registry/recipes/mirror/#configure-the-docker-daemon)。 +> * KubeKeyはデフォルトで[OpenEBS](https://openebs.io/)をインストールして、開発およびテスト環境のLocalPVをプロビジョニングします。これは新しいユーザーにとって非常に便利です。プロダクション環境では、NFS / Ceph / GlusterFSまたは商用製品を永続ストレージとして使用し、すべてのノードに[関連クライアント](docs/storage-client.md)をインストールしてください。 +> * コピー時に`Permission denied`が発生した場合は、まず[SELinuxを無効にする](./docs/turn-off-SELinux.md)ことをお勧めします。 + +* 依存関係の要件: + +KubeKeyはKubernetesとKubeSphereを一緒にインストールできます。バージョン1.18以降、kubernetesのインストール前にいくつかの依存関係をインストールする必要があります。以下のリストを参照して、事前にノードに関連する依存関係をチェックしてインストールしてください。 + +| | Kubernetesバージョン ≥ 1.18 | +| ------------- | -------------------------- | +| `socat` | 必須 | +| `conntrack` | 必須 | +| `ebtables` | オプションですが推奨 | +| `ipset` | オプションですが推奨 | +| `ipvsadm` | オプションですが推奨 | + +* ネットワーキングとDNSの要件: + * `/etc/resolv.conf`のDNSアドレスが利用可能であることを確認してください。そうしないと、クラスター内のDNSに関する問題が発生する可能性があります。 + * ネットワーク構成でファイアウォールまたはセキュリティグループを使用している場合、インフラストラクチャコンポーネントが特定のポートを介して相互に通信できることを確認する必要があります。ファイアウォールをオフにするか、リンク構成に従うことをお勧めします: [ネットワークアクセス](docs/network-access.md)。 + +## 使用方法 + +### KubeKey実行ファイルの取得 + +* 最速の方法はスクリプトを使用することです: + + ``` + curl -sfL https://get-kk.kubesphere.io | sh - + ``` +* KubeKeyのバイナリダウンロードは[リリースページ](https://github.com/kubesphere/kubekey/releases)にもあります。 + バイナリを解凍して、すぐに使用できます! +* ソースコードからバイナリをビルドする + + ```shell + git clone https://github.com/kubesphere/kubekey.git + cd kubekey + make kk + ``` + +### クラスターの作成 + +#### クイックスタート + +クイックスタートは`all-in-one`インストール用で、KubernetesとKubeSphereに慣れるための良いスタートです。 + +> 注意: Kubernetesは一時的に大文字のNodeNameをサポートしていないため、ホスト名に大文字が含まれていると、後続のインストールエラーが発生します + +##### コマンド + +> `https://storage.googleapis.com`にアクセスする際に問題がある場合は、最初に`export KKZONE=cn`を実行してください。 + +```shell +./kk create cluster [--with-kubernetes version] [--with-kubesphere version] +``` + +##### 例 + +* デフォルトバージョン(Kubernetes v1.23.10)で純粋なKubernetesクラスターを作成する。 + + ```shell + ./kk create cluster + ``` +* 指定されたバージョンのKubernetesクラスターを作成する。 + + ```shell + ./kk create cluster --with-kubernetes v1.24.1 --container-manager containerd + ``` +* KubeSphereがインストールされたKubernetesクラスターを作成する。 + + ```shell + ./kk create cluster --with-kubesphere v3.2.1 + ``` + +#### 高度なインストール + +高度なインストールを使用すると、カスタムパラメーターを制御したり、マルチノードクラスターを作成したりすることができます。具体的には、構成ファイルを指定してクラスターを作成します。 + +> `https://storage.googleapis.com`にアクセスする際に問題がある場合は、最初に`export KKZONE=cn`を実行してください。 + +1. まず、サンプル構成ファイルを作成します + + ```shell + ./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --filename) path] + ``` + + **例:** + + * デフォルトの構成でサンプル構成ファイルを作成します。ファイル名やフォルダーを指定することもできます。 + + ```shell + ./kk create config [-f ~/myfolder/abc.yaml] + ``` + + * KubeSphereを含む + + ```shell + ./kk create config --with-kubesphere v3.2.1 + ``` +2. 環境に応じてconfig-sample.yamlファイルを変更します + +> 注意: Kubernetesは一時的に大文字のNodeNameをサポートしていないため、workerNodeの名前に大文字が含まれていると、後続のインストールエラーが発生します +> +> KubeSphereをインストールする場合、クラスターには永続ストレージが必要です。デフォルトではローカルボリュームが使用されます。他の永続ストレージを使用する場合は、[addons](./docs/addons.md)を参照してください。 + +3. 構成ファイルを使用してクラスターを作成します + + ```shell + ./kk create cluster -f config-sample.yaml + ``` + +### マルチクラスター管理の有効化 + +デフォルトでは、KubeKeyはKubernetesフェデレーションなしで**ソロ**クラスターのみをインストールします。KubeSphereを使用して複数のクラスターを集中管理するためのマルチクラスターコントロールプレーンを設定する場合は、[config-example.yaml](docs/config-example.md)で`ClusterRole`を設定する必要があります。マルチクラスターのユーザーガイドについては、[マルチクラスター機能の有効化方法](https://github.com/kubesphere/community/tree/master/sig-multicluster/how-to-setup-multicluster-on-kubesphere)を参照してください。 + +### プラグイン可能なコンポーネントの有効化 + +KubeSphereはv2.1.0以降、いくつかのコア機能コンポーネントをデカップリングしました。これらのコンポーネントはプラグイン可能であり、インストール前またはインストール後に有効にすることができます。デフォルトでは、これらのコンポーネントを有効にしない場合、KubeSphereは最小インストールで開始されます。 + +ニーズに応じて、これらのコンポーネントを有効にすることができます。KubeSphereが提供するフルスタックの機能と機能を発見するために、これらのプラグイン可能なコンポーネントをインストールすることを強くお勧めします。これらを有効にする前に、マシンに十分なCPUとメモリがあることを確認してください。詳細については、[プラグイン可能なコンポーネントの有効化](https://github.com/kubesphere/ks-installer#enable-pluggable-components)を参照してください。 + +### ノードの追加 + +新しいノードの情報をクラスター構成ファイルに追加し、変更を適用します。 + +```shell +./kk add nodes -f config-sample.yaml +``` + +### ノードの削除 + +次のコマンドでノードを削除できます。削除するノード名を指定します。 + +```shell +./kk delete node -f config-sample.yaml +``` + +### クラスターの削除 + +次のコマンドでクラスターを削除できます: + +* クイックスタート(all-in-one)を開始した場合: + +```shell +./kk delete cluster +``` + +* 高度なインストール(構成ファイルを使用して作成されたクラスター)を開始した場合: + +```shell +./kk delete cluster [-f config-sample.yaml] +``` + +### クラスターのアップグレード + +#### Allinone + +指定されたバージョンでクラスターをアップグレードします。 + +```shell +./kk upgrade [--with-kubernetes version] [--with-kubesphere version] +``` + +* Kubernetesのみのアップグレードをサポートします。 +* KubeSphereのみのアップグレードをサポートします。 +* KubernetesとKubeSphereの両方のアップグレードをサポートします。 + +#### マルチノード + +指定された構成ファイルでクラスターをアップグレードします。 + +```shell +./kk upgrade [--with-kubernetes version] [--with-kubesphere version] [(-f | --filename) path] +``` + +* `--with-kubernetes`または`--with-kubesphere`が指定されている場合、構成ファイルも更新されます。 +* クラスター作成に使用された構成ファイルを指定するには、`-f`を使用します。 + +> 注意: マルチノードクラスターのアップグレードには、指定された構成ファイルが必要です。クラスターがkubekeyなしでインストールされた場合、またはインストールに使用された構成ファイルが見つからない場合は、構成ファイルを自分で作成するか、次のコマンドを使用して作成する必要があります。 + +クラスター情報を取得し、kubekeyの構成ファイルを生成します(オプション)。 + +```shell +./kk create config [--from-cluster] [(-f | --filename) path] [--kubeconfig path] +``` + +* `--from-cluster`は、既存のクラスターからクラスター情報を取得することを意味します。 +* `-f`は、構成ファイルが生成されるパスを指します。 +* `--kubeconfig`は、kubeconfigのパスを指します。 +* 構成ファイルを生成した後、ノードのssh情報などのいくつかのパラメーターを入力する必要があります。 + +## ドキュメント + +* [機能リスト](docs/features.md) +* [コマンド](docs/commands/kk.md) +* [構成例](docs/config-example.md) +* [エアギャップインストール](docs/manifest_and_artifact.md) +* [高可用性クラスター](docs/ha-mode.md) +* [アドオン](docs/addons.md) +* [ネットワークアクセス](docs/network-access.md) +* [ストレージクライアント](docs/storage-client.md) +* [kubectl自動補完](docs/kubectl-autocompletion.md) +* [kubekey自動補完](docs/kubekey-autocompletion.md) +* [ロードマップ](docs/roadmap.md) +* [証明書の確認と更新](docs/check-renew-certificate.md) +* [開発者ガイド](docs/developer-guide.md) + +## 貢献者 ✨ + +これらの素晴らしい人々に感謝します([絵文字キー](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
pixiake
pixiake

💻 📖
Forest
Forest

💻 📖
rayzhou2017
rayzhou2017

💻 📖
shaowenchen
shaowenchen

💻 📖
Zhao Xiaojie
Zhao Xiaojie

💻 📖
Zack Zhang
Zack Zhang

💻
Akhil Mohan
Akhil Mohan

💻
pengfei
pengfei

📖
min zhang
min zhang

💻 📖
zgldh
zgldh

💻
xrjk
xrjk

💻
yonghongshi
yonghongshi

💻
Honglei
Honglei

📖
liucy1983
liucy1983

💻
Lien
Lien

📖
Tony Wang
Tony Wang

📖
Hongliang Wang
Hongliang Wang

💻
dawn
dawn

💻
Duan Jiong
Duan Jiong

💻
calvinyv
calvinyv

📖
Benjamin Huo
Benjamin Huo

📖
Sherlock113
Sherlock113

📖
fu_changjie
fu_changjie

📖
yuswift
yuswift

💻
ruiyaoOps
ruiyaoOps

📖
LXM
LXM

📖
sbhnet
sbhnet

💻
misteruly
misteruly

💻
John Niang
John Niang

📖
Michael Li
Michael Li

💻
独孤昊天
独孤昊天

💻
Liu Shaohui
Liu Shaohui

💻
Leo Li
Leo Li

💻
Roland
Roland

💻
Vinson Zou
Vinson Zou

📖
tag_gee_y
tag_gee_y

💻
codebee
codebee

💻
Daniel Owen van Dommelen
Daniel Owen van Dommelen

🤔
Naidile P N
Naidile P N

💻
Haiker Sun
Haiker Sun

💻
Jing Yu
Jing Yu

💻
Chauncey
Chauncey

💻
Tan Guofu
Tan Guofu

💻
lvillis
lvillis

📖
Vincent He
Vincent He

💻
laminar
laminar

💻
tongjin
tongjin

💻
Reimu
Reimu

💻
Ikko Ashimine
Ikko Ashimine

📖
Ben Ye
Ben Ye

💻
yinheli
yinheli

💻
hellocn9
hellocn9

💻
Brandan Schmitz
Brandan Schmitz

💻
yjqg6666
yjqg6666

📖 💻
失眠是真滴难受
失眠是真滴难受

💻
mango
mango

👀
wenwutang
wenwutang

💻
Shiny Hou
Shiny Hou

💻
zhouqiu0103
zhouqiu0103

💻
77yu77
77yu77

💻
hzhhong
hzhhong

💻
zhang-wei
zhang-wei

💻
Deshi Xiao
Deshi Xiao

💻 📖
besscroft
besscroft

📖
张志强
张志强

💻
lwabish
lwabish

💻 📖
qyz87
qyz87

💻
ZhengJin Fang
ZhengJin Fang

💻
Eric_Lian
Eric_Lian

💻
nicognaw
nicognaw

💻
吕德庆
吕德庆

💻
littleplus
littleplus

💻
Konstantin
Konstantin

🤔
kiragoo
kiragoo

💻
jojotong
jojotong

💻
littleBlackHouse
littleBlackHouse

💻 📖
guangwu
guangwu

💻 📖
wongearl
wongearl

💻
wenwenxiong
wenwenxiong

💻
柏喵Sakura
柏喵Sakura

💻
cui fliter
cui fliter

📖
刘旭
刘旭

💻
yuyu
yuyu

💻
chilianyi
chilianyi

💻
Ronald Fletcher
Ronald Fletcher

💻
baikjy0215
baikjy0215

💻
knowmost
knowmost

📖
+ + + + + + +このプロジェクトは [all-contributors](https://github.com/all-contributors/all-contributors) の仕様に従っています。どのような種類の貢献でも歓迎します! diff --git a/README_zh-CN.md b/README_zh-CN.md index 64f3cced8..bd4cdc255 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -2,7 +2,7 @@ [![CI](https://github.com/kubesphere/kubekey/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/kubesphere/kubekey/actions?query=event%3Apush+branch%3Amaster+workflow%3ACI+) -> [English](README.md) | 中文 +> [English](README.md) | 中文 | [日本語](README_ja-JP.md) KubeKey是一个开源的轻量级工具,用于部署Kubernetes集群。它提供了一种灵活、快速、方便的方式来安装Kubernetes/K3s、Kubernetes/K3s和KubeSphere,以及相关的云原生附加组件。它也是扩展和升级集群的有效工具。 diff --git a/cmd/kk/apis/kubekey/v1alpha2/etcd_types.go b/cmd/kk/apis/kubekey/v1alpha2/etcd_types.go index 6dbd30504..fcfe71823 100644 --- a/cmd/kk/apis/kubekey/v1alpha2/etcd_types.go +++ b/cmd/kk/apis/kubekey/v1alpha2/etcd_types.go @@ -27,6 +27,9 @@ type EtcdCluster struct { Type string `yaml:"type" json:"type,omitempty"` // ExternalEtcd describes how to connect to an external etcd cluster when type is set to external External ExternalEtcd `yaml:"external" json:"external,omitempty"` + Port *int `yaml:"port" json:"port,omitempty"` + PeerPort *int `yaml:"peerPort" json:"peerPort,omitempty"` + ExtraArgs []string `yaml:"extraArgs" json:"extraArgs,omitempty"` BackupDir string `yaml:"backupDir" json:"backupDir,omitempty"` BackupPeriod int `yaml:"backupPeriod" json:"backupPeriod,omitempty"` KeepBackupNumber int `yaml:"keepBackupNumber" json:"keepBackupNumber,omitempty"` @@ -57,3 +60,19 @@ type ExternalEtcd struct { // KeyFile is an SSL key file used to secure etcd communication. KeyFile string `yaml:"keyFile" json:"keyFile,omitempty"` } + +// GetPort returns the port of etcd cluster +func (e *EtcdCluster) GetPort() int { + if e.Port == nil { + return 2379 + } + return *e.Port +} + +// GetPeerPort returns the peer port of etcd cluster +func (e *EtcdCluster) GetPeerPort() int { + if e.PeerPort == nil { + return 2380 + } + return *e.PeerPort +} diff --git a/cmd/kk/pkg/etcd/tasks.go b/cmd/kk/pkg/etcd/tasks.go index 0edb16d70..2ccd86eec 100644 --- a/cmd/kk/pkg/etcd/tasks.go +++ b/cmd/kk/pkg/etcd/tasks.go @@ -84,12 +84,12 @@ func (g *GetStatus) Execute(runtime connector.Runtime) error { if v, ok := g.PipelineCache.Get(common.ETCDCluster); ok { c := v.(*EtcdCluster) - c.peerAddresses = append(c.peerAddresses, fmt.Sprintf("%s=https://%s:2380", etcdName, host.GetInternalIPv4Address())) + c.peerAddresses = append(c.peerAddresses, fmt.Sprintf("%s=https://%s:%d", etcdName, host.GetInternalIPv4Address(), g.KubeConf.Cluster.Etcd.GetPeerPort())) c.clusterExist = true // type: *EtcdCluster g.PipelineCache.Set(common.ETCDCluster, c) } else { - cluster.peerAddresses = append(cluster.peerAddresses, fmt.Sprintf("%s=https://%s:2380", etcdName, host.GetInternalIPv4Address())) + cluster.peerAddresses = append(cluster.peerAddresses, fmt.Sprintf("%s=https://%s:%d", etcdName, host.GetInternalIPv4Address(), g.KubeConf.Cluster.Etcd.GetPeerPort())) cluster.clusterExist = true g.PipelineCache.Set(common.ETCDCluster, cluster) } @@ -169,7 +169,7 @@ type GenerateAccessAddress struct { func (g *GenerateAccessAddress) Execute(runtime connector.Runtime) error { var addrList []string for _, host := range runtime.GetHostsByRole(common.ETCD) { - addrList = append(addrList, fmt.Sprintf("https://%s:2379", host.GetInternalIPv4Address())) + addrList = append(addrList, fmt.Sprintf("https://%s:%d", host.GetInternalIPv4Address(), g.KubeConf.Cluster.Etcd.GetPort())) } accessAddresses := strings.Join(addrList, ",") @@ -232,7 +232,7 @@ func (g *GenerateConfig) Execute(runtime connector.Runtime) error { peerAddressesMap[v] = v } - newPeerAddress := fmt.Sprintf("%s=https://%s:2380", etcdName, host.GetInternalIPv4Address()) + newPeerAddress := fmt.Sprintf("%s=https://%s:%d", etcdName, host.GetInternalIPv4Address(), g.KubeConf.Cluster.Etcd.GetPeerPort()) if _, ok := peerAddressesMap[newPeerAddress]; !ok { cluster.peerAddresses = append(cluster.peerAddresses, newPeerAddress) @@ -309,6 +309,9 @@ func refreshConfig(KubeConf *common.KubeConf, runtime connector.Runtime, endpoin "Name": etcdName, "Ip": host.GetInternalIPv4Address(), "Hostname": host.GetName(), + "Port": KubeConf.Cluster.Etcd.GetPort(), + "PeerPort": KubeConf.Cluster.Etcd.GetPeerPort(), + "ExtraArgs": KubeConf.Cluster.Etcd.ExtraArgs, "State": state, "PeerAddresses": strings.Join(endpoints, ","), "UnsupportedArch": UnsupportedArch, @@ -353,7 +356,7 @@ func (j *JoinMember) Execute(runtime connector.Runtime) error { "export ETCDCTL_CA_FILE='/etc/ssl/etcd/ssl/ca.pem';"+ "%s/etcdctl --endpoints=%s member add %s %s", host.GetName(), host.GetName(), common.BinDir, cluster.accessAddresses, etcdName, - fmt.Sprintf("https://%s:2380", host.GetInternalIPv4Address())) + fmt.Sprintf("https://%s:%d", host.GetInternalIPv4Address(), j.KubeConf.Cluster.Etcd.GetPeerPort())) if _, err := runtime.GetRunner().SudoCmd(joinMemberCmd, true); err != nil { return errors.Wrap(errors.WithStack(err), "add etcd member failed") @@ -387,7 +390,7 @@ func (c *CheckMember) Execute(runtime connector.Runtime) error { if err != nil { return errors.Wrap(errors.WithStack(err), "list etcd member failed") } - if !strings.Contains(memberList, fmt.Sprintf("https://%s:2379", host.GetInternalIPv4Address())) { + if !strings.Contains(memberList, fmt.Sprintf("https://%s:%d", host.GetInternalIPv4Address(), c.KubeConf.Cluster.Etcd.GetPort())) { return errors.Wrap(errors.WithStack(err), "add etcd member failed") } } else { @@ -417,7 +420,7 @@ func (b *BackupETCD) Execute(runtime connector.Runtime) error { Dst: filepath.Join(b.KubeConf.Cluster.Etcd.BackupScriptDir, "etcd-backup.sh"), Data: util.Data{ "Hostname": runtime.RemoteHost().GetName(), - "Etcdendpoint": fmt.Sprintf("https://%s:2379", runtime.RemoteHost().GetInternalIPv4Address()), + "Etcdendpoint": fmt.Sprintf("https://%s:%d", runtime.RemoteHost().GetInternalIPv4Address(), b.KubeConf.Cluster.Etcd.GetPort()), "DataDir": b.KubeConf.Cluster.Etcd.DataDir, "Backupdir": b.KubeConf.Cluster.Etcd.BackupDir, "KeepbackupNumber": b.KubeConf.Cluster.Etcd.KeepBackupNumber + 1, diff --git a/cmd/kk/pkg/etcd/templates/etcd_env.go b/cmd/kk/pkg/etcd/templates/etcd_env.go index 316be0561..b97598eaa 100644 --- a/cmd/kk/pkg/etcd/templates/etcd_env.go +++ b/cmd/kk/pkg/etcd/templates/etcd_env.go @@ -30,13 +30,13 @@ ETCD_DATA_DIR={{ .DataDir }} {{- else }} ETCD_DATA_DIR=/var/lib/etcd {{- end }} -ETCD_ADVERTISE_CLIENT_URLS=https://{{ .Ip }}:2379 -ETCD_INITIAL_ADVERTISE_PEER_URLS=https://{{ .Ip }}:2380 +ETCD_ADVERTISE_CLIENT_URLS=https://{{ .Ip }}:{{ .Port }} +ETCD_INITIAL_ADVERTISE_PEER_URLS=https://{{ .Ip }}:{{ .PeerPort }} ETCD_INITIAL_CLUSTER_STATE={{ .State }} ETCD_METRICS=basic -ETCD_LISTEN_CLIENT_URLS=https://{{ .Ip }}:2379,https://127.0.0.1:2379 +ETCD_LISTEN_CLIENT_URLS=https://{{ .Ip }}:{{ .Port }},https://127.0.0.1:{{ .Port }} ETCD_INITIAL_CLUSTER_TOKEN=k8s_etcd -ETCD_LISTEN_PEER_URLS=https://{{ .Ip }}:2380 +ETCD_LISTEN_PEER_URLS=https://{{ .Ip }}:{{ .PeerPort }} ETCD_NAME={{ .Name }} ETCD_PROXY=off ETCD_ENABLE_V2=true @@ -82,6 +82,11 @@ ETCD_LOG_LEVEL={{ .LogLevel }} {{- if .UnsupportedArch }} ETCD_UNSUPPORTED_ARCH={{ .Arch }} {{ end }} +{{- if .ExtraArgs }} +{{- range $index, $value := .ExtraArgs }} +{{ $value }} +{{- end }} +{{- end }} # TLS settings ETCD_TRUSTED_CA_FILE=/etc/ssl/etcd/ssl/ca.pem @@ -95,7 +100,7 @@ ETCD_PEER_KEY_FILE=/etc/ssl/etcd/ssl/member-{{ .Hostname }}-key.pem ETCD_PEER_CLIENT_CERT_AUTH=true # CLI settings -ETCDCTL_ENDPOINTS=https://127.0.0.1:2379 +ETCDCTL_ENDPOINTS=https://127.0.0.1:{{ .Port }} ETCDCTL_CACERT=/etc/ssl/etcd/ssl/ca.pem ETCDCTL_KEY=/etc/ssl/etcd/ssl/admin-{{ .Hostname }}-key.pem ETCDCTL_CERT=/etc/ssl/etcd/ssl/admin-{{ .Hostname }}.pem diff --git a/cmd/kk/pkg/k3s/tasks.go b/cmd/kk/pkg/k3s/tasks.go index 25d4bdf6c..3f8ff3e67 100644 --- a/cmd/kk/pkg/k3s/tasks.go +++ b/cmd/kk/pkg/k3s/tasks.go @@ -261,7 +261,7 @@ func (g *GenerateK3sServiceEnv) Execute(runtime connector.Runtime) error { } default: for _, node := range runtime.GetHostsByRole(common.ETCD) { - endpoint := fmt.Sprintf("https://%s:%s", node.GetInternalIPv4Address(), kubekeyapiv1alpha2.DefaultEtcdPort) + endpoint := fmt.Sprintf("https://%s:%d", node.GetInternalIPv4Address(), g.KubeConf.Cluster.Etcd.GetPort()) endpointsList = append(endpointsList, endpoint) } externalEtcd.Endpoints = endpointsList diff --git a/cmd/kk/pkg/k8e/tasks.go b/cmd/kk/pkg/k8e/tasks.go index 3c255c365..43b8a0647 100644 --- a/cmd/kk/pkg/k8e/tasks.go +++ b/cmd/kk/pkg/k8e/tasks.go @@ -253,7 +253,7 @@ func (g *GenerateK8eServiceEnv) Execute(runtime connector.Runtime) error { } default: for _, node := range runtime.GetHostsByRole(common.ETCD) { - endpoint := fmt.Sprintf("https://%s:%s", node.GetInternalIPv4Address(), kubekeyapiv1alpha2.DefaultEtcdPort) + endpoint := fmt.Sprintf("https://%s:%d", node.GetInternalIPv4Address(), g.KubeConf.Cluster.Etcd.GetPort()) endpointsList = append(endpointsList, endpoint) } externalEtcd.Endpoints = endpointsList diff --git a/cmd/kk/pkg/kubernetes/tasks.go b/cmd/kk/pkg/kubernetes/tasks.go index ad625591e..016b65d28 100644 --- a/cmd/kk/pkg/kubernetes/tasks.go +++ b/cmd/kk/pkg/kubernetes/tasks.go @@ -224,7 +224,7 @@ func (g *GenerateKubeadmConfig) Execute(runtime connector.Runtime) error { switch g.KubeConf.Cluster.Etcd.Type { case kubekeyv1alpha2.KubeKey: for _, host := range runtime.GetHostsByRole(common.ETCD) { - endpoint := fmt.Sprintf("https://%s:%s", host.GetInternalIPv4Address(), kubekeyv1alpha2.DefaultEtcdPort) + endpoint := fmt.Sprintf("https://%s:%d", host.GetInternalIPv4Address(), g.KubeConf.Cluster.Etcd.GetPort()) endpointsList = append(endpointsList, endpoint) } externalEtcd.Endpoints = endpointsList diff --git a/docs/kubernetes-versions.md b/docs/kubernetes-versions.md index fe36a8ac9..a49941554 100644 --- a/docs/kubernetes-versions.md +++ b/docs/kubernetes-versions.md @@ -126,6 +126,7 @@ | v1.27.13 | :white_check_mark: | | v1.27.14 | :white_check_mark: | | v1.27.15 | :white_check_mark: | +| v1.27.16 | :white_check_mark: | | v1.28.0 | :white_check_mark: | | v1.28.1 | :white_check_mark: | | v1.28.2 | :white_check_mark: | @@ -138,6 +139,7 @@ | v1.28.9 | :white_check_mark: | | v1.28.10 | :white_check_mark: | | v1.28.11 | :white_check_mark: | +| v1.28.12 | :white_check_mark: | | v1.29.0 | :white_check_mark: | | v1.29.1 | :white_check_mark: | | v1.29.2 | :white_check_mark: | @@ -145,6 +147,8 @@ | v1.29.4 | :white_check_mark: | | v1.29.5 | :white_check_mark: | | v1.29.6 | :white_check_mark: | +| v1.29.7 | :white_check_mark: | | v1.30.0 | :white_check_mark: | | v1.30.1 | :white_check_mark: | | v1.30.2 | :white_check_mark: | +| v1.30.3 | :white_check_mark: | diff --git a/version/components.json b/version/components.json index 01ce11386..178da91eb 100644 --- a/version/components.json +++ b/version/components.json @@ -126,6 +126,7 @@ "v1.27.13": "b88c30b7067f095b7fa02c5560cc50d6e69a5a9fecc606ef477dc7efc86453b9", "v1.27.14": "1ce264643e521494e111b1c9ee59694a54d1f2464bbac3a7a531324ffeae0182", "v1.27.15": "e6f8313e213a8a75deda81edf445d0d785493f6a0a0caadf31e88d173b607943", + "v1.27.16": "33622018f83515331ac70c2041eba5d814a6d78a40b8869f089ea502f63a1421", "v1.28.0": "12ea68bfef0377ccedc1a7c98a05ea76907decbcf1e1ec858a60a7b9b73211bb", "v1.28.1": "6134dbc92dcb83c3bae1a8030f7bb391419b5d13ea94badd3a79b7ece75b2736", "v1.28.2": "6a4808230661c69431143db2e200ea2d021c7f1b1085e6353583075471310d00", @@ -138,6 +139,7 @@ "v1.28.9": "a4d8acf0a74cb1d07d96a1a34148f54c6420874221af16d8ec902d9bffc7ef89", "v1.28.10": "1a344d34755c5f005120308f09a730e7564c8f857de6606b6bc5f18a69606e5a", "v1.28.11": "1f2c7c69736698aa13a59c6705ac26b7b6752d9651330605369357c1ac99c7c6", + "v1.28.12": "3ffcf5100c6bca3dd0a6c317c744dd97fe497c7c4aefe468321171f940d34971", "v1.29.0": "629d4630657caace9c819fd3797f4a70c397fbd41a2a7e464a0507dad675d52c", "v1.29.1": "d4d81d9020b550c896376fb9e0586a9f15a332175890d061619b52b3e9bc6cbd", "v1.29.2": "2d4e4fa8685bcbfb661cb41050cd4756f50a7aa147f68492d51a99f9cdfd69ac", @@ -145,9 +147,11 @@ "v1.29.4": "ea20ab064f716ab7f69a36d72df340257b31c9721ea86e1cf9d70b35999ddeea", "v1.29.5": "e424dcdbe661314b6ca1fcc94726eb554bc3f4392b060b9626f9df8d7d44d42c", "v1.29.6": "8f1e04079e614dd549e36be8114ee7022517d646ea715b5778e7c6ab353eb354", + "v1.29.7": "7699c6f06fbc8e813766b8237de69a095ad820fe484856ffd921a7894b5af605", "v1.30.0": "29f4232c50e6524abba3443ff3b9948d386964d79eb8dfefb409e1f8a8434c14", "v1.30.1": "651faa3bbbfb368ed00460e4d11732614310b690b767c51810a7b638cc0961a2", - "v1.30.2": "672b0cae2accce5eac10a1fe4ea6b166e5b518c79ccf71a2fbe7b53c2ca74062" + "v1.30.2": "672b0cae2accce5eac10a1fe4ea6b166e5b518c79ccf71a2fbe7b53c2ca74062", + "v1.30.3": "bb78c2a27027278ee644d523f583ed7fdba48b4fbf31e3cfb0e309b6457dda69" }, "arm64": { "v1.19.0": "db1c432646e6e6484989b6f7191f3610996ac593409f12574290bfc008ea11f5", @@ -275,6 +279,7 @@ "v1.27.13": "f334ba0612fada50e98a7ea56b686b35c22f0e3243ec2210f2a6a87e841a139f", "v1.27.14": "cb840eb83404047cdafec0b15054023c90a47491b56d2dceba1050040f37cc7e", "v1.27.15": "577630b65c54ba9b629c9c42e35ba0939ce03dcb8f38fb79583ec3c9db9141a7", + "v1.27.16": "39fb88ab0f6b943bbe61dde5d7ea58ce728045a0556f9b6f56d66fe1f20affcc", "v1.28.0": "b9b473d2d9136559b19eb465006af77df45c09862cd7ce6673a33aae517ff5ab", "v1.28.1": "7d2f68917470a5d66bd2a7d62897f59cb4afaeffb2f26c028afa119acd8c3fc8", "v1.28.2": "010789a94cf512d918ec4a3ef8ec734dea0061d89a8293059ef9101ca1bf6bff", @@ -287,6 +292,7 @@ "v1.28.9": "cd6aefad8144a9771fd470529ff14be2675df7b561f7c56dee3fed4f81332dc4", "v1.28.10": "f6809d72ed1bf6fde460e48e5c714c3bc92f680e328defa9bd592a796347b644", "v1.28.11": "15a021fdecf08989d6b64af873d89c61750d3a0564bee58c248eafe5cc4df433", + "v1.28.12": "e0d94607a036323e45a6866127bc7a374543e27f45f8fc0bf948a2452eab667f", "v1.29.0": "bbddee2d46d2e1643ae3623698b45b13aa2e858616d61c642f2f49e5bb14c980", "v1.29.1": "3bff8c50c104c45e416cce9991706c6ac46365f0defbcd54f8cf4ace0fa68dcf", "v1.29.2": "e05720feb9d2d67eff25b0156a5c22e2de37be2ffab4e1f4d31e8c526fafd0e1", @@ -294,9 +300,11 @@ "v1.29.4": "438287a91e08cbefecab79be8ac893a935c3dbf6e87bea895fb99f2bc38cf06e", "v1.29.5": "d4db8c514f2764edc039462c218dbcd316577f76f21b209b76e9a4b1f08e3100", "v1.29.6": "3ba6879ef491cdd8433647020d345d86c0ea8e77f726375bc4b5495888bbf778", + "v1.29.7": "d0ad904dc3823821c3920499fc151fc83fb6cb9e1c920e39173f96720ad0e053", "v1.30.0": "c36afd28921303e6db8e58274de16c60a80a1e75030fc3c4e9c4ed6249b6b696", "v1.30.1": "bda423cb4b9d056f99a2ef116bdf227fadbc1c3309fa3d76da571427a7f41478", - "v1.30.2": "7268762b7afd44bf07619985dd52c376b63e47d73b8f9a3b08cc49624a8fbd55" + "v1.30.2": "7268762b7afd44bf07619985dd52c376b63e47d73b8f9a3b08cc49624a8fbd55", + "v1.30.3": "6590f2447c87346aac29e2ab42fe4f29873f9bf154ee878f00da4c81bfdb8ea2" } }, "kubelet": { @@ -426,6 +434,7 @@ "v1.27.13": "ed68df2a77f3057ab47f57eacb6e9310e91731e4f43c58a3c3b5c857d78d0080", "v1.27.14": "f28defa43f80f82ce909940c1b57b71cba1fcf0de6fc4723e798ef5c72376c28", "v1.27.15": "c0ab414cdd116e9644c8c154ae4a6565c75c2605e2c7b6a5a04b56037ef2ba88", + "v1.27.16": "1b390641b47c6f9265ed8d19b48a8aa334ac28c825ad7ee8201717a5d9e8b759", "v1.28.0": "bfb6b977100963f2879a33e5fbaa59a5276ba829a957a6819c936e9c1465f981", "v1.28.1": "2bc22332f44f8fcd3fce57879fd873f977949ebd261571fbae31fbb2713a5dd3", "v1.28.2": "17edb866636f14eceaad58c56eab12af7ab3be3c78400aff9680635d927f1185", @@ -438,6 +447,7 @@ "v1.28.9": "f3af46cff11c675a80d91ebb38ebc4e85a9f813ce93e56ee131e7fea1491b786", "v1.28.10": "a361e744aaeef4539f0636ecd1827c85207a5f2b0c2b0a98dbbce1498061f509", "v1.28.11": "230f0634ea42a54a6c96771f12eecd6cadfe0b76ab41c3bc39aa7cbbe4dfb12e", + "v1.28.12": "4648ae155b1ab05ab8dbef417bde4d5acfcd5ad32e8d1e3209006b40c440a56c", "v1.29.0": "e1c38137db8d8777eed8813646b59bf4d22d19b9011ab11dc28e2e34f6b80a05", "v1.29.1": "1b1975c58d38be1a99a8bcba4564ac489afd223b0abe9f2ab08bbde89d2412a3", "v1.29.2": "f71a85039b71fe08f1c063a93d61a1c952dc8f9a8c6be9b13fbdac8f0d9ff960", @@ -445,9 +455,11 @@ "v1.29.4": "58571f0ed62543a9bbac541e52c15d8385083113a463e23aec1341d0b5043939", "v1.29.5": "261dc3f3c384d138835fe91a02071c642af94abb0cca56ebc04719240440944c", "v1.29.6": "a946789d4fef64e6f5905dbd7dca01d4c3abd302d0da7958fdaa924fe2729c0b", + "v1.29.7": "f16329e64f5b2204c1cb906f694abebb7f6869d56e6e8b60b54afa0057006b84", "v1.30.0": "32a32ec3d7e7f8b2648c9dd503ce9ef63b4af1d1677f5b5aed7846fb02d66f18", "v1.30.1": "87bd6e5de9c0769c605da5fedb77a35c8b764e3bda1632447883c935dcf219d3", - "v1.30.2": "6923abe67ef069afca61c71c585023840426e802b198298055af3a82e11a4e52" + "v1.30.2": "6923abe67ef069afca61c71c585023840426e802b198298055af3a82e11a4e52", + "v1.30.3": "9a37ddd5ea026639b7d85e98fa742e392df7aa5ec917bed0711a451613de3c1c" }, "arm64": { "v1.19.0": "d8fa5a9739ecc387dfcc55afa91ac6f4b0ccd01f1423c423dbd312d787bbb6bf", @@ -575,6 +587,7 @@ "v1.27.13": "d7bfb14d0b0fc2c41074baf02617cf98589fd029fb3539ea017825e36371f19c", "v1.27.14": "31c97a723021ccc90a47a15ad1de1ffdf58ba109aea922eb359ad2fcb8e8ce4b", "v1.27.15": "ac8abb249dd78a22d92e28306ce9823f7e3ce23cd4ba8dbb0f3bd34f48b6c12b", + "v1.27.16": "2d3cfefc64e1ff5f1e1b8bcba0589a4a9b247f7bcd43cb78645f346687cbbef3", "v1.28.0": "05dd12e35783cab4960e885ec0e7d0e461989b94297e7bea9018ccbd15c4dce9", "v1.28.1": "9b7fa64b2785da4a38768377961e227f8da629c56a5df43ca1b665dd07b56f3c", "v1.28.2": "32269e9ec38c561d028b65c3048ea6a100e1292cbe9e505565222455c8096577", @@ -587,6 +600,7 @@ "v1.28.9": "312471ad255acfcdeea2c5849b171467af4518e96d69d727a3197ff334e9299d", "v1.28.10": "feae161e374ee0155b5263cda339f30f16b525631535a003be7aa437661e1580", "v1.28.11": "0e01c1393f8746965994431b70a20c32b8547dfb1dcf2770cb692990fc65ba5f", + "v1.28.12": "8e28fda6ab1bd506ca4090a0a617aa29d9988c7e23711e70819497089ba67388", "v1.29.0": "0e0e4544c2a0a3475529154b7534d0d58683466efa04a2bb2e763b476db0bb16", "v1.29.1": "e46417ab1ceae995f0e00d4177959a36ed34b807829422bc9dda70b263fe5c5d", "v1.29.2": "9b4aa572d4cd51a41b1067161d961423d0d12b120fb636ea887a12a975d4b19a", @@ -594,9 +608,11 @@ "v1.29.4": "dc4bb6ea6cd35b024d63cc20d1c1800a9c695bd6f70411c57358d7c407513b00", "v1.29.5": "0d4328a3c67e4f0dbf270fa49343f3eab9316adde1a1bd2a857fa56876a9aff1", "v1.29.6": "0f0fa9429d0bcf04f271dcf4f666582dd4a4b15d6f116a45f17b5fcda90c2d2c", + "v1.29.7": "f088079f26fb3bffc8a1c467e1caa5ad807023b63e70013e874163df87be6829", "v1.30.0": "fa887647422d34f3c7cc5b30fefcf97084d2c3277eff237c5808685ba8e4b15a", "v1.30.1": "c45049b829af876588ec1a30def3884ce77c2c175cd77485d49c78d2064a38fb", - "v1.30.2": "72ceb082311b42032827a936f80cd2437b8eee03053d05dbe36ba48585febfb8" + "v1.30.2": "72ceb082311b42032827a936f80cd2437b8eee03053d05dbe36ba48585febfb8", + "v1.30.3": "41d1926cd7b9c7c250c45f11c8fa9d1946cae98aec2eefc61a2cb4933612bcce" } }, "kubectl": { @@ -726,6 +742,7 @@ "v1.27.13": "e991f163197cbd85bbff22f656a74d48b69db5addfa43cc04cca0cf5328f57f1", "v1.27.14": "1d2431c68bb6dfa9de3cd40fd66d97a9ac73593c489f9467249eea43e9c16a1e", "v1.27.15": "c12cf17ec30fb162f8f5fb168e67d4e5b7d6826e08c7648a5f1c6b4e9ba23f39", + "v1.27.16": "97ea7cd771d0c6e3332614668a40d2c5996f0053ff11b44b198ea84dba0818cb", "v1.28.0": "4717660fd1466ec72d59000bb1d9f5cdc91fac31d491043ca62b34398e0799ce", "v1.28.1": "e7a7d6f9d06fab38b4128785aa80f65c54f6675a0d2abef655259ddd852274e1", "v1.28.2": "c922440b043e5de1afa3c1382f8c663a25f055978cbc6e8423493ec157579ec5", @@ -738,6 +755,7 @@ "v1.28.9": "b4693d0b22f509250694b10c7727c42b427d570af04f2065fe23a55d6c0051f1", "v1.28.10": "389c17a9700a4b01ebb055e39b8bc0886330497440dde004b5ed90f2a3a028db", "v1.28.11": "1dba63e1a5c9520fc516c6e817924d927b9b83b8e08254c8fe2a2edb65da7a9c", + "v1.28.12": "e8aee7c9206c00062ced394418a17994b58f279a93a1be1143b08afe1758a3a2", "v1.29.0": "0e03ab096163f61ab610b33f37f55709d3af8e16e4dcc1eb682882ef80f96fd5", "v1.29.1": "69ab3a931e826bf7ac14d38ba7ca637d66a6fcb1ca0e3333a2cafdf15482af9f", "v1.29.2": "7816d067740f47f949be826ac76943167b7b3a38c4f0c18b902fffa8779a5afa", @@ -745,9 +763,11 @@ "v1.29.4": "10e343861c3cb0010161e703307ba907add2aeeeaffc6444779ad915f9889c88", "v1.29.5": "603c8681fc0d8609c851f9cc58bcf55eeb97e2934896e858d0232aa8d1138366", "v1.29.6": "339553c919874ebe3b719e9e1fcd68b55bc8875f9b5a005cf4c028738d54d309", + "v1.29.7": "e3df008ef60ea50286ea93c3c40a020e178a338cea64a185b4e21792d88c75d6", "v1.30.0": "7c3807c0f5c1b30110a2ff1e55da1d112a6d0096201f1beb81b269f582b5d1c5", "v1.30.1": "5b86f0b06e1a5ba6f8f00e2b01e8ed39407729c4990aeda961f83a586f975e8a", - "v1.30.2": "c6e9c45ce3f82c90663e3c30db3b27c167e8b19d83ed4048b61c1013f6a7c66e" + "v1.30.2": "c6e9c45ce3f82c90663e3c30db3b27c167e8b19d83ed4048b61c1013f6a7c66e", + "v1.30.3": "abd83816bd236b266c3643e6c852b446f068fe260f3296af1a25b550854ec7e5" }, "arm64": { "v1.19.0": "d4adf1b6b97252025cb2f7febf55daa3f42dc305822e3da133f77fd33071ec2f", @@ -875,6 +895,7 @@ "v1.27.13": "4838ad8f3902c928f6139d69eba962b1cc2471511c828885650d728d970594d1", "v1.27.14": "29f3a1f520d929df38873c68dec73519c1e5e521140e01cf9d7701f7b5ffe4f3", "v1.27.15": "6bd6bd3092c0a8e536e8e5a56b22aaab87ab1e54a4556ce4d1bff2493180fb8c", + "v1.27.16": "2f50cb29d73f696ffb57437d3e2c95b22c54f019de1dba19e2b834e0b4501eb9", "v1.28.0": "f5484bd9cac66b183c653abed30226b561f537d15346c605cc81d98095f1717c", "v1.28.1": "46954a604b784a8b0dc16754cfc3fa26aabca9fd4ffd109cd028bfba99d492f6", "v1.28.2": "ea6d89b677a8d9df331a82139bb90d9968131530b94eab26cee561531eff4c53", @@ -887,6 +908,7 @@ "v1.28.9": "e0341d3973213f8099e7fcbbf6d1d506967bc2b7a4faac3fb3b4340f226e9b2f", "v1.28.10": "e659d23d442c2706debe5b96742326c0a1e1d7b5c695a9fe7dfe8ea7402caee8", "v1.28.11": "7984a98d52365d190b6f56caa962339a7228b6f432e58ba5f1b1e60dbedac275", + "v1.28.12": "f7e01dfffebb1d5811c37d558f28eefd80cbfadc0b9783b0b0ebf37c40c5c891", "v1.29.0": "8f7a4bd6bae900a4ddab12bd1399aa652c0d59ea508f39b910e111d248893ff7", "v1.29.1": "96d6dc7b2bdcd344ce58d17631c452225de5bbf59b83fd3c89c33c6298fb5d8b", "v1.29.2": "3507ecb4224cf05ae2151a98d4932253624e7762159936d5347b19fe037655ca", @@ -894,9 +916,11 @@ "v1.29.4": "61537408eedcad064d7334384aed508a8aa1ea786311b87b505456a2e0535d36", "v1.29.5": "9ee9168def12ac6a6c0c6430e0f73175e756ed262db6040f8aa2121ad2c1f62e", "v1.29.6": "21816488cf3af4cf2b956ee58f7afc5b4964c29488f63756f5ddcf09b0df5be9", + "v1.29.7": "7b6649aaa298be728c5fb7ccb65f98738a4e8bda0741afbd5a9ed9e488c0e725", "v1.30.0": "669af0cf520757298ea60a8b6eb6b719ba443a9c7d35f36d3fb2fd7513e8c7d2", "v1.30.1": "d90446719b815e3abfe7b2c46ddf8b3fda17599f03ab370d6e47b1580c0e869e", - "v1.30.2": "56becf07105fbacd2b70f87f3f696cfbed226cb48d6d89ed7f65ba4acae3f2f8" + "v1.30.2": "56becf07105fbacd2b70f87f3f696cfbed226cb48d6d89ed7f65ba4acae3f2f8", + "v1.30.3": "c6f9568f930b16101089f1036677bb15a3185e9ed9b8dbce2f518fb5a52b6787" } }, "etcd": {