mirror of https://github.com/kubernetes/kops.git
Publish kops-controller container dump to S3/GCS
We then `docker load` it when using a KOPS_BASE_URL. This should simplify the development process (particularly once we also do this for dns-controller; at that point we won't need a registry at all). This should also fix the problems in CI, where the kops-controller image isn't available. We've been getting away with testing with the previous version for dns-controller, which changes pretty slowly. But that's not a good idea for kops-controller, which is likely to be more critical and evolve more rapidly.
This commit is contained in:
parent
0f1880295f
commit
49258971fc
25
Makefile
25
Makefile
|
@ -798,8 +798,17 @@ bazel-protokube-export:
|
|||
tools/sha1 ${BAZELIMAGES}/protokube.tar.gz ${BAZELIMAGES}/protokube.tar.gz.sha1
|
||||
tools/sha256 ${BAZELIMAGES}/protokube.tar.gz ${BAZELIMAGES}/protokube.tar.gz.sha256
|
||||
|
||||
.PHONY: bazel-kops-controller-export
|
||||
bazel-kops-controller-export:
|
||||
mkdir -p ${BAZELIMAGES}
|
||||
DOCKER_REGISTRY="" DOCKER_IMAGE_PREFIX="kope/" KOPS_CONTROLLER_TAG=${KOPS_CONTROLLER_TAG} bazel build --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64 //cmd/kops-controller:image-bundle.tar
|
||||
cp -fp bazel-bin/cmd/kops-controller/image-bundle.tar ${BAZELIMAGES}/kops-controller.tar
|
||||
gzip --force --fast ${BAZELIMAGES}/kops-controller.tar
|
||||
tools/sha1 ${BAZELIMAGES}/kops-controller.tar.gz ${BAZELIMAGES}/kops-controller.tar.gz.sha1
|
||||
tools/sha256 ${BAZELIMAGES}/kops-controller.tar.gz ${BAZELIMAGES}/kops-controller.tar.gz.sha256
|
||||
|
||||
.PHONY: bazel-version-dist
|
||||
bazel-version-dist: bazel-crossbuild-nodeup bazel-crossbuild-kops bazel-protokube-export bazel-utils-dist
|
||||
bazel-version-dist: bazel-crossbuild-nodeup bazel-crossbuild-kops bazel-kops-controller-export bazel-protokube-export bazel-utils-dist
|
||||
rm -rf ${BAZELUPLOAD}
|
||||
mkdir -p ${BAZELUPLOAD}/kops/${VERSION}/linux/amd64/
|
||||
mkdir -p ${BAZELUPLOAD}/kops/${VERSION}/darwin/amd64/
|
||||
|
@ -812,6 +821,9 @@ bazel-version-dist: bazel-crossbuild-nodeup bazel-crossbuild-kops bazel-protokub
|
|||
cp ${BAZELIMAGES}/protokube.tar.gz ${BAZELUPLOAD}/kops/${VERSION}/images/protokube.tar.gz
|
||||
cp ${BAZELIMAGES}/protokube.tar.gz.sha1 ${BAZELUPLOAD}/kops/${VERSION}/images/protokube.tar.gz.sha1
|
||||
cp ${BAZELIMAGES}/protokube.tar.gz.sha256 ${BAZELUPLOAD}/kops/${VERSION}/images/protokube.tar.gz.sha256
|
||||
cp ${BAZELIMAGES}/kops-controller.tar.gz ${BAZELUPLOAD}/kops/${VERSION}/images/kops-controller.tar.gz
|
||||
cp ${BAZELIMAGES}/kops-controller.tar.gz.sha1 ${BAZELUPLOAD}/kops/${VERSION}/images/kops-controller.tar.gz.sha1
|
||||
cp ${BAZELIMAGES}/kops-controller.tar.gz.sha256 ${BAZELUPLOAD}/kops/${VERSION}/images/kops-controller.tar.gz.sha256
|
||||
cp bazel-bin/cmd/kops/linux_amd64_pure_stripped/kops ${BAZELUPLOAD}/kops/${VERSION}/linux/amd64/kops
|
||||
tools/sha1 ${BAZELUPLOAD}/kops/${VERSION}/linux/amd64/kops ${BAZELUPLOAD}/kops/${VERSION}/linux/amd64/kops.sha1
|
||||
tools/sha256 ${BAZELUPLOAD}/kops/${VERSION}/linux/amd64/kops ${BAZELUPLOAD}/kops/${VERSION}/linux/amd64/kops.sha256
|
||||
|
@ -877,6 +889,15 @@ dev-upload-protokube: bazel-protokube-export # Upload kops to GCS
|
|||
cp -fp ${BAZELIMAGES}/protokube.tar.gz.sha256 ${BAZELUPLOAD}/kops/${VERSION}/images/protokube.tar.gz.sha256
|
||||
${UPLOAD} ${BAZELUPLOAD}/ ${UPLOAD_DEST}
|
||||
|
||||
# dev-upload-kops-controller uploads kops-controller to GCS
|
||||
.PHONY: dev-upload-kops-controller
|
||||
dev-upload-kops-controller: bazel-kops-controller-export # Upload kops to GCS
|
||||
mkdir -p ${BAZELUPLOAD}/kops/${VERSION}/images/
|
||||
cp -fp ${BAZELIMAGES}/kops-controller.tar.gz ${BAZELUPLOAD}/kops/${VERSION}/images/kops-controller.tar.gz
|
||||
cp -fp ${BAZELIMAGES}/kops-controller.tar.gz.sha1 ${BAZELUPLOAD}/kops/${VERSION}/images/kops-controller.tar.gz.sha1
|
||||
cp -fp ${BAZELIMAGES}/kops-controller.tar.gz.sha256 ${BAZELUPLOAD}/kops/${VERSION}/images/kops-controller.tar.gz.sha256
|
||||
${UPLOAD} ${BAZELUPLOAD}/ ${UPLOAD_DEST}
|
||||
|
||||
# dev-copy-utils copies utils from a recent release
|
||||
# We don't currently have a bazel build for them, and the build is pretty slow, but they change rarely.
|
||||
.PHONE: dev-copy-utils
|
||||
|
@ -890,7 +911,7 @@ dev-copy-utils:
|
|||
# dev-upload does a faster build and uploads to GCS / S3
|
||||
# It copies utils instead of building it
|
||||
.PHONY: dev-upload
|
||||
dev-upload: dev-upload-nodeup dev-upload-protokube dev-copy-utils
|
||||
dev-upload: dev-upload-nodeup dev-upload-kops-controller dev-upload-protokube dev-copy-utils
|
||||
echo "Done"
|
||||
|
||||
.PHONY: crds
|
||||
|
|
|
@ -30,6 +30,7 @@ load(
|
|||
"@io_bazel_rules_docker//container:container.bzl",
|
||||
"container_image",
|
||||
"container_push",
|
||||
"container_bundle",
|
||||
)
|
||||
|
||||
container_image(
|
||||
|
@ -50,3 +51,10 @@ container_push(
|
|||
repository = "{STABLE_DOCKER_IMAGE_PREFIX}kops-controller",
|
||||
tag = "{STABLE_KOPS_CONTROLLER_TAG}",
|
||||
)
|
||||
|
||||
container_bundle(
|
||||
name = "image-bundle",
|
||||
images = {
|
||||
"{STABLE_DOCKER_IMAGE_PREFIX}kops-controller:{STABLE_KOPS_CONTROLLER_TAG}": "image",
|
||||
},
|
||||
)
|
||||
|
|
|
@ -1312,6 +1312,30 @@ func (c *ApplyClusterCmd) BuildNodeUpConfig(assetBuilder *assets.AssetBuilder, i
|
|||
}
|
||||
}
|
||||
|
||||
// `docker load` our images when using a KOPS_BASE_URL, so we
|
||||
// don't need to push/pull from a registry
|
||||
if os.Getenv("KOPS_BASE_URL") != "" {
|
||||
for _, name := range []string{"kops-controller" /* TODO: "dns-controller" */} {
|
||||
baseURL, err := url.Parse(os.Getenv("KOPS_BASE_URL"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
baseURL.Path = path.Join(baseURL.Path, "/images/"+name+".tar.gz")
|
||||
|
||||
u, hash, err := assetBuilder.RemapFileAndSHA(baseURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
image := &nodeup.Image{
|
||||
Sources: []string{u.String()},
|
||||
Hash: hash.Hex(),
|
||||
}
|
||||
images = append(images, image)
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
u, hash, err := ProtokubeImageSource(assetBuilder)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue