0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ceph Object Storage を OpenShift の image registry (docker-registry) のバックエンドに使う

Last updated at Posted at 2018-07-19

こちらの記事「Ceph Object Storage を docker-registry (docker-distribution) の バックエンドに使う」で使った設定と同様のものを使って、OpenShift上のdocker-registryのバックエンドにCephを使っていきたいと思います。

docker-registryの設定ファイル変更

すでにデフォルト状態のdocker-registry podがデプロイされていることを前提にしています。デプロイされている pod から /config.yml をローカルにコピーします。

# oc cp docker-registry-N-XXXXX:/config.yml  .

ローカルで編集します。storage以下のfilesystem:swift:の設定に変更するだけです。

# vim config.yml

BEFORE:

storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /registry

AFTER:

storage:
  cache:
    blobdescriptor: inmemory
  swift:
    username: nak3:swift
    password: testsecret
    authurl: http://knakayam-ceph-c2.example.com/auth/v1.0
    insecureskipverify: false
    container: docker-registry
    rootdirectory: /registry

authurlやusernameの設定は、こちらの記事「Ceph Object Storage を docker-registry (docker-distribution) の バックエンドに使う」で使った設定をそのまま使っています。それほど大変ではありませんし、初めはローカルのdocker-distributionで検証して設定が正しいことを確認しておくのが良いと思います。

更新した config.yml を docker-registry で利用する

更新した config.yml は、configmapを使って、docker-registryにmountさせます。docker-registryのDeploymentConfigには、環境変数も用意されているので、以下の3つのコマンドで変更は可能です。

# oc create configmap registry-config --from-file=config.yml 
# oc volume dc/docker-registry --add --type=configmap     --configmap-name=registry-config -m /etc/docker/registry/
# oc set env dc/docker-registry REGISTRY_CONFIGURATION_PATH=/etc/docker/registry/config.yml

DeploymentConfigを更新すると、デフォルトで ConfigChange で デプロイがトリガーされる設定されているので、podの再デプロイがはしります。Running状態になったことを確認してください。

# oc get pod
NAME                       READY     STATUS    RESTARTS   AGE
docker-registry-4-88bg6    1/1       Running   5          1m

image を push して検証する

バックエンドストレージにCeph Object Storageを使うようになった、docker-registryにimageをpushしてテストしてみましょう。

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

ビルド pod のログを見て、push が成功することを確認しましょう。

# oc logs ruby-ex-1-build -f
Pushing image docker-registry.default.svc:5000/demo/ruby-ex:latest ...
Pushed 0/10 layers, 10% complete
Pushed 1/10 layers, 13% complete
Pushed 2/10 layers, 23% complete
Pushed 3/10 layers, 32% complete
Pushed 4/10 layers, 41% complete
Pushed 5/10 layers, 55% complete
Pushed 6/10 layers, 64% complete
Pushed 7/10 layers, 76% complete
Pushed 8/10 layers, 83% complete
Pushed 8/10 layers, 97% complete
Pushed 9/10 layers, 99% complete
Pushed 10/10 layers, 100% complete
Push successful

(おまけ) Ceph 側のobjectを覗いてみる

swift コマンドを使ってpushされた image が Ceph ストレージにあることを確認してみます。demoはプロジェクト名で、その後ろにイメージ名と一緒に保存されていることがわかります。

# swift -V 1.0 -A http://knakayam-ceph-c2.example.com/auth/v1 -U nak3:swift  -K testsecret list docker-registry

 ... 略 ...

files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/296548fd899888385195c38cd1b5f3fa6443abe35c4169de2fdb104f70007afe/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/3198ba1a52956d97ff53912cfbd20cc333fef02bb0bf0dabf32659af1ea6d272/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/469cfcc7a4b3947a4fa549c68cf4f8570be53779725f0c19f3d33d1520b08db0/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/46db36153229f0c3ccba1a4e75169c8d20db2d17aa46c7cfd8877a0357a72e39/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/575bbd9ad94d0e03aad2a2d5b69a1e4d88f87d4d2c5c9ad86193c9027d2d61c9/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/9cde659b5fe388676ae34f3fa107e6ad00e8573f3e4ea5aadef38c93f8a60e6f/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/a2c26223d84a4efc918e010f7de2b903c0aebc901b669be127e4d60ea5bb7f2b/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/a38d357764a3aa20c2241433436db6cc24ea898a7f3c0904d66ca2323f302123/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/d71b2d9b1cd31f28ce83322703f7ab706a35255bbcd419a3e95c2e895bd5f681/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/e11c8e053fb5d1761f80fbfe7369765ecf2942fb2d975d3dd1d2792fcd8cabbd/link
files/docker/registry/v2/repositories/demo/ruby-ex/_layers/sha256/f55f016bb97cae4fab16eefa5f65b85f3112ce9758614d3b308f4f55e280d9d3/link
files/docker/registry/v2/repositories/demo/ruby-ex/_manifests/revisions/sha256/4b132f5996ceefa09e5cfb1006451487e3e9e34b7edd58dd2de57bc07cc42199/link

今回は、docker-distributionを検証していたので、OpenShift上で利用することも簡単に終わってしまいました。docker-registryのバックエンドにCephオブジェクトストレージを使う手順でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?