【解决了一个小问题】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 ...
随机推荐
- 火山引擎 ByteHouse 与白鲸开源完成兼容性认证,加速数据价值释放
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 数据作为新型生产要素,已快速融入生产.分配.流通.消费和社会服务管理等各环节,深刻改变着生产方式.生活方式和治理方 ...
- Python 太难懂?火山引擎数智平台这款产品可以了解一下!
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 「自学 Python?一般人我还是劝你算了吧!」 在国内知识分享平台「知乎」上,这一吐槽话题获得了超过 260 ...
- PPT 图片框架排版万能能公式
图片作用 提升设计感 辅助表达 传递情感 如何选择一张高大上的图片? 星空.地球.城市.海洋.线条.粒子.山脉.壁纸(系统.手机厂商千挑万选的) https://cn.bing.com/images ...
- kubeadm init port is in use
前一次 init 时,master ip 写错了,导致init 失败,修改IP后再次执行时,报 kubeadm init 失败,port is in use Last login: Thu Oct 1 ...
- 注册中心 —— SpringCloud Netflix Eureka
Eureka 简介 Eureka 是一个基于 REST 的服务发现组件,SpringCloud 将它集成在其子项目 spring-cloud-netflix 中,以实现 SpringCloud 的服务 ...
- 【论文笔记#2】Farseg++:用于高空间分辨率遥感图像地理空间对象分割的前景感知关系网络
论文来源 IEEE Transactions on Pattern Analysis and Machine Intelligence 作者 Zhuo Zheng; Yanfei Zhong; Jun ...
- OOALV总结
1.1ALV屏幕 1.1.1定义无CONTAINER屏幕 1.屏幕中可以不使用定制控制控件画范围,直接定义一个屏幕即可. "--------------------------------- ...
- leaflet 绘制 带箭头的线
箭头不是画的线段,是贴的图标,再按方向旋转一下. 代码: //添加箭头线 function addLineDirection(polylinePointArr, source, target) { v ...
- TCP 拥塞控制对数据延迟的影响
哈喽大家好,我是咸鱼 今天分享一篇文章,是关于 TCP 拥塞控制对数据延迟产生的影响的.作者在服务延迟变高之后进行抓包分析,结果发现时间花在了 TCP 本身的机制上面:客户端并不是将请求一股脑发送给服 ...
- Codeforce:723A. The New Year: Meeting Friends (水题)
题意:有三个好朋友的家都住在x轴的不同坐标,问新年的时候三个朋友之间问候走的最短距离 max{(a,b,c)} - min{(a,b,c)} 即可 编译器由 VS2017 切换到VScode使用,纪念 ...
