Use Go 1.21 or higher.
Each CKE release corresponds to a Kubernetes version. For example, CKE 1.16.x corresponds to Kubernetes 1.16.x.
When we start development for a new Kubernetes minor release on the main
branch,
create a maintenance branch for the previous Kubernetes minor release.
For example, when we start development for Kuberntes 1.17, create and push release-1.16
branch as follows:
$ git fetch origin
$ git checkout -b release-1.16 origin/main
$ git push -u origin release-1.16
Then, clear the change log entries in CHANGELOG.md
.
CKE uses k8s.io/client-go
.
Modules under k8s.io
are compatible with Go modules.
Therefore, when k8s.io/client-go
is updated as follows, dependent modules are also updated.
$ VERSION=v0.17.4
$ go get -d k8s.io/client-go@${VERSION} k8s.io/api@${VERSION} k8s.io/apimachinery@${VERSION} \
k8s.io/apiserver@${VERSION} k8s.io/kube-scheduler@${VERSION} k8s.io/kubelet@${VERSION} \
k8s.io/kube-proxy@${VERSION}
The Kubernetes resource definitions embedded in CKE is defined in ./static/resource.go
.
This needs to be updated by make static
whenever images.go
updates.
Edit tools/Makefile
and update CNI_PLUGIN_VERSION
for the latest release.
Edit tools/CHANGELOG.md
to prepare the new version.
After these changes are merged, create and push a tag like tools-1.17.0
.
Read tools/RELEASE.md
for details.
When vulnerabilities or critical issues are found in the main branch, consider back-porting the fixes to older branches as follows:
$ git checkout release-1.16
$ git cherry-pick <commit from main>