springcloud-config 客户端启用服务发现client的情况下使用metadata中的username和password

部署运行你感兴趣的模型镜像

为了让spring admin 能正确获取到 spring config的actuator的信息,在eureka的metadata中添加了metadata.user.user metadata.user.password

eureka.instance.metadata-map.user.name=${spring.security.user.name}
eureka.instance.metadata-map.user.password=${spring.security.user.password}

但是其他config client 访问config service的时候依然需要显著的写明 账号,密码。这就不合理,遂断点查看源码,发现确实有相应的机制来提供 替换逻辑,具体代码如下org.springframework.cloud.config.client.DiscoveryClientConfigServiceBootstrapConfiguration.HeartbeatListener#refresh

private void refresh() {
			try {
				String serviceId = this.config.getDiscovery().getServiceId();
				List<String> listOfUrls = new ArrayList<>();
				List<ServiceInstance> serviceInstances = this.instanceProvider
						.getConfigServerInstances(serviceId);

				for (int i = 0; i < serviceInstances.size(); i++) {

					ServiceInstance server = serviceInstances.get(i);
					String url = getHomePage(server);

					if (server.getMetadata().containsKey("password")) {
						String user = server.getMetadata().get("user");
						user = user == null ? "user" : user;
						this.config.setUsername(user);
						String password = server.getMetadata().get("password");
						this.config.setPassword(password);
					}

					if (server.getMetadata().containsKey("configPath")) {
						String path = server.getMetadata().get("configPath");
						if (url.endsWith("/") && path.startsWith("/")) {
							url = url.substring(0, url.length() - 1);
						}
						url = url + path;
					}

					listOfUrls.add(url);
				}

				String[] uri = new String[listOfUrls.size()];
				uri = listOfUrls.toArray(uri);
				this.config.setUri(uri);

			}
			catch (Exception ex) {
				if (this.config.isFailFast()) {
					throw ex;
				}
				else {
					logger.warn("Could not locate configserver via discovery", ex);
				}
			}
		}

可以看到只要metadata中包含password就会启动对应的replace逻辑,但是我配置的metadata中的key值为 user.name user.password 晕死。难道要重复配置两次?按照对应的关键字 metadata 查询官方文档描述如下 discovery-first-bootstrap
在这里插入图片描述
不确定高版本的config client 是否处理过这个问题,不过目前最坏的情况也就是在config server配置中新增两个metadata的属性,回过头再验证下spring admin server是否支持这种识别方式
在这里插入图片描述
果然不行,先配置两种metadata先,后面有空再看看spring admin server是否提供配置指定metadata中使用的字段

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

