我想在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,以及pip和pip3,请尝试:
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
它对我有用。