2017年3月15日星期三

OpenShift_064:如何访问私有 git 仓库?

环境:OCP 3.4

注意,本文步骤尚未实验证实,因为没有私有 git 仓库,等我用 Gogs 搭建一个私有 git 仓库后,再进行细节验证。

大多数 git 仓库都允许免认证 clone,但私有 git 仓库需要认证通过才可以 clone。

1. 创建应用
oc new-app openshift/php~git@github.com:christianh814/php-example-ose3.git
输出如下:

查看 build 日志,发现有错,原因是没有权限 clone 代码。
oc build-logs php-example-ose3-1
输出如下:

2. 生成一个 rsa 公钥/私钥对
ssh-keygen -t rsa -C “maping930883@hotmail.com"
注意不要覆盖 ~/.ssh/ 目录下已有的 id_rsa 和 id_rsa.pub 文件。

3. 把公钥 id_rsa.pub 文件内容复制粘贴到你的 git 仓库账号设置中

4. 根据私钥 id_rsa 文件创建 secret:scmsecret
oc secrets new scmsecret ssh-privatekey=$HOME/.ssh/id_rsa
输出如下:
secret/scmsecret
 
5. 把 secret 增加到 builder sa 中,这样 builder sa 可以克隆源代码
对于 OpenShift 3.2,使用
oc secrets add serviceaccount/builder secrets/scmsecret
对于 OpenShift 3.3,使用
oc secrets link builder scmsecret
 
6. 把 secret 添加到 buildConfig 中
oc patch buildConfig php-example-ose3 -p '{"spec":{"source":{"sourceSecret":{"name":"scmsecret"}}}}'
输出如下:

确认 bc 确实添加了 secret
oc get bc/php-example-ose3 -o json
输出如下:

7. 再次 build 应用,这次成功了
oc start-build php-example-ose3

8. 创建 route
oc expose svc/php-example-ose3

参考文献:
1. https://blog.openshift.com/deploying-from-private-git-repositories/
2. https://blog.openshift.com/using-ssh-key-for-s2i-builds/
3. https://docs.openshift.com/online/dev_guide/builds/index.html#ssh-key-authentication

没有评论: