k8s部署java微服务程序时,关于配置conusl acl token的方法总结

一、背景

java微服务程序使用consul作为服务注册中心,而consul集群本身的访问是需要acl token的,以增强服务调用的安全性。

本文试着总结下,有哪些方法可以配置consul acl token,便于你根据具体的情况选择。

个人认为,没有最佳,只有更加建议,更适用于自身的方案。

二、设计方案

1、k8s内部的Secret

建议方案,也是本文重点阐述的一种方案。

对于敏感数据,建议使用Secret或外部秘密管理工具,并结合适当的RBAC策略来限制对这些敏感信息的访问。

2、命令行参数

在某些情况下,您可以在启动容器时通过命令行参数传递ACL Token。这种方法适用于Token不需要频繁更改,且可以通过其他安全措施(如网络隔离)来保护的场景。

consul_acl_token=xxxx-xx-xx-xxxxjava -Dspring.cloud.consul.config.acl-token=$consul_acl_token -Dspring.cloud.consul.discovery.acl-token=$consul_acl_token -Xms${Xms} -Xmx${Xmx} -jar xxx.jar

在制作docker image的时候,把acl token赋值给应用程序。

3、环境变量

在deployment.yaml文件中,显式赋值给应用程序。
见下示例:

      containers:- name: {{ .Values.appName }}env:- name: spring.cloud.consul.config.acl-tokenvalue: 'xxxx-xx-xx-xxxx'- name: spring.cloud.consul.discovery.acl-tokenvalue: 'xxxx-xx-xx-xxxx'- name: APPNAMEvalue: {{ .Values.appName }}

这种方式,在yaml中就看到了环境变量的明文,很直观的同时,也恰好说明此方式不适合配置consul acl token。

4、ConfigMap

类似于Secret,ConfigMap可以用来存储非敏感的配置信息。虽然它不是为敏感数据设计的,但如果您的ACL Token不需要严格保密,您可以将其存储在ConfigMap中,并以环境变量的形式在Pod中引用。

5、文件系统挂载

如果您的集群环境支持,可以将包含ACL Token的文件挂载到Pod中。例如,如果您有一个安全的文件服务器,可以从该服务器挂载包含Token的文件到Pod的文件系统中。

6、外部Secrets管理工具

使用如HashiCorp Vault、AWS Secrets Manager、Azure Key Vault等外部秘密管理工具。这些工具提供了更高级的安全特性,如自动轮换、审计日志和更细粒度的访问控制。您可以将Consul ACL Token存储在这些工具中,并通过它们提供的Kubernetes插件或集成来在Pod中引用。

7、启动时从外部源获取

在Pod启动时,可以通过初始化容器(init container)从外部源(如HTTP API、数据库或其他服务)动态获取ACL Token。这种方法的优点是可以在运行时获取最新的Token,但需要确保外部源的安全性和可靠性。

每种方法都有其适用场景和安全考虑。在选择方法时,您应该考虑到您的安全要求、操作便利性以及Pod的运行环境。

三、secret对象

在这里插入图片描述

apiVersion: v1
kind: Secret
metadata:name: xx-registry-centernamespace: java-service
type: Opaque
data:consul-acl-token: xxxx-xx-xx-xxxx

在这里插入图片描述

四、deployment.yaml

在环境变量中读取secret,然后赋值到应用程序的环境变量里。

      containers:- env:- name: CONSUL_ACL_TOKENvalueFrom:secretKeyRef:name: xx-registry-centerkey: consul-acl-token- name: spring.cloud.consul.config.acl-tokenvalue: $(CONSUL_ACL_TOKEN)- name: spring.cloud.consul.discovery.acl-tokenvalue: $(CONSUL_ACL_TOKEN)

在这里插入图片描述
在这里,你看到的不再是明文了,大大提高了安全性。

在“配置管理”–》“保密字典”专门管理consul acl token,集中管理与维护,不再是之前的散落状态,提高了可维护性。

五、总结

环境变量这么整下来,到底应该去哪看呢?

当进入pod容器,ps进程也看不到。

只有输入env | grep consul才能看到应用程序的环境变量。
在这里插入图片描述
好了,本文就总结到这里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wu-framework-parent 项目明细

