(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Openshift】Gitlabのインストールから初回ログインまでの流れ

スポンサーリンク

はじめに

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で接続すると以下のようにログイン画面が表示されます。

f:id:mtiit:20210728203914p:plain
ログイン画面

自動的に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

同パスワードでログインが可能です。

f:id:mtiit:20210728205718p:plain
ログイン成功

終わりに

CICDなどを行う際、自前でGithubライクな環境を構築する場合があります。
今回は最低限を手動で入れて動作確認をしましたが、同様のことに興味がある方は手順を参考にしてみてください。