适用于 ARM 架构的 Google Cloud SDK



我想在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

在此页面中,我只能找到x86架构。

我可以在 ARM 上使用 Google Cloud SDK 吗?

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

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

尽管由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
  • 库贝克特尔

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

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

我们围绕 Docker 组织本地环境。不幸的是,Google Cloud SDK没有官方的ARM Docker镜像。为了解决这个问题,我们克隆了官方的Google Cloud SDKDockerfile,经过一些试验和错误,我们能够删除不可用的SDK模块,以便我们可以在本地构建以生成ARM Docker映像。 不可用的模块对我们来说不是问题,因为我们不使用它们,所以我们只是将它们注释掉了(请参阅下面的LOCAL_HACK部分)。 以下是我们使用的当前被黑的 Dockerfile:

# 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 计算机)上运行docker build以生成 ARM Docker 映像:

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

瞧!您现在拥有一个功能合理的Google Cloud SDK Docker映像,该映像将在ARM架构:)上运行良好

如果你有python或python3,以及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

它对我有用。

相关内容

  • 没有找到相关文章

最新更新