OpenShift 3:无法克隆专用BitBucket存储库

OpenShift 3:无法克隆专用BitBucket存储库,openshift,bitbucket,Openshift,Bitbucket,我正在尝试从OpenShift 2迁移到OpenShift 3。 我已经在OpenShift 3上创建了一个新的应用程序,但我正在努力将我的BitBucket私有git存储库克隆到它。(我对OpenShift 2没有问题) 我曾尝试在Build/Advanced选项中设置机密(SSH或基本身份验证),但运气不佳 以下是错误消息: Cloning "git@bitbucket.org:(myusername)/(myrepository).git" ... error: build error:

我正在尝试从OpenShift 2迁移到OpenShift 3。 我已经在OpenShift 3上创建了一个新的应用程序,但我正在努力将我的BitBucket私有git存储库克隆到它。(我对OpenShift 2没有问题)

我曾尝试在Build/Advanced选项中设置机密(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.

如果从命令行工作,步骤如下:

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
,然后粘贴到公钥文件的内容中。在这种情况下,
在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'
oc new-app httpd~git@bitbucket.org:yourusername/private-repo.git --name mysite
这里非常重要的是URI的形式。在BitBucket web界面中,它将显示为:

git@bitbucket.org:yourusername/private-repo.git
不要用那个。这里需要使用URI的SSH形式

6) 然后,我们可以从私有Git存储库部署应用程序

oc annotate secret/repo-at-bitbucket \
    'build.openshift.io/source-secret-match-uri-1=ssh://bitbucket.org/yourusername/private-repo.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
服务帐户

oc secrets link builder repo-at-bitbucket
请注意,如果OpenShift实例之间有防火墙,并且BitBucket和SSH连接被阻止,那么这将不起作用。在这种情况下,您需要退回到使用HTTP基本身份验证通过SSH连接使用个人访问令牌(应用程序密码)


这些细节现在可以通过以下博客文章系列更好地解释:


您是说您正在使用私有BitBucket存储库吗?如果是,您采取了哪些步骤在BitBucket中注册存储库SSH密钥,创建
sshauth
机密,允许
builder
服务帐户访问该机密,然后配置您的构建以将其用于该存储库?是的,这是一个私有存储库。我已经在source secretAs中设置了BitBucket SSH密钥,您可以列出您执行的步骤吗?您是否使用
ssh-keygen
创建了新的存储库ssh密钥?您是否在BitBucket的私有存储库中将密钥的公共部分注册为访问密钥?您是否使用
oc secrets new sshauth
在OpenShift中创建了一个秘密?您是否允许
builder
通过运行
oc secrets链接来使用机密?那么,您是如何编辑生成配置以使用源密码的?或者你试过通过网络控制台来设置它吗?更多的细节将有助于理解您可能错过了什么。FWIW。我正在写一篇关于如何在OpenShift中使用私有Git存储库的博客文章系列。我已经为GitHub和GitLab写了文章,并将在新的一周开始为BitBucket写文章。这些帖子将在未来几周内提供。如果您从“机密”菜单创建了“机密”,您是否选择了链接到服务帐户的选项,然后选择了
builder
。如果没有,请运行
oc secrets链接生成器yoursecretname