当前位置: 首页 > 后端技术 > Java

使用Terraform创建GCPPubsub

时间:2023-04-01 23:25:48 Java

1简介Terraform是一种用于管理许多平台基础设施的工具,例如AWS、GCP和Azure。本文将介绍如何通过Terraform管理GCPPub/Sub。创建GCP项目请参考:InitializeaGCPprojectandaccessitwithgcloud2TerraformCreatePub/Sub2.1下载Terraform插件我们需要安装GCPTerraform插件来管理GCP资源:#Set插件目录$exportTERRAFORM_PLUGIN=/Users/larry/Software/terraform/plugins#创建目录$mkdir-p${TERRAFORM_PLUGIN}/registry.terraform.io/hashicorp/google/4.0.0/darwin_amd64$cd${TERRAFORM_PLUGIN}/registry.terraform.io/hashicorp/google/4.0.0/darwin_amd64#下载$wgethttps://releases.hashicorp.com/terraform-provider-google/4.0.0/terraform-provider-google_4.0.0_darwin_amd64.zip#Unzip$unzipterraform-provider-google_4.0.0_darwin_amd64.zip2.2准备Terraform代码,需要提供Terraform代码管理Pub/Sub。更多详情请参考:TerrafromGCP。版本文件version.tf:terraform{required_version="=1.0.11"required_providers{google={source="hashicorp/google"version="=4.0.0"}}}主文件main.tf:provider"google"{project="pkslow"}resource"google_pubsub_topic""pkslow-poc"{name="pkslow-poc"}resource"google_pubsub_subscription""pkslow-poc"{name="pkslow-poc"topic=google_pubsub_topic.pkslow-poc.namelabels={foo="bar"}#20分钟message_retention_duration="1200s"retain_acked_messages=trueack_policy20expiration={ttl="300000.5s"}retry_policy{minimum_backoff="10s"}enable_message_ordering=true}2.3初始化更改指定插件目录初始化:$terraforminit-plugin-dir=${TERRAFORM_PLUGIN}使更改生效,会在GCP上创建对应的资源:$terraformapply-auto-approve如果没有报错,说明创建成功,我们查看一下:$gcloudpubsubtopicslist---name:projects/pkslow/topics/pkslow-poc$gcloudpubsub订阅列表---ackDeadlineSeconds:20enableMessageOrdering:trueexpirationPolicy:ttl:300000.500slabels:foo:barmessageRetentionDuration:1200sname:projects/pkslow/subscriptions/pkslow-pocpushConfig:{}retainAckedMessages:trueretryPolicy:maximumBackoff:0sminimumBackoff:10stopic:projects/pkslow/topics/pkslow-poc注意:我们没有提供任何密码或密钥,那么Terraform如何直接操作我的GCP资源?因为它会根据环境变量GOOGLE_APPLICATION_CREDENTIALS得到3条收发消息我们通过gcloud向Pub/Sub发送消息:$gcloudpubsubtopicspublishpkslow-poc--message="www.pkslow.com"messageIds:-'3491736520339885'$gcloudpubsub主题发布pkslow-poc--message="LarryDeng"messageIds:-'3491738650256958'$gcloudpubsub主题发布pkslow-poc--message="Hi,pkslower"messageIds:-'3491739306095970'来自Pub/SubPullmessage:$gcloudpubsubsubscriptionspullpkslow-poc--auto-ack我们也可以在GCP界面上监听对应的queue,非常方便:4Code代码在GitHub上:https://github.com/LarryDpk/p...