本指南介绍了如何在虚拟机实例上安装私钥服务帐号凭据,以便为 Ops Agent 授权。在安装代理之前,请检查您的虚拟机实例是否具有代理需要的凭据。代理必须具有将信息发送到 Monitoring 的权限。权限通过使用在虚拟机实例中存储并充当代理的应用默认凭据的服务帐号凭据提供。
准备工作
您可使用以下命令检查 Compute Engine 上的授权范围:
curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
在输出中查找以下一个或多个授权范围:
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/logging.admin
https://www.googleapis.com/auth/monitoring.write
https://www.googleapis.com/auth/monitoring.admin
https://www.googleapis.com/auth/cloud-platform
添加凭据
授权是确定经过身份验证的客户端对一组资源具有哪些权限的过程。
如需在虚拟机实例上为 Ops Agent 授权,请执行以下步骤:
创建服务帐号
身份验证是确定客户端的身份的过程。对于身份验证,建议使用服务帐号:即与您的 Google Cloud 项目关联的 Google 帐号,而不是某个特定用户。无论代码在何处(Compute Engine、App Engine 或本地)运行,您都可以使用服务帐号进行身份验证。如需了解详情,请参阅身份验证概览。
如需创建服务帐号,请完成创建服务帐号过程并提供以下信息:
选择要在其中创建服务帐号的 Google Cloud 项目。
对于 Compute Engine 实例,请选择您在其中创建了实例的项目。
在角色下拉菜单中,选择以下角色:
Monitoring > Monitoring Metric Writer。
Logging > Logs Writer。
创建密钥时,请选择 JSON 作为密钥类型。
为方便起见,您可创建变量 CREDS
以指向工作站上的凭据文件。例如:
CREDS="~/Downloads/[PROJECT-NAME]-[KEY-ID].json"
这些过程的其余部分将参考该变量。
将私钥复制到您的实例
创建服务帐号后,您必须将私钥文件复制到虚拟机实例上的以下任一位置,以便代理识别凭据。您可以使用任意文件复制工具。
仅限 Linux:
/etc/google/auth/application_default_credentials.json
仅限 Windows:
C:\ProgramData\Google\Auth\application_default_credentials.json
对于 Linux 和 Windows:您存储在变量
GOOGLE_APPLICATION_CREDENTIALS
中的任意位置。该变量必须对代理的进程可见。
以下文件复制说明假定您的工作站和实例都具有 Linux 环境。如果您使用的是其他环境,请参阅云提供商的文档以了解如何复制私钥文件。在上一步(即创建服务帐号)中,您的私钥凭据应该已存储在您的工作站上的某个位置(您将该位置保存在变量 CREDS
中):
Compute Engine
在您的工作站上,请使用 gcloud 命令行工具。您可以在虚拟机实例页面的 Google Cloud Console 中找到 [YOUR-INSTANCE-NAME]
和 [YOUR-INSTANCE-ZONE]
:
REMOTE_USER="$USER"
INSTANCE="[YOUR-INSTANCE-NAME]"
ZONE="[YOUR-INSTANCE-ZONE]"
gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
在您的 Compute Engine 实例上,运行以下命令:
GOOGLE_APPLICATION_CREDENTIALS="/etc/google/auth/application_default_credentials.json"
sudo mkdir -p /etc/google/auth
sudo mv "$HOME/temp.json" "$GOOGLE_APPLICATION_CREDENTIALS"
sudo chown root:root "$GOOGLE_APPLICATION_CREDENTIALS"
sudo chmod 0400 "$GOOGLE_APPLICATION_CREDENTIALS"
为 Ops Agent 授权
Linux
修改以下配置文件,或创建该文件(如果该文件尚不存在):
/etc/systemd/system.conf
将以下内容添加到该文件中:
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=path_to_credentials_file"
重新加载环境变量:
sudo systemctl daemon-reload
通过在虚拟机实例上运行以下命令来重启该代理。
sudo service google-cloud-ops-agent restart
Windows
运行以下命令以设置 Ops Agent 要使用的
GOOGLE_APPLICATION_CREDENTIALS
环境变量。setx GOOGLE_APPLICATION_CREDEINTALS path_to_credentials_file}
后续步骤
您的虚拟机实例现在有了代理所需的凭据。
如果您尚未安装代理,请转到“代理安装”页面并安装代理。如需查看说明,请参阅安装代理。
如果您已经安装了此代理,请重启此代理以使用新凭据。如需查看说明,请参阅重启代理。
如果您想再次检查这些凭据,请参阅验证私钥凭据。