🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 | |
本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! | |
全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 | |
本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 | |
本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 | |
本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
在Docker中创建具有ACL权限控制的Consul集群可通过以下步骤实现:
1. 创建Consul容器(启用ACL)
# 创建Docker网络
docker network create consul-net
# 启动Consul Server(启用ACL)
docker run -d \
--name=consul-server \
--network=consul-net \
-p 8500:8500 \
-p 8600:8600/udp \
-v consul-data:/consul/data \
consul:latest agent -server \
-bootstrap-expect=1 \
-node=server-1 \
-client=0.0.0.0 \
-config-dir=/consul/config \
-datacenter=dc1 \
-enable-script-checks=true \
-ui
2. 配置ACL核心文件
在宿主机创建配置文件 consul-acl.hcl
:
acl = {
enabled = true
default_policy = "deny"
enable_token_persistence = true
tokens = {
initial_management = "your-root-token" # 替换为自定义管理token
}
}
挂载配置文件到容器:
docker run ... -v /path/to/config:/consul/config ...
3. 生成Bootstrap Token
# 进入容器
docker exec -it consul-server sh
# 生成Bootstrap Token(首次启用ACL时)
consul acl bootstrap
保存输出的 SecretID
(即root token)
4. 创建策略文件
创建策略文件 node-policy.hcl
:
node_prefix "" {
policy = "read"
}
service_prefix "" {
policy = "read"
}
创建策略:
consul acl policy create \
-name "node-read" \
-description "Read-only node access" \
-rules @node-policy.hcl
5. 生成客户端Token
# 创建客户端Token
consul acl token create \
-description "Client Token" \
-policy-name "node-read" \
-secret "your-client-token" # 自定义客户端token
6. 客户端连接(带Token)
docker run -d \
--name=consul-client \
--network=consul-net \
consul:latest agent -client \
-retry-join=consul-server \
-datacenter=dc1 \
-acl-token=your-client-token
7. 验证ACL
# 无Token访问会被拒绝
curl http://localhost:8500/v1/agent/members
# 使用Token访问
curl -H "X-Consul-Token: your-client-token" http://localhost:8500/v1/agent/members
8. 持久化配置建议
-
使用Docker Volume持久化数据:
-v consul-data:/consul/data \ -v consul-config:/consul/config \
-
通过环境变量传递Token:
-e CONSUL_HTTP_TOKEN=your-client-token
高级ACL配置示例
创建细粒度策略 web-service.hcl
:
service "web" {
policy = "write"
}
key_prefix "web/" {
policy = "read"
}
注意事项
- 安全警告:不要在生产环境使用
-bootstrap-expect=1
,建议3或5节点集群 - Token保护:通过
-config-dir
加载加密配置文件 - 网络加密:建议启用TLS通信
- ACL日志:查看审计日志
consul monitor -log-level=debug
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