首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为运行在GCP计算引擎(托管实例组)上的.env项目编写VM外部IP的最佳方法是什么?

为运行在GCP计算引擎(托管实例组)上的.env项目编写VM外部IP的最佳方法是什么?
EN

Stack Overflow用户
提问于 2020-04-15 23:15:12
回答 1查看 287关注 0票数 0

背景信息

在GCP的计算引擎上,我有一个运行在VM托管实例组上的Node.js应用程序。

新VM是从带有启动脚本的模板生成的。脚本完成了通常的工作,安装Node.js、curl、git克隆应用程序代码等等。

此应用程序设置为自动缩放,这就是为什么我需要按语法方式进行配置,即在host项目的.env文件中设置Node.js和port

我是如何解决这个问题的

在我的startup.sh脚本中,我可以考虑以编程方式这样做的唯一方法是运行以下命令:gcloud compute instaces list

这回像这样的东西

代码语言:javascript
复制
NAME                              ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
VM-1                           us-central1-a    n1-standard-1                XX.XXX.X.X   XX.XXX.XXX.XXX  RUNNING
VM-2                           us-central1-a    n1-standard-1                XX.XXX.X.X   XX.XXX.XXX.XXX  RUNNING
VM-3                           us-central1-a    n1-standard-1                XX.XXX.X.X   XX.XXX.XXX.XXX  RUNNING

然后,我想提取脚本正在运行的当前机器的EXTERNAL_IP,并以某种方式将其写入环境变量/将其写入项目的.env文件。

.env文件中只有以下信息:

代码语言:javascript
复制
{
    "config" : {
        "host" : "VM_EXTERNAL_IP"
        "port" : 3019
    }
 }

我认为,这种方法需要某种正则表达式才能从命令输出中获取正确的IP,然后存储在环境变量中,然后写入.env。

这似乎是不必要的工作,因为我肯定不是第一个想要这样做的人。有什么标准的方法吗?我绝不是Node.js专家,更不是GCP专家。也许GCP上有一种机制来处理这个问题?-一些元数据API可以很容易地抓取IP以便在代码中使用?也许在Node.js方面有一种更好的配置主机的方法?如有任何建议,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 00:07:14

确定外部IP地址的方法很多。请注意,您的实例没有外部公共IP地址。Google实现了一个1比1的NAT,它处理IP地址转换,将公共IP地址映射到私有IP地址。

CLI支持命令行选项--format json。您可以使用解析json的工具,如jq

代码语言:javascript
复制
gcloud compute instances list --format json | jq -r ".[].networkInterfaces[0].accessConfigs[0].natIP"

从多个来源获取您的公共IP地址,这些来源可能与您的实例相同,也可能不相同:

https://checkip.amazonaws.com/

代码语言:javascript
复制
curl https://checkip.amazonaws.com/

使用CLI和选项只获取外部地址

代码语言:javascript
复制
gcloud compute instances describe [INSTANCE_NAME] --format='get(networkInterfaces[0].accessConfigs[0].natIP)'

从实例内部读取元数据服务器:

代码语言:javascript
复制
curl http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip -H "Metadata-Flavor: Google"

一旦确定了获取外部IP地址的方法,就可以使用awk等工具来替换文件中的值。

https://www.grymoire.com/Unix/Awk.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61240139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档