#修改成自己的ip openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.80.144 openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:123456@manager.node openstack-config --set /etc/nova/nova.conf api auth_strategy keystone openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://manager.node:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers manager.node:11211 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova openstack-config --set /etc/nova/nova.conf keystone_authtoken password nv123456 openstack-config --set /etc/nova/nova.conf vnc enabled true openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip' openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://manager.node:6080/vnc_auto.html openstack-config --set /etc/nova/nova.conf glance api_servers http://manager.node:9292 openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp openstack-config --set /etc/nova/nova.conf placement region_name RegionOne openstack-config --set /etc/nova/nova.conf placement project_domain_name Default openstack-config --set /etc/nova/nova.conf placement project_name service openstack-config --set /etc/nova/nova.conf placement auth_type password openstack-config --set /etc/nova/nova.conf placement user_domain_name Default openstack-config --set /etc/nova/nova.conf placement auth_url http://manager.node:5000/v3 openstack-config --set /etc/nova/nova.conf placement username placement openstack-config --set /etc/nova/nova.conf placement password pm123456控制节点是manager.node,计算节点是master.node
最新发布
06-21
### 配置 OpenStack Nova 服务的相关参数 在 OpenStack 中,`openstack-config` 命令可以用来设置配置文件中的参数。以下是针对 `Nova` 服务的各个参数配置方法: #### 配置 `my_ip` 通过以下命令设置 Nova 的 IP 地址: ```bash openstack-config --set /etc/nova/nova.conf DEFAULT my_ip <your-ip-address> ``` 这将指定 Nova 使用的 IP 地址[^1]。 #### 集成 Neutron 启用 Neutron 并设置防火墙驱动程序: ```bash openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver ``` 上述命令启用了 Neutron,并禁用了防火墙功能[^3]。 #### 设置认证策略 启用的 API 认证策略可以通过以下命令进行配置: ```bash openstack-config --set /etc/nova/nova.conf api enabled_apis osapi_compute,metadata openstack-config --set /etc/nova/nova.conf api auth_strategy keystone ``` 这确保了仅允许经过 Keystone 认证的用户访问 Nova API[^4]。 #### 消息队列配置 设置消息队列的传输 URL: ```bash openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://<user>:<password>@<rabbitmq-host>:5672/ ``` 此命令定义了 RabbitMQ 的连接信息[^3]。 #### Keystone 认证令牌 配置 Keystone 认证令牌相关参数: ```bash openstack-config --set /etc/nova/nova.conf keystone_authtoken www_authenticate_uri http://<controller-ip>:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://<controller-ip>:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers <controller-ip>:11211 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova openstack-config --set /etc/nova/nova.conf keystone_authtoken password <nova-password> ``` 这些参数确保了 Nova 能够正确地与 Keystone 进行身份验证[^4]。 #### VNC 设置 配置 VNC 相关参数以支持远程控制台访问: ```bash openstack-config --set /etc/nova/nova.conf vnc enabled True openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address <compute-node-ip> openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://<controller-ip>:6080/vnc_auto.html ``` 这为计算节点上的虚拟机实例启用了 VNC 控制台访问[^1]。 #### Glance API 配置 设置 Glance API 的地址: ```bash openstack-config --set /etc/nova/nova.conf glance api_servers http://<controller-ip>:9292 ``` 此命令指定了 Glance API 的地址,以便 Nova 可以获取镜像信息。 #### 并发控制 配置并发控制参数以限制线程进程数量: ```bash openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp ``` 这设置了锁路径以避免多线程冲突[^2]。 #### Placement 服务配置 确保 Placement 服务被正确配置: ```bash openstack-config --set /etc/nova/nova.conf placement region_name RegionOne openstack-config --set /etc/nova/nova.conf placement project_domain_name Default openstack-config --set /etc/nova/nova.conf placement project_name service openstack-config --set /etc/nova/nova.conf placement auth_type password openstack-config --set /etc/nova/nova.conf placement auth_url http://<controller-ip>:5000/v3 openstack-config --set /etc/nova/nova.conf placement username placement openstack-config --set /etc/nova/nova.conf placement password <placement-password> ``` 这些参数确保了 Nova 能够与 Placement 服务交互以管理资源分配。 ### 示例代码 以下是一个完整的脚本示例,用于批量配置上述参数: ```bash #!/bin/bash # 定义变量 MY_IP="<your-ip-address>" RABBITMQ_USER="<user>" RABBITMQ_PASSWORD="<password>" RABBITMQ_HOST="<rabbitmq-host>" CONTROLLER_IP="<controller-ip>" NOVA_PASSWORD="<nova-password>" PLACEMENT_PASSWORD="<placement-password>" # 配置 my_ip openstack-config --set /etc/nova/nova.conf DEFAULT my_ip $MY_IP # 配置 Neutron openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver # 配置认证策略 openstack-config --set /etc/nova/nova.conf api enabled_apis osapi_compute,metadata openstack-config --set /etc/nova/nova.conf api auth_strategy keystone # 配置消息队列 openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://$RABBITMQ_USER:$RABBITMQ_PASSWORD@$RABBITMQ_HOST:5672/ # 配置 Keystone 认证令牌 openstack-config --set /etc/nova/nova.conf keystone_authtoken www_authenticate_uri http://$CONTROLLER_IP:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://$CONTROLLER_IP:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers $CONTROLLER_IP:11211 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova openstack-config --set /etc/nova/nova.conf keystone_authtoken password $NOVA_PASSWORD # 配置 VNC openstack-config --set /etc/nova/nova.conf vnc enabled True openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address $MY_IP openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://$CONTROLLER_IP:6080/vnc_auto.html # 配置 Glance API openstack-config --set /etc/nova/nova.conf glance api_servers http://$CONTROLLER_IP:9292 # 配置并发控制 openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp # 配置 Placement openstack-config --set /etc/nova/nova.conf placement region_name RegionOne openstack-config --set /etc/nova/nova.conf placement project_domain_name Default openstack-config --set /etc/nova/nova.conf placement project_name service openstack-config --set /etc/nova/nova.conf placement auth_type password openstack-config --set /etc/nova/nova.conf placement auth_url http://$CONTROLLER_IP:5000/v3 openstack-config --set /etc/nova/nova.conf placement username placement openstack-config --set /etc/nova/nova.conf placement password $PLACEMENT_PASSWORD ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值