目前我的apollo部署在虚拟机非k8s环境,那么我经常部署在k8s下的应用pod能对接apollo吗?如果能对接apollo,那么在apollo界面实例列表里的明显只有ip字段,是不会变的?
[apolloconfig/apollo]k8s pod 对接非k8s环境apollo 疑问
回答
您的 Kubernetes(k8s)环境下的应用程序 pod 可以在非 k8s 环境的 Apollo 上进行配置。Apollo 通过KubernetesDiscoveryService
类处理来自 k8s pod 的连接。当请求一个服务实例时,Apollo 会使用预定义的映射(SERVICE_ID_TO_CONFIG_NAME
)来获取请求服务的配置名称。如果找到了请求的服务ID的配置名称,Apollo会从BizConfig
对象中检索此配置的值,该值是URL的分隔列表。然后,Apollo为每个URL创建一个ServiceDTO
对象,该对象包含服务ID,实例ID(服务ID和URL的组合)和主页URL。最后,Apollo返回这些ServiceDTO
对象的列表。如果未找到请求的服务ID的配置名称或配置值为空,Apollo将返回一个空列表。
关于Apollo如何处理实例的IP地址,Apollo通过使用属性文件来处理其配置管理系统中实例的IP地址。在提供的文件中apollo-env.properties
,每个环境(local,dev,fat,uat,lpt,pro)都有一个对应的.meta
属性,该属性设置为该环境的实例的URL。该URL包括实例的IP地址和端口号。
关于IP地址的变化问题,我找到了一个类似的已解决问题:k8s 集群外部客户端访问,Apollo 无法正确记录客户端ip。建议的解决方案是:在访问configservice时向HTTP请求添加'X-FORWARDED -FOR'头。这允许Apollo正确记录客户端IP。
只要网络通就可以
这取决于 pod 的生命周期
如果一个机里的多个pod同时访问apollo,pod出去的话如果是一个机ip的话,那apollo实例里面不是可以很多看到相同的ip吗?那怎么做灰度梯度呢?