GitLab on OpenShift origin v3.7 まとめ

GitLab

CentOS7上でOpenShift origin v3.7(All-In-One)にGitLabをインストールします。
まずは現状のOpenShift originのバージョンを確認します。
# oc version
oc v3.7.0+7ed6862
kubernetes v1.7.6+a08f5eeb62

この環境にGitLabを立ち上げます。

まずはGitLab用プロジェクトを作成します。
# oc login
Authentication required for https://127.0.0.1:8443 (openshift)
Username: tak
Password:
Login successful.

You don't have any projects. You can try to create a new project, by running

oc new-project
# oc new-project gitlab
Now using project "gitlab" on server "https://127.0.0.1:8443".

You can add applications to this project with the 'new-app' command. For example, try:

oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git

to build a new example application in Ruby.
# oc logout
Logged "tak" out on "https://127.0.0.1:8443"


次にGitLab用テンプレートファイルをダウンロードします。
ダウンロード先はGitLabのInstall GitLab》Other official installation methods》RedHat OpenShiftImport the template
# cd /tmp
# wget https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/docker/openshift-template.json

テンプレートをOpenShiftにインポートします。
# oc login -u system:admin
Logged into "https://127.0.0.1:8443" as "system:admin" using existing credentials.

You have access to the following projects and can switch between them with 'oc project ':

default
* gitlab
kube-public
kube-system
myproject
openshift
openshift-infra
openshift-node

Using project "gitlab".

もし選択されているプロジェクトが「gitlab」でない場合は以下のコマンドでカレントプロジェクトを変更します。
# oc project gitlab
Now using project "gitlab" on server "https://127.0.0.1:8443".

# oc create -f openshift-template.json -n openshift
template "gitlab-ce" created

万が一差し替える場合は以下のコマンドで差し替えます。
# oc replace -f openshift-template.json -n openshift
template "gitlab-ce" replaced

GitLabのイメージではroot権限が必要なようなのでanyuidの設定を行います。
# oc adm policy add-scc-to-user anyuid system:serviceaccount:gitlab:gitlab-ce-user
scc "anyuid" added to: ["system:serviceaccount:gitlab:gitlab-ce-user"]


次からはGUI操作に入ります。
一般ユーザでOpenShiftにログインすると
先ほどコマンドラインから登録したプロジェクト「gitlab」とテンプレート「gitlab-ce」が登録されていることがわかります。
GitLab100.png

テンプレート「gitlab-ce」をクリックし、表示されるダイアログに従い値を入力します。
Gitlab instance hostname ... gitlab.app.example.com (OpenShiftのrouting-suffixに「gitlab」を付けました)
GitLab Root User Password ... (8文字以上のパスワード)

GitLab101.png

GitLab102.png

GitLab103.png

GitLab104.png

次にOverviewで状況を確認します。
gitlab-ce-postgresql, #1とgitlab-ce-redis, #1は成功していると思いますが
gitlab-ce, #1は処理中だと思います。
GitLab105.png

急いでStrageを確認し「gitlab-ce-data」の場所を確認します。
ここではpv0006がそれにあたります。
GitLab106.png

このgitlab-ce-dataへの書き込み権限が無く、gitlab-ce, #1のビルドが失敗します。
なのでBuild中に急いで設定を変更します。
# cd /var/lib/origin/openshift.local.pv
# ls
pv0001 pv0008 pv0015 pv0022 pv0029 pv0036 pv0043 pv0050 pv0057 pv0064 pv0071 pv0078 pv0085 pv0092 pv0099
pv0002 pv0009 pv0016 pv0023 pv0030 pv0037 pv0044 pv0051 pv0058 pv0065 pv0072 pv0079 pv0086 pv0093 pv0100
pv0003 pv0010 pv0017 pv0024 pv0031 pv0038 pv0045 pv0052 pv0059 pv0066 pv0073 pv0080 pv0087 pv0094 registry
pv0004 pv0011 pv0018 pv0025 pv0032 pv0039 pv0046 pv0053 pv0060 pv0067 pv0074 pv0081 pv0088 pv0095
pv0005 pv0012 pv0019 pv0026 pv0033 pv0040 pv0047 pv0054 pv0061 pv0068 pv0075 pv0082 pv0089 pv0096
pv0006 pv0013 pv0020 pv0027 pv0034 pv0041 pv0048 pv0055 pv0062 pv0069 pv0076 pv0083 pv0090 pv0097
pv0007 pv0014 pv0021 pv0028 pv0035 pv0042 pv0049 pv0056 pv0063 pv0070 pv0077 pv0084 pv0091 pv0098
# chown chrony:root pv0006

うまくタイミングよくやればgitlab-ce, #1のビルドが成功します。
失敗した場合は#2としで再度ビルドしてください。
GitLab107.png
本来ならこのままOverviewのURLをクリックするとアクセスできるのですが
routing-suffixを変更したためにDNS登録しなければなりません。

まずはPodのIPアドレスを確認するため一般ユーザでログインします。
# oc login -u tak
Authentication required for https://127.0.0.1:8443 (openshift)
Username: tak
Password:
Login successful.

You have one project on this server: "gitlab"

Using project "gitlab".

次のコマンドでPodのIPアドレスを確認します。
# oc get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gitlab-ce 172.30.42.250 22/TCP,80/TCP 31m
gitlab-ce-postgresql 172.30.145.26 5432/TCP 31m
gitlab-ce-redis 172.30.221.174 6379/TCP 31m

はい。gitlab-ce本体のIPアドレス(172.30.42.250)が判りましたので
内部DNSに登録します。
/var/named/example.com
$TTL    86400
@ IN SOA example.com. root.example.com.(
2018010302 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS example.com.
@ IN A 192.168.253.136

ns IN A 192.168.253.136
os IN A 192.168.253.200
app IN A 192.168.253.200
gitlab.app IN A 172.30.42.250

内部DNSを再起動します。
# systemctl restart named-chroot


これでようやくGitLabにアクセスすることができました♪
GitLab108.png

関連記事