【解决了一个小问题】terraform创建service后,如何获取VIP的值?
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
创建一个pod后,再为这个pod创建一个对应的service,便于公开一个地址给外部访问。
有时候需要根据service的vip,再进行下一步的配置。
下面的代码演示如何获取service的vip:
# 最核心的配置
terraform {
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = ">= 2.0.0"
}
}
backend "local" {
}
}
# TKE群集的IP和KEY
provider "kubernetes" {
config_path = "../tencentyun-cls-xxxx-config.yaml"
}
# 这里省略创建容器的代码
# 创建POD对应的service
resource "kubernetes_service" "vm-storage-service" {
metadata {
name = "vm-storage-services"
namespace = "default"
labels = {
"k8s-app" = "vm-storage"
"qcloud-app" = "vm-storage"
}
annotations = {
"description" = "headless service for vm-storage"
"service.kubernetes.io/qcloud-loadbalancer-clusterid" = "cls-xxxxxx"
"service.kubernetes.io/qcloud-loadbalancer-internal-subnetid" = "subnet-xxxxxx"
}
}
spec {
port {
name = "8482-80-tcp"
port = "80"
protocol = "TCP"
target_port = "8482"
}
selector = {
"k8s-app" = "vm-storage" # 这里是绑定的POD
"qcloud-app" = "vm-storage"
}
session_affinity = "None"
type = "LoadBalancer"
external_traffic_policy = "Cluster"
}
}
# 可以在执行完成后输出VIP
output "load_balancer_ip" {
value = "${kubernetes_service.vm-storage-service.status.0.load_balancer.0.ingress.0.ip}" # vm-storage-service 是上面创建的 service 的名字
}
# config-map的建立方法
# 可以把vip写入配置
resource "kubernetes_config_map" "ahfu-vm-storage-vip" {
metadata {
name = "ahfu-vm-storage-vip"
namespace = "default"
}
data = {
"my.yaml" = "${kubernetes_service.vm-storage-service.status.0.load_balancer.0.ingress.0.ip}"
}
}
P.S 能够直接引用output的值呢?代码中死活做不到(只有父module引用子module的情况),希望有研究明白的小伙伴给个例子。
此外,shell中可以这样引用 terraform apply后的output值:
terraform output # apply后,查询所有的output变量
load-balancer-ip-ahfu = "9.xxx.196.21"
terraform output load-balancer-ip-ahfu # 根据名字获取output的值
"9.xxx.196.21"
Have fun!
【解决了一个小问题】terraform创建service后,如何获取VIP的值?的更多相关文章
- 【解决了一个小问题】go.mod文件中引用另一个库,总会自动拉取新版本
我的项目依赖某个旧的公共库: require ( git.xxx.com/myprj/mylib v0.0.43 ) 可以编译的时候,系统总会自动加上这样的路径: require ( git.xxx. ...
- 【解决了一个小问题】golang protocol buffers 3中去掉json标签中的omitempty
参考了这篇帖子:golang protobuf从生成的json标记中删除omitempty标记 由于是在windows上开发,因此写了一个python脚本来解决: remove_tag.py impo ...
- 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义
代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...
- 【解决了一个小问题】如何展示VictoriaMetrics组件上报的bucket数据
VM体系还真的是不一(he)样(qun), 它上报的监控数据长这样: vmagent_remotewrite_block_size_rows_bucket{vmrange="2.448e+0 ...
- 【解决了一个小问题】golang build中因为缓存文件损坏导致的编译错误
编译的过程中出现了一个吓人的错误: GOROOT=C:\Go #gosetup GOPATH=C:\Users\ahfuzhang\go #gosetup C:\Go\bin\go.exe mod t ...
- 【解决了一个小问题】golang中引用一个路径较长的库,导致goland中出现"module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2"
在项目中的go.mod文件中有这样一句: require ( github.com/xxx-devops/xx1/sdk/go v2.2.3 ) 项目的编译没有问题,但是goland中出现如下提示: ...
- 【解决了一个小问题】alpine镜像中,busybox的date命令获取昨天的日期
直接上答案: date -d@"$(( `date +%s`-86400))" +"%Y-%m-%d"
- 【解决了一个小问题】alert manager中的cluster.advertise-address参数是什么意思?
如果在启动 alert manager的时候,不填写参数: /usr/bin/alertmanager --config.file=/etc/alert_manager/alertmanager.ya ...
- 【解决了一个小问题】vmselect对应的vmstorage端口配置错误导致的问题
从vmselect查询的时候,出现如下错误: error when executing query="up" on the time range (start=1639388706 ...
- 【解决了一个小问题】golang的go.mod中出现版本错误
代码中的这一句使用prometheus2.28.0版本的代码: import "github.com/prometheus/prometheus/prompb" 我把require ...
随机推荐
- 在探索的道路上持续“做对”,火山引擎A/B测试成为这家企业数字基建
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 最近,乐刻的"百城万店"战略在行业激起了许多讨论.在传统健身馆经营承压.服务业难标准化的语 ...
- 火山引擎 DataTester 推出可视化数据集成方案
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着数字化的长期演进,企业中往往存在多个运行在不同平台的数字系统,这些数据源彼此独立,数据跨系统间的交流.共享和融 ...
- Python 读取图片 转 base64 并生成 JSON
Python 读取图片 转 base64 并生成 JSON import json import base64 img_path = r'D:\OpenSource\PaddlePaddle\Padd ...
- Mapper that could not be found
现象1 mapper 资源扫不到 resources 建的是 目录 ,不是 package 所以如果直接 a.b 的方式创建,会扫描不到 mapper.xml 文件 现象2 缺少配置文件 HisDru ...
- 如何在 Unity 游戏中集成 AI 语音识别?
简介 语音识别是一项将语音转换为文本的技术,想象一下它如何在游戏中发挥作用?发出命令操纵控制面板或者游戏角色.直接与 NPC 对话.提升交互性等等,都有可能.本文将介绍如何使用 Hugging Fac ...
- 用Python制作高逼格数学动画manim
简介 manim是斯坦福大学数学系小哥Grant Sanderson开源的数学仿真模拟python库,并用于YouTube 频道3Blue1Brown,来解说高等数学. manim是一个非常优秀的数学 ...
- BBS项目(一):BBS需求分析 数据表设计 注册登录功能实现
目录 BBS需求分析 数据表设计 注册页面前端 上传头像 提交数据 FormData 注册后端逻辑 接受参数 验证参数 数据入库 密码加盐操作 返回数据 登录页面前端 生成验证码 前端提交数据 登录后 ...
- 「HDU-2196」Computer (树形DP、树的直径)
「HDU-2196」Computer 树形dp,树的最长路径(最远点对) 题意 给出一棵nn个结点的无根树,求出每个结点所能到达的最远点的距离. 解法 将无根树转成有根树,并进行两次DFS. 第一次D ...
- redis管道技术pipeline一 ——api
import java.io.UnsupportedEncodingException; import java.util.Set; import org.springframework.beans. ...
- 面试重点:webpack
webpack 熟练掌握Webpack的常用配置,能够自己构建前端环境,并进行项目优化; 001.谈谈你对webpack的看法: webpack是一个模块打包工具,可以使用它管理项目中的模块依赖,并编 ...