wu-framework-parent 介绍 springboot 版本3.2.1 wu-framework-parent 是一款由Java语言开发的框架,目标不写代码但是却能完成功能。 框架涵盖无赖ORM( wu-database-lazy-starter)、仿生组件 、easy框架系列【Easy-Excel、easy-listener、easy-upsert】 授权框架(…

统计分析笔记2

文章目录 p-values定义什么是零假设?P值到底是什么?如何计算P值?P值与统计显著性报告P值在使用P值时的谨慎 p-values 定义 P值是从统计检验中计算出的一个数值,描述了如果零假设为真,你发现一组特定观察结果的可能性…

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载3D model 最简实例(十三)

文章目录 前言一、3D model 文件介绍1. 3d model 介绍1.1 如何获取3d model 文件1.2 3d model 的文件格式1.3 obj模型数据格式2. 3d 立方体 model 实例——cube.obj二、Assimp 介绍1. Assimp 简介2.ubuntu 上安装libassimp3. 使用Assimp 解析 cube.obj 文件3.1 assimp_load_cub…

【机器人最短路径规划问题(栅格地图)】基于遗传算法求解

基于遗传算法求解机器人最短路径规划问题(栅格地图)的仿真结果 仿真结果: 路径长度的变化曲线: 遗传算法优化后的机器人避障路径:

PHP服务端如何进行苹果登录的验证

一、材料准备 1、P8文件:苹果后台生成证书那里的key那里生成,这个文件只可以下载一次,保存好 2、生成JWT token 的脚本 二、脚本siwa.rb #!/usr/bin/env rubyrequire jwt require openssl require optparseoptions {}OptionParser.new d…

Android T 远程动画显示流程其三——桌面侧动画启动流程(更新中)

接着前文分析Android T 远程动画显示流程其二 我们通过IRemoteAnimationRunner跨进程通信从系统进程来到了桌面进程,这里是真正动画播放的逻辑。 进入桌面进程启动动画 跨进程通信,实现IRemoteAnimationRunner 代码路径:frameworks/base/p…

华为ipv6 over ipv4 GRE隧道配置

思路: PC1访问PC2时,会先构造源ipv6为2001:1::2,目的IPV6为2001:2::2的ipv6报文,然后查看PC1的路由表,发送到R1,r1接收后,以目的IPV6地址2001:2::2查询IPV6路由表,出接口为tun0/0/0…

SpringMVC 学习(十)之异常处理

目录 1 异常处理介绍 2 通过 SimpleMappingExceptionResolver 实现 3 通过接口 HandlerExceptionResolver 实现 4 通过 ExceptionHandler 注解实现(推荐) 1 异常处理介绍 在 SpringMVC中,异常处理器(Exceptio…

CGI程序与ShellShock漏洞

CGI是什么? CGI(通用网关接口,Common Gateway Interface)程序是一种用于在Web服务器上执行动态内容的技术。与服务器上普通的后端代码相比,CGI程序有几个区别: 执行环境: CGI程序在服务器上作为…

Gradio Dataframe 学习笔记

Gradio Dataframe 学习笔记 0. 简介1. 使用场景2. 测试数据3. 学习代码4. 更多功能5. 学习资源6. 总结 0. 简介 Gradio是一个用于构建交互式机器学习界面的Python库。它可以轻松创建各种类型的界面,包括用于数据可视化和探索的界面。 Gradio Dataframe 组件是 Gra…

大数据分析师常用函数

常用函数 当进行大数据分析时,SQL中的函数非常丰富,以下是更详细的展开: 窗口函数 (Window Functions): ROW_NUMBER(): 为结果集中的每一行分配一个唯一的整数,用于排序。RANK(): 为结果集中的每一行分配一个排名,相同值会有相同的排名,但会跳过相同排名数量。DENSE_RAN…

处理异常(Exception)

1、什么是异常 在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;你要读取数据库的数据&am…

2024牛客寒假算法基础集训营1(补题)

文章目录 ABCDEFGHIJKL A n的范围很小暴力直接 O ( n 3 ) O(n^3) O(n3)直接做就行。 我还傻的统计了一下前后缀&#xff0c;不过怎么写都行这道题。 #include <bits/stdc.h> #define int long long #define rep(i,a,b) for(int i (a); i < (b); i) #define fep(i,…

【appium】App类型、页面元素|UiAutomator与appium|App元素定位

目录 一、App前端基础知识 1、App类型划分 2、App类型对比 3、App页面元素 App页面元素分为布局和控件两种 常见布局&#xff1a; 常见控件&#xff1a;定位软件&#xff1a;appium和sdk自带的uiautomatorviewer都可以定位 二、App元素定位 1、id定位 2、text定位 3…

【Java EE初阶二十六】简单的表白墙(二)

2. 后端服务器部分 2.1 服务器分析 2.2 代码编写 2.2.2 前端发起一个ajax请求 2.2.3 服务器读取上述请求,并计算出响应 服务器需要使用 jackson 读取到前端这里的数据,并且进行解析&#xff1a; 代码运行图&#xff1a; 2.2.4 回到前端代码&#xff0c;处理服务器返回的响应…

springboot/ssm宠物领养救助平台Java流浪动物救助管理系统web

springboot/ssm宠物领养救助平台Java流浪动物救助管理系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;…

from tensorflow.keras.layers import Dense,Flatten,Input报错无法引用

from tensorflow.keras.layers import Dense,Flatten,Input 打印一下路径&#xff1a; import tensorflow as tf import keras print(tf.__path__) print(keras.__path__) [E:\\开发工具\\pythonProject\\studyLL\\venv\\lib\\site-packages\\keras\\api\\_v2, E:\\开发工具\\…

经典逻辑题--鞋子的颜色

关注我&#xff0c;持续分享逻辑思维&管理思维&#xff1b; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导&#xff1b;欢迎加入AI架构师论坛 有意找工作的同学&#xff0c;请参考博主的原创&#xff1a;《面试官心得--面试前应该如何准备》&#xff0c;《面试官心…

02点亮一个LED

书接上回 上回讲到创建一个示例工程 今天讲如何实现LED的点亮 点亮一个led 所需代码 参考来源网络 延时函数参考&#xff1a; Delay.c #include "stm32f10x.h"/*** brief 微秒级延时* param xus 延时时长&#xff0c;范围&#xff1a;0~233015* retval 无*/ vo…

Python 实现Excel自动化办公(下)

上一讲我们讲到了Python 针对Excel 里面的特殊数据处理以及各种数据统计&#xff0c;本讲我们将引入Pandas 这个第三方库来实现数据的统计&#xff0c;只要一个方法就可以统计到上一讲的数据统计内容&#xff0c;本讲也会扩展讲讲Pandas所涉及到的相关使用方法。 统计输出 imp…