【解决了一个小问题】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 ...
随机推荐
- 使用Plist编辑器——简单入门指南
本指南将介绍如何使用Plist编辑器.您将学习如何打开.编辑和保存plist文件,并了解plist文件的基本结构和用途.跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plis ...
- 对话 BitSail Contributor | 吴畅:从好奇,到深入
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2022 年 10 月,字节跳动 BitSail 数据引擎正式开源.同期,社区推出 Contributor 激励计 ...
- Sublime Text 汉化 中文
Ctrl+Shift+P 安装 ChineseLocalizations 包 如下图 或者 Preferences -> Package Control
- 解密Prompt系列23.大模型幻觉分类&归因&检测&缓解方案脑图全梳理
上一章我们主要聊聊RAG场景下的幻觉检测和解决方案,这一章我们单独针对大模型的幻觉问题,从幻觉类型,幻觉来源,幻觉检测,幻觉缓解这四个方向进行整理.这里就不细说任意一种方法了,因为说不完根本说不完,索 ...
- 白嫖:GPT-4
众所周知,GPT-4需要充OpenAI 的 Plus才能使用,Plus则需要每月20美金. 很多同学很想体验GPT-4,但一方面不想花钱,一方面想花也没那么容易花出去(懂的都懂) 我看到有人分享可以免 ...
- 接口文档 token原理 jwt介绍和原理 drf-jwt快速使用
目录 昨日回顾 认证 权限 频率 全局异常处理 接口文档 接口文档编写 drf自动生成接口文档 cookies-session-token发展史 jwt介绍和原理 jwt的构成 base64的编码和解 ...
- 聊聊与前端工程师天然互补的 Serverless
作者:灵轮_(阿里云前端技术专家)_ 作为前端工程师,我们的使命是为用户提供良好的前端用户体验.随着云原生时代的到来,显而易见的,我们能做的更多了.Serverless 产品的特点是免运维.按量付费和 ...
- http连接池配置及spring boot restTemplate配置http连接池
本文为博主原创,转载请注明出处: 项目中存在第三方系统之间的服务调用通信,且会进行频繁调用,由于很早之前实现的调用方式为每调用一次外部接口,就需要新建一个HttpClient 对象.由于频繁调用,会存 ...
- idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
本文为博主原创,未经允许不得转载: mybatis plus 使用过程中已经很大程度提升了我们开发的效率,因为它内部已经对单表的操作进行了完美的封装,但是关联表操作时, 这时就需要自己定义sql,自定 ...
- CSS 动画 : 3D翻页动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
