Openshift:如何从私有仓库安装Python模块?

1 投票
2 回答
1148 浏览
提问于 2025-04-17 23:55

我想在OpenShift上安装Python包,但这些包存放在我自己的私有仓库里,托管在Bitbucket上。

我该如何为OpenShift创建一个SSH密钥,并且在安装包时让OpenShift使用这个密钥?(在Bitbucket上添加相应的公钥作为部署密钥之后)

我尝试过的:

我使用了ssh-keygen命令在~/.openshift_ssh/目录下创建了一个密钥。密钥确实创建了,但我不确定它是否被使用。

我还尝试把公钥添加到<jenkins_dir>/app-root/data/.ssh/jenkins_id_rsa.pub,但结果总是一样。在Jenkins构建作业的控制台输出中:

Doing git clone from ssh://git@bitbucket.org/jpimentel/zed.git to /tmp/easy_install-FpEKam/zed.git
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

有没有什么办法可以解决这个问题?

2 个回答

0

如果你想要部署自己写的Python模块,推荐的方法是在应用程序的源代码根目录下创建一个libs文件夹,然后把这些模块放到你的应用程序的git仓库里。OpenShift会自动识别并使用你的模块。

1

目前,OpenShift并没有提供一个简单的方法来解决这个问题。我建议开发者去看看 https://gondor.io/support/dependencies/,那里有一个有效的解决方案。

不过,我最终找到了一种可以接受的(至少对我来说是这样)解决办法,这个办法适用于可扩展和不可扩展的应用,步骤如下:

  1. 在你的代码库里创建一个 deploy/ 目录。

  2. 把你的私有部署密钥的副本放到这个目录里。

  3. 创建一个名为 deploy/wrapper.sh 的 bash 脚本,这个脚本会用提供的密钥运行 ssh:

    #!/bin/sh
    ssh -o StrictHostKeyChecking=no -i $OPENSHIFT_REPO_DIR/deploy/id_deploy $@
    

    注意要加上一个选项来禁用主机密钥检查;如果不加这个选项,克隆操作会失败。

  4. 在构建钩子中安装依赖(.openshift/action_hooks/build)。在我的情况下,我添加了类似这样的内容:

    echo "Cloning private repo..."
    source $VIRTUAL_ENV/bin/activate
    GIT_SSH=$OPENSHIFT_REPO_DIR/deploy/wrapper.sh pip install git+ssh://git@bitbucket.org/team/reponame.git#egg=reponame
    
  5. 把所有的更改提交并推送到 OpenShift。

  6. 就这样,成功了!

撰写回答