S3 是AWS提供的存储服务,可以通过RestAPI进行访问,CEPH提供了一个GateWay API 来支持通过S3API来访问ceph
在OpenShift中支持S3,因此可以在openshift中通过S3接口访问ceph,本文目标是,通过S3 API 将openshift default registry数据保存在Ceph中
步骤
- 创建config.yaml 文件
version: 0.1
log:
level: debug
http:
addr: :5000
storage:
cache:
blobdescriptor: inmemory
s3:
accesskey: awsaccesskey
secretkey: awssecretkey
region: us-west-1
regionendpoint: http://myobjects.local
bucket: bucketname
encrypt: true
keyid: mykeyid
secure: true
v4auth: false
chunksize: 5242880
rootdirectory: /s3/object/name/prefix
auth:
openshift:
realm: openshift
middleware:
registry:
- name: openshift
repository:
- name: openshift
- 创建一个名为registry-config 的secret
oc secrets new registry-config config.yml=./config.yaml
- 将 registry-config 作为一个volume添加到registry 的DC中
此时会将config.yaml 文件挂载在 /etc/docker/registry 目录下
oc volume dc/docker-registry --add --type=secret \
--secret-name=registry-config -m /etc/docker/registry/
- 在dc中添加参数 REGISTRY_CONFIGURATION_PATH,使其使用新加的配置文件创建registry pod
oc set env dc/docker-registry \
REGISTRY_CONFIGURATION_PATH=/etc/docker/registry/config.yml
等registry 重启后即可正常使用
排查方案
- 要确保Ceph可以正常访问,可以通过浏览器访问Ceph bucket 验证
Reference:
https://docs.openshift.com/container-platform/3.3/install_config/registry/extended_registry_configuration.html#advanced-overriding-the-registry-configuration
https://docs.docker.com/registry/storage-drivers/s3/#parameters
网友评论