はじめに
Cloudflare Serverless RegistryはCloudflare WorkersとR2ストレージをベースにしたサーバーレスコンテナレジストリです。イメージのプッシュとプルをサポートし、ユーザー名パスワードと公開鍵ベースのJWT認証を提供する。このプロジェクトはデプロイが簡単で、Docker操作と互換性があり、サーバーレス環境でのコンテナイメージの管理に適している。いくつかの制限はあるが、Serverless Registryは開発者に軽量でスケーラブルなソリューションを提供する。
機能一覧
- ミラープッシュ&プルサポート
- ユーザー名パスワードとJWT認証を提供する
- Docker互換の操作
- 他のレジストリへのフォールバックのサポート
- 導入と管理が容易
ヘルプの使用
インストールと展開
- 依存関係のインストールpnpm を使ってすべての依存関係をインストールしてください(他のパッケージマネージャーでも動作しますが、pnpm のみがサポートされています)。
$ pnpm install
- ラングラーファイルの準備サンプルファイルをコピーして設定する。
$ cp wrangler.toml.example wrangler.toml
- R2ストレージバケットの設定R2ストレージバケットを作成する。
$ npx wrangler --env production r2 bucket create r2-registry
- wrangler.tomlの設定R2 ストレージバケットの設定を wrangler.toml ファイルに追加する。
r2_buckets = [ { binding = "REGISTRY", bucket_name = "r2-registry" } ]
- 配備レジストリレジストリを本番環境にデプロイする。
$ npx wrangler deploy --env production
ユーザー名とパスワードによる認証
- ユーザー名とパスワードの設定ユーザー名とパスワードは秘密にしてください。
$ npx wrangler secret put USERNAME --env production $ npx wrangler secret put PASSWORD --env production
JWT認証
- JWT公開鍵を追加するパスワードまたはトークンを認証するために、base64エンコードされたJWT公開鍵を追加します。
$ npx wrangler secret put JWT_REGISTRY_TOKENS_PUBLIC_KEY --env production
Dockerによるイメージのプッシュとプル
- Dockerにログインするユーザー名とパスワードを使ってDockerにログインする。
export REGISTRY_URL=your-url-here echo $PASSWORD | docker login --username $USERNAME --password-stdin $REGISTRY_URL
- プッシュミラーイメージをレジストリにプッシュする。
docker pull ubuntu:latest docker tag ubuntu:latest $REGISTRY_URL/ubuntu:latest docker push $REGISTRY_URL/ubuntu:latest
- プルミラーレジストリからイメージを取り出します。
docker rmi ubuntu:latest docker pull $REGISTRY_URL/ubuntu:latest
コンフィギュレーション・プルバック
- フォールバック・レジストリの設定: wrangler.tomlファイルでフォールバック・レジストリを設定する。
[env.production] REGISTRIES_JSON = "[{ \"registry\": \"url-to-other-registry\", \"password_env\": \"REGISTRY_TOKEN\", \"username\": \"username-to-use\" }]"
- レジストリトークンの設定レジストリのトークンを機密扱いにする。
cat ./registry-service-credentials.json | base64 | wrangler --env production secrets put REGISTRY_TOKEN