Google 适用于 ARM 架构的 Cloud SDK

Google Cloud SDK for ARM architecture

我想在 ARM 机器上工作 Google Cloud SDK。

$ uname -a
Linux myhost 3.14.79-at10 #2 SMP PREEMPT Mon Mar 6 15:38:30 JST 2017 armv7l GNU/Linux

this page中,我只能找到x86架构。

我可以在 ARM 上运行 Google Cloud SDK 吗?

答案是否定的。SDK 是闭源的,您不太可能破解它以在 ARM 上运行。我不会阻止你这样做,因为它主要由 Python 个脚本组成。

另一方面,gsutil 是处理云存储操作的 SDK 的一部分,它是开源的并且在 PyPI 上。您可以像往常一样使用 pip 安装它。

如果您有 pythonpython3,以及 pippip3,尝试:

pip install --upgrade google-cloud

希望对您有所帮助。

tekk@rack:~ $ uname -a
Linux rack 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux

它对我有用。

是的 - 我能够在 ARM64 (aarch64) Pinebook Pro 上使用 apt-get instructions 安装它。如果您没有 Ubuntu/Debian,您可以使用 Docker 容器。我使用 Ubuntu 容器从 Manjaro-ARM 做到了。

我认为这些说明适用于 Raspberry Pi 运行 Raspbian。

虽然上面的 link 由 Google 维护,可能是获取这些说明的最佳位置,但我将在下面复制当前最小的命令集,以备不时之需在某个时候移动:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates gnupg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
gcloud init

您可以选择安装以下任何附加软件包:

  • google-cloud-sdk-app-engine-python
  • google-cloud-sdk-app-engine-python-extras
  • google-cloud-sdk-app-engine-java
  • google-cloud-sdk-app-engine-go
  • google-cloud-sdk-bigtable-emulator
  • google-cloud-sdk-cbt
  • google-cloud-sdk-cloud-build-local
  • google-cloud-sdk-datalab
  • google-cloud-sdk-datastore-emulator
  • google-cloud-sdk-firestore-emulator
  • google-cloud-sdk-pubsub-emulator
  • kubectl

我们围绕 Docker 组织本地环境。遗憾的是,Google Cloud SDK 没有官方 ARM Docker 映像。为了解决这个问题,我们克隆了官方 Google Cloud SDK Dockerfile,经过反复试验,我们能够删除不可用的 SDK 模块,这样我们就可以在本地构建以生成 ARM Docker 图片。不可用的模块对我们来说不是问题,因为我们不使用它们,所以我们只是将它们注释掉(参见下面的 LOCAL_HACK 部分)。这是我们当前使用的被黑 Docker 文件:

# This is a temporary workaround Dockerfile to allow us to run the Google SDK on Apple Silicon
# For the original @see https://raw.githubusercontent.com/GoogleCloudPlatform/cloud-sdk-docker/master/Dockerfile

FROM docker:19.03.11 as static-docker-source

FROM debian:buster
ARG CLOUD_SDK_VERSION=365.0.1
ENV CLOUD_SDK_VERSION=$CLOUD_SDK_VERSION
ENV PATH "$PATH:/opt/google-cloud-sdk/bin/"
COPY --from=static-docker-source /usr/local/bin/docker /usr/local/bin/docker
RUN groupadd -r -g 1000 cloudsdk && \
    useradd -r -u 1000 -m -s /bin/bash -g cloudsdk cloudsdk
RUN apt-get -qqy update && apt-get install -qqy \
        curl \
        python3-dev \
        python3-crcmod \
        python-crcmod \
        apt-transport-https \
        lsb-release \
        openssh-client \
        git \
        make \
        gnupg && \
    export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
    echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \
    curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
    apt-get update && \
    apt-get install -y google-cloud-sdk=${CLOUD_SDK_VERSION}-0 \
        google-cloud-sdk-app-engine-python=${CLOUD_SDK_VERSION}-0 \
        google-cloud-sdk-app-engine-python-extras=${CLOUD_SDK_VERSION}-0 \
        google-cloud-sdk-app-engine-java=${CLOUD_SDK_VERSION}-0 \
        google-cloud-sdk-datalab=${CLOUD_SDK_VERSION}-0 \
        google-cloud-sdk-datastore-emulator=${CLOUD_SDK_VERSION}-0 \
        google-cloud-sdk-pubsub-emulator=${CLOUD_SDK_VERSION}-0 \
        google-cloud-sdk-firestore-emulator=${CLOUD_SDK_VERSION}-0 \
        kubectl && \
    gcloud --version && \
    docker --version && kubectl version --client

# >>> LOCAL HACK START
# @todo Removed the following packages from the `apt-get install` above as we cannot build them locally
#8 29.36 E: Unable to locate package google-cloud-sdk-app-engine-go
#8 29.37 E: Version '339.0.0-0' for 'google-cloud-sdk-bigtable-emulator' was not found
#8 29.37 E: Unable to locate package google-cloud-sdk-spanner-emulator
#8 29.37 E: Unable to locate package google-cloud-sdk-cbt
#8 29.37 E: Unable to locate package google-cloud-sdk-kpt
#8 29.37 E: Unable to locate package google-cloud-sdk-local-extract
#        google-cloud-sdk-app-engine-go=${CLOUD_SDK_VERSION}-0 \
#        google-cloud-sdk-bigtable-emulator=${CLOUD_SDK_VERSION}-0 \
#        google-cloud-sdk-spanner-emulator=${CLOUD_SDK_VERSION}-0 \
#        google-cloud-sdk-cbt=${CLOUD_SDK_VERSION}-0 \
#        google-cloud-sdk-kpt=${CLOUD_SDK_VERSION}-0 \
#        google-cloud-sdk-local-extract=${CLOUD_SDK_VERSION}-0 \
# <<< LOCAL HACK END

RUN apt-get install -qqy \
        gcc \
        python3-pip
RUN pip3 install --upgrade pip
RUN pip3 install pyopenssl
RUN git config --system credential.'https://source.developers.google.com'.helper gcloud.sh
VOLUME ["/root/.config", "/root/.kube"]

如果您要将此文件另存为 Dockerfile.CloudSdk.arm64,则您可以在 ARM 机器(在我们的例子中是 Apple M1 机器)上 运行 a docker build 生成您的ARM Docker 图片:

docker build -f Dockerfile.CloudSdk.arm64 -t yourorg.com/cloud-sdk-docker-arm:latest .

瞧!您现在拥有一个功能合理的 Google Cloud SDK Docker 图像,它将在 ARM 架构上 运行 精美 :)