GitLabチャート使用時の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+..."
}

MinIOをLinux上のウェブアプリにデプロイします。

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

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_KEYMINIO_SECRET_KEYを作成する必要があります。

az webapp config appsettings set \
    --settings "MINIO_ACCESS_KEY=gitlab-azure-minio-storage" "MINIO_SECRET_KEY=h0tSyeTebs+..." "PORT=9000" \
    --name "gitlab-minio-app" \
    --resource-group "gitlab-azure-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の同じトピックに関するブログ記事を後世に伝えるために改編したものです。