Azure MinIOゲートウェイ

MinIOは、S3互換のAPIを公開するオブジェクトストレージサーバーで、Azure Blob Storageへのリクエストをプロキシするゲートウェイ機能を持っています。 ゲートウェイをセットアップするために、Linux上のAzureのWebアプリを利用します。

まず、Azure CLI をインストールし、ログインしていることを確認してください(az login)。まだリソースグループがない場合は、リソースグループの作成に進みます:

az group create --name "gitlab-azure-minio" --location "WestUS"

ストレージアカウント

リソースグループにストレージアカウントを作成します。ストレージアカウント名はグローバルに一意でなければなりません:

az storage account create \
    --name "gitlab-azure-minio-storage" \
    --kind BlobStorage \
    --sku Standard_LRS \
    --access-tier Cool \
    --resource-group "gitlab-azure-minio" \
    --location "WestUS"

ストレージアカウントのアカウントキーを取得します:

az storage account show-connection-string \
    --name "gitlab-azure-minio-storage" \
    --resource-group "gitlab-azure-minio"

出力はこのような形式でなければなりません:

{
    "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=gitlab-azure-minio-storage;AccountKey=h0tSyeTebs+..."
}

Linux上のWebアプリへのMinIOのデプロイ

まず、同じリソースグループにアプリサービスプランを作成する必要があります。

az appservice plan create \
    --name "gitlab-azure-minio-app-plan" \
    --is-linux \
    --sku B1 \
    --resource-group "gitlab-azure-minio" \
    --location "WestUS"

minio/minio Dockerコンテナで構成されたWebアプリを作成します。指定した名前はWebアプリのURLに使用されます:

az webapp create \
    --name "gitlab-minio-app" \
    --deployment-container-image-name "minio/minio" \
    --plan "gitlab-azure-minio-app-plan" \
    --resource-group "gitlab-azure-minio"

ウェブアプリはhttps://gitlab-minio-app.azurewebsites.netからアクセスできるはずです。

最後に、起動コマンドを設定し、ウェブアプリで使用するストレージアカウント名とキー(MINIO_ACCESS_KEYとMINIO_SECRET_KEY)を格納する環境変数を作成する必要があります。

az webapp config appsettings set \
    --settings "MINIO_ACCESS_KEY=gitlab-azure-minio-storage" "MINIO_SECRET_KEY=h0tSyeTebs+..." "PORT=9000" \
    --name "aleminio" \
    --resource-group "Minio"

# Startup command
az webapp config set \
    --startup-file "gateway azure" \
    --name "gitlab-minio-app" \
    --resource-group "gitlab-azure-minio"

結論

このゲートウェイはs3-compabilityのあるクライアントであれば、どのクライアントでも利用することができます。 ウェブアプリのURLはs3 endpoint、ストレージアカウント名はaccesskey、ストレージアカウントキーはsecretkeyとなります。

参考

このガイドは、Alessandro Segalaの同じトピックに関するブログ記事を後世に伝えるために改編したものです。