はじめに
GitlabとはGitHubライクのGitリポジトリで自前でGit環境を用意する際に利用できるソフトウェアです。
公式サイトにはサーバやKubernetesに展開する手順が書かれていますが、Openshiftでは手順が存在しなかったので今回はOpenshift環境にデプロイし、rootユーザで初回ログインするまでの流れについて記載しました。
環境情報
- OpenShift Container Platform 4.5
- GitLab 14.1.0-ee .. EE
インストール
以下のYAMLを用意してレプリカ数1でDeployします。
spec: replicas: 1 selector: matchLabels: app: gitlab strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: gitlab spec: containers: - image: gitlab/gitlab-ee:latest imagePullPolicy: IfNotPresent name: gitlab ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/gitlab name: gitlab-volume subPath: config - mountPath: /var/log/gitlab name: gitlab-volume subPath: logs - mountPath: /var/opt/gitlab name: gitlab-volume subPath: data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - emptyDir: {} name: gitlab-volume
Openshiftの場合は起動処理の中で特権ユーザ以外で動かそうとするので
ln: failed to create symbolic link '/opt/gitlab/service/sshd': Permission denied
以下記事のようにServiceAccountを付与してrootでコンテナを起動させます。
Podが正常に起動すると、ブラウザからアクセスをするために以下でClusterIPを付与して
$ kubectl expose deployment gitlab --name=gitlabsvc service/gitlabsvc exposed
そのIPを外部に公開します。
$ oc expose service gitlabsvc route.route.openshift.io/gitlabsvc exposed
初回ログイン
Routeで公開されたURLにhttpで接続すると以下のようにログイン画面が表示されます。
自動的にrootアカウントやtestアカウントが存在していますがパスワードが不明なので該当のPodに接続を行い
$ oc exec -it gitlab-79b6b88b95-ctk9z sh
Pod内でgitlab-rails
にて対話モードに入ります。
# gitlab-rails console -e production -------------------------------------------------------------------------------- Ruby: ruby 2.7.2p137 (...) [x86_64-linux] GitLab: 14.1.0-ee (e4567ef4362) EE GitLab Shell: 13.19.0 PostgreSQL: 12.6 -------------------------------------------------------------------------------- Loading production environment (Rails 6.1.3.2) irb(main):001:0>
ここで以下のようにデフォルトで存在するユーザID1のrootのパスワードを変更すると
irb(main):001:0> user = User.find(1) irb(main):002:0> user.password = 'passw0rd' => "passw0rd" irb(main):003:0> user.password_confirmation='passw0rd' => "passw0rd" irb(main):004:0> user.save! Enqueued ActionMailer::MailDeliveryJob (Job ID: ...) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", {:args=>[#<GlobalID:... @uri=#<URI::GID gid://gitlab/User/1>>]} => true
同パスワードでログインが可能です。
終わりに
CICDなどを行う際、自前でGithubライクな環境を構築する場合があります。
今回は最低限を手動で入れて動作確認をしましたが、同様のことに興味がある方は手順を参考にしてみてください。