mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 02:41:25 +00:00
Adds Windows support for etcd image
We can use docker buildx in order to build and push Windows images from the same Linux node, as long as the Dockerfile does not have any RUN commands in the Windows step. We also need to create a non-default builder instance in order to be able to build and push Windows images. The Windows images have to be built and pushed directly to the registry. For Windows containers without Hyper-V isolation, the host OS Version and the Container OS Version need to match, which is why we added multiple Windows OS Versions to the building process. For the manifest list, we need to also annotate the Windows OS Version, so the Windows nodes will be able to pull the proper image from the manifest list. Adds support for Windows OS Versions: 1809, 2004, 20H2, ltsc2022. Bumped etcd image revision.
This commit is contained in:
parent
86d23cf441
commit
c4fc9bba6c
28
cluster/images/etcd/Dockerfile.windows
Normal file
28
cluster/images/etcd/Dockerfile.windows
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Copyright 2021 The Kubernetes Authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
ARG RUNNERIMAGE
|
||||||
|
FROM ${RUNNERIMAGE}
|
||||||
|
|
||||||
|
EXPOSE 2379 2380 4001 7001
|
||||||
|
|
||||||
|
COPY etcd* etcdctl* /usr/local/bin/
|
||||||
|
COPY cp* /usr/local/bin/
|
||||||
|
COPY migrate-if-needed.bat /usr/local/bin/
|
||||||
|
COPY migrate /usr/local/bin/migrate.exe
|
||||||
|
|
||||||
|
# NOTE(claudiub): docker buildx sets the PATH env variable to a Linux-like PATH,
|
||||||
|
# # which is not desirable. See: https://github.com/moby/buildkit/issues/1560
|
||||||
|
# # TODO(claudiub): remove this once the issue has been resolved.
|
||||||
|
ENV PATH="C:\usr\local\bin;C:\Windows\system32;C:\Windows;"
|
@ -22,7 +22,8 @@ but can also be used as the etcd target version.
|
|||||||
|
|
||||||
Always run `/usr/local/bin/migrate` (or the
|
Always run `/usr/local/bin/migrate` (or the
|
||||||
`/usr/local/bin/migrate-if-needed.sh` wrapper script) before starting the etcd
|
`/usr/local/bin/migrate-if-needed.sh` wrapper script) before starting the etcd
|
||||||
server.
|
server. On Windows, run `C:\bin\migrate.exe` (or the `C:\bin\migrate-if-needed.bat
|
||||||
|
wrapper script`).
|
||||||
|
|
||||||
`migrate` writes a `version.txt` file to track the "current" version
|
`migrate` writes a `version.txt` file to track the "current" version
|
||||||
of etcd that was used to persist data to disk. A "target" version may also be provided
|
of etcd that was used to persist data to disk. A "target" version may also be provided
|
||||||
@ -49,6 +50,9 @@ For `amd64`, official `etcd` and `etcdctl` binaries are downloaded from Github
|
|||||||
to maintain official support. For other architectures, `etcd` is cross-compiled
|
to maintain official support. For other architectures, `etcd` is cross-compiled
|
||||||
from source. Arch-specific `busybox` images serve as base images.
|
from source. Arch-specific `busybox` images serve as base images.
|
||||||
|
|
||||||
|
Windows images can be built on Linux nodes due to `docker buildx`, but they will
|
||||||
|
only be created and pushed when using the `all-push` make target.
|
||||||
|
|
||||||
#### How to release
|
#### How to release
|
||||||
|
|
||||||
First, update `ETCD_VERSION` and `REVSION` in the `Makefile`.
|
First, update `ETCD_VERSION` and `REVSION` in the `Makefile`.
|
||||||
|
@ -18,5 +18,7 @@ steps:
|
|||||||
- '-c'
|
- '-c'
|
||||||
- |
|
- |
|
||||||
gcloud auth configure-docker \
|
gcloud auth configure-docker \
|
||||||
|
&& docker buildx create --name img-builder --use \
|
||||||
|
&& docker buildx inspect --bootstrap \
|
||||||
&& docker run --rm --privileged linuxkit/binfmt:4ea3b9b0938cbd19834c096aa31ff475cc75d281 \
|
&& docker run --rm --privileged linuxkit/binfmt:4ea3b9b0938cbd19834c096aa31ff475cc75d281 \
|
||||||
&& make all-push
|
&& make all-push
|
||||||
|
21
cluster/images/etcd/migrate-if-needed.bat
Executable file
21
cluster/images/etcd/migrate-if-needed.bat
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
@echo off
|
||||||
|
REM Copyright 2021 The Kubernetes Authors.
|
||||||
|
REM
|
||||||
|
REM Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
REM you may not use this file except in compliance with the License.
|
||||||
|
REM You may obtain a copy of the License at
|
||||||
|
REM
|
||||||
|
REM http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
REM
|
||||||
|
REM Unless required by applicable law or agreed to in writing, software
|
||||||
|
REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
REM See the License for the specific language governing permissions and
|
||||||
|
REM limitations under the License.
|
||||||
|
|
||||||
|
REM DEPRECATED:
|
||||||
|
REM The functionality has been moved to migrate binary and this script
|
||||||
|
REM if left for backward compatibility with previous manifests. It will be
|
||||||
|
REM removed in the future.
|
||||||
|
|
||||||
|
C:\bin\migrate.exe
|
Loading…
Reference in New Issue
Block a user