我尝试从OpenShift 2迁移到OpenShift 3。 我在OpenShift 3上创建了一个新的应用程序,但我正在努力克隆我的BitBucket私有git存储库。 (我对OpenShift 2没有任何问题。)
我尝试在构建/高级选项中设置机密(SSH或基本身份验证),但没有运气。
以下是错误消息:
Cloning "git@bitbucket.org:(myusername)/(myrepository).git" ... error:
build error: Host key verification failed. fatal: Could not read from
remote repository. Please make sure you have the correct access rights
and the repository exists.
答案 0 :(得分:10)
从命令行工作的步骤如下:
1)创建一个新的SSH密钥对以与存储库一起使用。这不能有密码。
ssh-keygen -C "openshift-source-builder/repo@bitbucket" -f repo-at-bitbucket -N ''
这将生成文件:
repo-at-bitbucket
repo-at-bitbucket.pub
是私人和公钥文件。
2)转到BitBucket上存储库的设置 - >访问密钥,选择添加密钥,然后在弹出窗口中输入密钥名称openshift-source-builder
并粘贴公钥文件的内容。在这种情况下repo-at-bitbucket.pub
。单击弹出窗口中的添加密钥确认创建。
3)通过运行以下命令在OpenShift中为密钥创建一个秘密:
oc secrets new-sshauth repo-at-bitbucket --ssh-privatekey=repo-at-bitbucket
4)允许从builder
服务帐户访问该密码。
oc secrets link builder repo-at-bitbucket
5)为了让OpenShift知道这个特定私有Git存储库的秘密并自动使用它,请使用存储库的SSH URI注释该秘密。
oc annotate secret/repo-at-bitbucket \
'build.openshift.io/source-secret-match-uri-1=ssh://bitbucket.org/yourusername/private-repo.git'
这里非常重要的是URI的形式。在BitBucket Web界面中,它将显示为:
git@bitbucket.org:yourusername/private-repo.git
不要使用它。您需要在此处使用URI的SSH形式。
6)然后我们可以从私有Git存储库部署应用程序。
oc new-app httpd~git@bitbucket.org:yourusername/private-repo.git --name mysite
好的是在这里使用git@bitbucket.org:yourusername/private-repo.git
,或者也可以使用URI的SSH形式。
您也可以从Web控制台执行此操作。重要的是,如果在Web控制台中单独创建密钥,以便在执行此操作时链接builder
服务帐户。如果在部署时创建源密码,则它将自动链接builder
服务帐户。
请注意,如果OpenShift实例在它与BitBucket之间有防火墙且SSH连接被阻止,则无法使用。在这种情况下,您需要使用HTTP基本身份验证通过SSH连接回退使用个人访问令牌(应用程序密码)。
这些细节现在可以通过以下开头的博客文章系列得到更好的解释: