【问题标题】:How to add external git to a running fabric ensemble如何将外部 git 添加到正在运行的结构集合中
【发布时间】:2021-02-22 21:15:46
【问题描述】:

我们有一个 fuse / fabric ensemble,我们希望使用外部 git,因为它有助于管理配置文件等。此外,我们想了解如何添加外部 git,以便我们可以将其应用到实际生产中,正如前面提到的那样。

Fuse 文档只展示了如何使用外部 git 创建新的 ensemble,但没有提及如何让现有的 git 使用它(尽管原则上它似乎并不难)。我们已经尝试过fabric:create --force,但它失败了(半成品配置文件等),我们设法以某种方式手动恢复它。

是否有一种已知的方法来移动现有的集合以使用外部 git(例如,停止一切、更改原始 url、启动,但是在哪里设置凭据?当然fabric:create 确实将配置存储在某处,所以它不仅是原始 url,或者在大量断开连接的情况下可能会丢失)?或者,有没有办法创建“新”集合并将所有现有容器“移动”到它?

【问题讨论】:

    标签: git config jbossfuse fabric8


    【解决方案1】:

    为了使用外部 git,您必须配置 io.fabric8.datastore PID,它是 default 配置文件的一部分(因此 - 可用于所有容器,因为所有配置文件都继承自 default)。

    因此,在您已经创建了您的集合 (fabric:create) 之后,您可以使用 Hawtio 控制台更改 io.fabric8.datastore PID(只需在 Hawtio 的 wiki 选项卡中导航到相关的 io.fabric8.datastore.properties)或使用如下命令:

    fabric:profile-edit --pid io.fabric8.datastore/gitRemoteUrl=https://github.com/my-org/my-repo.git default
    fabric:profile-edit --pid io.fabric8.datastore/gitRemoteUser=my-user default
    fabric:profile-edit --pid io.fabric8.datastore/gitRemotePassword=my-password default
    

    在 Hawtio 控制台中,您可以事务性地进行,避免部分更新io.fabric8.datastore PID。

    在切换 git 存储库之前,您必须将现有存储库推送到其他地方

    实际的 fabric Git 存储库 存储在 FUSE_HOME/data/git/local/fabric 中,因此您可以执行以下操作:

    cd /tmp
    git clone $FUSE_HOME/data/git/local/fabric/.git fabric-git
    cd fabric-git
    git remote add new-location https://github.com/my-org/my-repo.git
    git push new-location --all
    git push new-location --tags
    cd ..
    rm -rf fabric-git # as you no longer need it
    

    【讨论】:

    • 作品:) 非常准确的答案。
    • 我发现当您删除并重新创建容器时,它无法从远程 git 获取配置文件,因为凭据存储在 io.fabric.datastore 的这些配置文件中。我知道的最短技巧是停止容器,注释掉默认配置文件中的所有 io.fabric.datastore 属性,启动容器(它将从其他容器之一获取配置文件),然后恢复 io.fabric.datastore 属性(现在容器可以访问到凭据,并且可以开始与远程同步,直到它再次被删除)。有什么想法吗?
    【解决方案2】:

    看起来克隆包含所有分支和标签的存储库的正确步骤是:

    cd /tmp
    git clone --bare $FUSE_HOME/data/git/local/fabric/.git fabric-git
    cd fabric-git
    git remote add new-location https://github.com/my-org/my-repo.git
    git push new-location --mirror
    cd ..
    rm -rf fabric-git # as you no longer need it
    

    (见https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/duplicating-a-repository

    【讨论】:

    • 指 Grzegorz 的回答。
    【解决方案3】:

    我已经实现了this,它似乎工作正常。它解决了我的问题(请参阅我在 Grzegorz 答案中的评论),即新创建的容器无法从远程 git 存储库下载配置文件,因为 git 凭据存储在这些配置文件中(即默认配置文件中)。

    这个想法是将与远程 git 的通信限制在父容器中。这些你不会重新创建,在我的情况下,它们是一个整体。

    通过将 io.fabric8.datastore.propertiesfabric-git-server 功能从默认配置文件移动到新的 fabric-git-master 配置文件(基于结构配置文件)来解决问题,该配置文件替换了父容器中的结构配置文件。

    这个动作是分几个步骤完成的,以保持整体的一致性。请务必在此更改之前注释掉 io.fabric8.datastore.properties 内容,并在所有到位后在最后启用它。

    【讨论】:

      猜你喜欢
      • 2016-09-03
      • 2020-01-16
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多