2020年時点でkubectlをM1 Mac向けにコンパイルする仕組みはない

Ref. https://github.com/kubernetes/kubernetes/issues/97550

PRも作られてるがなんか中途半端でコメントを入れておいたがすぐに取り込まれるかは不明なので、先にpatchを当ててやる方法を作ってしまう。

diffはこうだ。

diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh
index bef1d837703..768aa1e867a 100755
--- a/hack/lib/golang.sh
+++ b/hack/lib/golang.sh
@@ -49,6 +49,7 @@ readonly KUBE_SUPPORTED_CLIENT_PLATFORMS=(
   linux/s390x
   linux/ppc64le
   darwin/amd64
+  darwin/arm64
   windows/amd64
   windows/386
 )
@@ -62,6 +63,7 @@ readonly KUBE_SUPPORTED_TEST_PLATFORMS=(
   linux/s390x
   linux/ppc64le
   darwin/amd64
+  darwin/arm64
   windows/amd64
 )

@@ -213,11 +215,13 @@ kube::golang::setup_platforms() {
     if [[ "${KUBE_BUILDER_OS:-}" == "darwin"* ]]; then
       KUBE_TEST_PLATFORMS=(
         darwin/amd64
+        darwin/arm64
         linux/amd64
       )
       readonly KUBE_TEST_PLATFORMS
       KUBE_CLIENT_PLATFORMS=(
         darwin/amd64
+        darwin/arm64
         linux/amd64
       )
       readonly KUBE_CLIENT_PLATFORMS
diff --git a/test/typecheck/main.go b/test/typecheck/main.go
index ffe5085b0d5..4d631f205ec 100644
--- a/test/typecheck/main.go
+++ b/test/typecheck/main.go
@@ -51,7 +51,7 @@ var (
        "darwin/amd64", "linux/arm",
        "linux/386", "windows/amd64",
        "linux/arm64", "linux/ppc64le",
-       "linux/s390x",
+       "linux/s390x", "darwin/arm64",
    }

    // directories we always ignore

まずは公式手順通りにk/kをcloneしてくる。

mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
git clone https://github.com/kubernetes/kubernetes
cd kubernetes

できたらpatchをあてる

curl -LO https://gist.githubusercontent.com/inductor/d944f90cb277d077fb8b737ff74b9cf2/raw/a276fcad07a693b60679d473720718761c4de94d/mac-m1.patch
git apply mac-m1.patch

コンパイルして、kubectlが出力され実行できることを確認

make kubectl
ls -l _output/bin/kubectl
-rwxr-xr-x  1 inductor  staff 44870050  12 31 10:30 _output/bin/kubedctl

kubectlが実行できることを確認

kubectl get pod
No resources found in default namespace.

わいわい

广告
将在 10 秒后关闭
bannerAds