首页 > 其他分享 >通过Terraform创建GCP Pubsub

通过Terraform创建GCP Pubsub

时间:2023-01-13 16:33:23浏览次数:67  
标签:pkslow google GCP Terraform pubsub poc Pubsub

1 简介

Terraform是管理许多平台的基础设施的工具,如AWS、GCP和Azure。这篇文章将讲解如何通过Terraform来管理GCP Pub/Sub。

创建GCP项目请参考:初始化一个GCP项目并用gcloud访问操作

2 Terraform创建Pub/Sub

2.1 下载Terraform插件

我们需要安装GCP的Terraform插件来管理GCP资源:

# 设置插件目录
$ export TERRAFORM_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
# 下载
$ wget https://releases.hashicorp.com/terraform-provider-google/4.0.0/terraform-provider-google_4.0.0_darwin_amd64.zip
# 解压
$ unzip terraform-provider-google_4.0.0_darwin_amd64.zip

2.2 准备Terraform代码

需要提供Terraform代码理管理Pub/Sub,更多细节请参考: Terrafrom GCP.

版本文件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.name

  labels = {
    foo = "bar"
  }

  # 20 minutes
  message_retention_duration = "1200s"
  retain_acked_messages      = true

  ack_deadline_seconds = 20

  expiration_policy {
    ttl = "300000.5s"
  }
  retry_policy {
    minimum_backoff = "10s"
  }

  enable_message_ordering    = true
}

2.3 初始化和变更

指定插件目录初始化:

$ terraform init -plugin-dir=${TERRAFORM_PLUGIN}

使变更生效,就会在GCP上创建对应的资源:

$ terraform apply -auto-approve

如果没有发生错误,则意味着创建成功,我们检查一下:

$ gcloud pubsub topics list
---
name: projects/pkslow/topics/pkslow-poc

$ gcloud pubsub subscriptions list
---
ackDeadlineSeconds: 20
enableMessageOrdering: true
expirationPolicy:
  ttl: 300000.500s
labels:
  foo: bar
messageRetentionDuration: 1200s
name: projects/pkslow/subscriptions/pkslow-poc
pushConfig: {}
retainAckedMessages: true
retryPolicy:
  maximumBackoff: 600s
  minimumBackoff: 10s
topic: projects/pkslow/topics/pkslow-poc

注意:我们并没有提供任何密码或密钥,那Terraform怎么可以直接操作我的GCP资源呢?因为它会根据环境变量GOOGLE_APPLICATION_CREDENTIALS来获取。

3 发送和接收消息

我们通过gcloud来发送消息到Pub/Sub上:

$ gcloud pubsub topics publish pkslow-poc --message="www.pkslow.com"
messageIds:
- '3491736520339885'

$ gcloud pubsub topics publish pkslow-poc --message="Larry Deng"
messageIds:
- '3491738650256958'

$ gcloud pubsub topics publish pkslow-poc --message="Hi, pkslower"
messageIds:
- '3491739306095970'

从Pub/Sub拉取消息:

$ gcloud pubsub subscriptions pull pkslow-poc --auto-ack

我们还能在GCP界面上监控对应的队列,十分方便:

4 代码

代码在 GitHub上: https://github.com/LarryDpk/pkslow-samples

标签:pkslow,google,GCP,Terraform,pubsub,poc,Pubsub
From: https://www.cnblogs.com/larrydpk/p/17050068.html

相关文章

  • 初始化一个GCP项目并用gcloud访问操作
    1简介谷歌云GCP(GoogleCloudPlatform)是由Google提供的云平台,还是为用户提供了许多免费的产品,还是可以尝试一下的。对于学习或者小项目,都可以使用。2创建一个新项目要......
  • [译]Terraform – External Data Source
    前言简而言之,外部数据源(不是特别推荐!)意味着试图从外部数据源获取一些信息并将其呈现给Terraform。Terraform外部数据源执行shell脚本或python或任何其他程序。Terraform......
  • Google Cloud Platform | 使用 Terraform 的分层防火墙策略自动化
    【本文由CloudAce整理发布,更多内容请访问CloudAce官网】防火墙规则是GoogleCloud中网络安全的重要组成部分。GoogleCloud中的防火墙大致可分为两种类型;网络防火墙......
  • 02.Terraform基础
    Terraform基础开发环境配置安装terraform:https://developer.hashicorp.com/terraform/downloads?product_intent=terraform安装vscode编辑器:https://code.visuals......
  • 01.terraform概述
    Terraform概述云计算概述企业上云:可以提高资源配置效率,降低信息化建设成本(说白了就是用上云计算了)企业上云之前:需要内部局域网,还要搭建机房,购买服务器,防火墙,增设设......
  • [华为SDK]Could not resolve com.huawei.agconnect:agcp:1.6.x.300解决方法
    接入huaweiSDK过程中出现的问题,解决时需要关注项目根路径下的gradle脚本文件这三个地方:首先,华为的maven源需要放置在最前边其次,根gradle依赖项中也需要加入相关依赖最后,记得......
  • terraform环境配置
    官网​​https://www.terraform.io/​​下载地址​​https://developer.hashicorp.com/terraform/downloads​​环境配置将下载的二进制放在此目录下C:\ProgramFiles\terra......
  • Terraform to create an Azure Database for MySQL - Flexible Server
    TerraformtocreateanAzureDatabaseforMySQL-FlexibleServerhttps://learn.microsoft.com/en-us/azure/mysql/flexible-server/quickstart-create-terraform?tab......
  • terraform to create Azure linux Virtual Machine
    ExamplesfortheVirtualMachineresourcesReferencehttps://github.com/hashicorp/terraform-provider-azurerm/tree/main/examples/virtual-machineshttps://......
  • Spring Cloud GCP(五)
    15.4.Firestore操作和模板​​FirestoreOperations​​及其实现提供了Spring开发人员熟悉的模板模式。​​FirestoreTemplate​​使用SpringDataCloudFirestore提......