Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

成功关联上公开的命名空间,但是获取不到配置信息 #4769

Open
3 tasks
EachShow opened this issue Mar 3, 2023 · 6 comments
Open
3 tasks
Labels
discussion Categorizes issue as related to discussion

Comments

@EachShow
Copy link

EachShow commented Mar 3, 2023

描述bug

我在Apollo配置界面上,已经将UIMS应用的配置关联上公共的配置,所有配置都已经发布。UIMS已经默认引用了私有的Application命名空间
我在UIMS的Apollo配置节点中,如果不在Namespaces中将引用的公共配置的命名空间列出来,那么UIMS就拉取不到公共的配置信息。
只要在Namespaces中将引用的公共的命名空间列出来,UIMS应用就可以正常获取到公共的配置信息

复现

通过如下步骤可以复现:

可以正常接到公共配置的Section配置
"Apollo": {
"AppId": "UIMS",
"Env": "DEV",
"MetaServer": "http://localhost:8080/",
"Namespaces": [ "Dev.ElasticSearch", "Dev.RabbitMQ", "Dev.Swagger", "Dev.Wechat", "Dev.Redis" "Dev.MinIO", "Dev.NLog" ]
}

不能拉到公共配置的Section配置
"Apollo": {
"AppId": "UIMS",
"Env": "DEV",
"MetaServer": "http://localhost:8080/"
}

期望

配置信息在Apollo上,建立好关联继承关系后,UIMS不需要关注引用了哪些公共的配置命名空间,只需要引用自己私有的Application即可

截图

image

额外的细节和日志

  • 版本:2.10.0
  • 错误日志
  • 配置:
  • .net6
@nobodyiam
Copy link
Member

功能上就是这样设计的。

@EachShow
Copy link
Author

EachShow commented Mar 6, 2023

那这个关联主要是什么用呢?建议关联之后,就可以直接获取到继承过来的配置信息。

@nobodyiam
Copy link
Member

关联是为了可以覆盖公共配置,如果不需要覆盖就不需要主动关联

@EachShow
Copy link
Author

EachShow commented Mar 7, 2023

强烈建议,在Apollo配置中心上关联上公共的命名空间后,项目上就不需要再添加命名空间的配置信息了,直接继承所有关联的公共配置信息。
这样以来,整个配置中心的管理,跟项目配置就完全解耦了,项目打包啥的,就更简单了,后续都无须关注配置的调整。

@nobodyiam nobodyiam added the discussion Categorizes issue as related to discussion label Mar 9, 2023
@aisuhua
Copy link

aisuhua commented Oct 18, 2024

关联是为了可以覆盖公共配置,如果不需要覆盖就不需要主动关联

@nobodyiam 请问我关联只是为了继承,不做任何覆盖是否可以,或者说是否合适?。

image

上面截图中的 appid 是 cms,然后它关联了 TEST1.test 这个公共命名空间,
然后我没有覆盖 TEST1.test 任何配置,当我通过 API 获取 cms 的 TEST1.test 命名空间的配置时,我发现可以获取得到继承过来的配置。

GET http://10.0.0.45:8080/configs/cms/default/TEST1.test?ip=10.0.0.1
{
    "appId": "cms",
    "cluster": "default",
    "namespaceName": "TEST1.test",
    "configurations": {
        "username": "aaa",
        "password": "bbb"
    },
    "releaseKey": "20241018171124-b48891fe8dc429d5+20241018165327-fb4291fe8dc429d1"
}

如果我在 cms 的 TEST1.test 命名空间里覆盖了 username 为 111 时,再次获取值时,结果是 cms 的 TEST1.test 的配置 + 公共命名空间的 TEST1.test 配置合并的结果。

image

GET http://10.0.0.45:8080/configs/cms/default/TEST1.test?ip=10.0.0.1
{
    "appId": "cms",
    "cluster": "default",
    "namespaceName": "TEST1.test",
    "configurations": {
        "username": "111",
        "password": "bbb"
    },
    "releaseKey": "20241018172158-b48891fe8dc429d6+20241018165327-fb4291fe8dc429d1"
}

@nobodyiam
Copy link
Member

@nobodyiam 请问我关联只是为了继承,不做任何覆盖是否可以,或者说是否合适?。

可以但没有必要

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Categorizes issue as related to discussion
Projects
None yet
Development

No branches or pull requests

3 participants