⛳
AzureのApp ServiceでPrivate Linkにした場合のWebhook URL
小ネタ
要するに以下の話なので、理解してる人は以降を読む必要はないかと思います
App Serviceを作って、パブリックアクセスを無効化、プライベートリンクを設定
App ServiceのソースをAzure Container RegistryのDockerコンテナにしていた場合、webhookが効かなくなります
=継続的deployが止まることになります
原因はAzure Container RegistryがWebhook URLをインターネット側に送信するためです
以下の通り、Azure Container RegistryのWebhooksの結果画面は403になっています
ですので、この構成で作る場合は、継続的デプロイのチェックはチェックしても効力がないです
ただwebhook urlが無くなったわけでなく、Vnet側からリクエストするすると機能する状態になっています
# vnet内部のVirtual Machinesからリクエストする例
$ curl -X POST 'https:// ユーザー名 : パスワード @ アプリ名 .scm.azurewebsites.net/api/registry/webhook'
{"OperationId":"c7043c3c-b7db-4658-8128-e65095e0d884","TrackingUrl":"https://xxxxxxxxxxx.scm.azurewebsites.net/api/logstream?filter=op:c7043c3c-b7db-4658-8128-e65095e0d884,volatile:false"}
プライベートDNSを作っているならプライベートリンク作成時に アプリ名 .scm というレコードも作成されています
そのため、内部からは叩く場合でもWebhook URLに変更は必要ありません
対策は、なんとかしてVPNだったりVNet統合が使えるアプリからwebhook URLにリクエストするかApp serviceを操作できるサービスプリンシパルを作ってdocker push -> app serviceの再起動をするのが良いのかもしれないです
Discussion