Azure MinIO 게이트웨이를 사용하는 GitLab 차트

MinIO는 S3 호환 API를 노출하는 객체 저장소 서버이며, Azure Blob Storage로의 요청 프록시를 허용하는 게이트웨이 기능을 가지고 있습니다. 게이트웨이를 설정하기 위해 Azure의 Web App on Linux를 사용할 것입니다.

시작하기 전에 Azure CLI를 설치하고 (az login) 로그인한 것을 확인하세요. 이미 Resource group이 없다면 Resource group을 생성하세요:

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+..."
}

Web App on Linux에 MinIO 배포

먼저, 동일한 리소스 그룹에 App Service Plan을 생성해야 합니다.

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

minio/minio 도커 컨테이너로 구성된 웹 앱을 만들고, 지정한 이름은 웹 앱의 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"

# 시작 명령어
az webapp config set \
    --startup-file "gateway azure" \
    --name "gitlab-minio-app" \
    --resource-group "gitlab-azure-minio"

결론

이 게이트웨이를 s3 호환 클라이언트와 함께 사용할 수 있습니다. 웹 응용 프로그램 URL이 s3 endpoint이 되고, 저장소 계정 이름이 accesskey가 되며, 저장소 계정 키가 secretkey가 될 것입니다.

참고

이 안내서는 Alessandro Segala의 블로그 글을 보존하기 위해 적용되었습니다.