AzureでAppServiceのアプリケーション設定にあるデプロイスロットについて
1. 試すパターン
Azure
の App Service
にある「構成」で設定出来る「アプリケーション設定」の項目で「デプロイスロットの設定」チェックの有無の挙動がよくわからなかったので実際に試してみました。
以下の4パターンに対して、それぞれ「デプロイスロットの設定」チェックありと無しの合計8パターンを確認します。
-
運用側にしかない設定
-
デプロイスロット側にしかない設定
-
運用、デプロイスロット両方にあり値が同じ設定
-
運用、デプロイスロット両方にあり値が違う設定
2. 最初の状態
AppServiceの管理コンソールのアプリケション設定のキャプチャーです。
パターン毎にまとめると以下のなります。
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A001 |
A001 |
なし |
|||
A002 |
A002 |
あり |
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A011 |
A011 |
なし |
|||
A012 |
A012 |
あり |
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A101 |
A101 |
なし |
A101 |
A101 |
なし |
A102 |
A102 |
あり |
A102 |
A102 |
あり |
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A103 |
AAA |
なし |
A103 |
CCC |
なし |
A104 |
ABB |
あり |
A104 |
DDD |
あり |
3. スワップする際の構成変更
スワップ実行時に表示される構成変更の表示は以下になります。
4. スワップ後
AppServiceの管理コンソールのアプリケション設定のキャプチャーです。
パターン毎にまとめると次のようになります。
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A001 |
A001 |
なし |
|||
A002 |
A002 |
あり |
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A011 |
A011 |
なし |
|||
A012 |
A012 |
なし |
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A101 |
A101 |
なし |
A101 |
A101 |
なし |
A102 |
A102 |
あり |
A102 |
A102 |
あり |
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A103 |
CCC |
なし |
A103 |
AAA |
なし |
A104 |
BBB |
あり |
A104 |
DDD |
あり |
5. さらにスワップ
もう一度スワップを行い最初の状態に戻したときに元に戻るのかを見てみます。
運用側 | スロット側 | ||||
---|---|---|---|---|---|
名前 |
値 |
デプロイスロットの設定 |
名前 |
値 |
デプロイスロットの設定 |
A001 |
A001 |
なし |
|||
A002 |
A002 |
あり |
|||
A011 |
A011 |
なし |
|||
A012 |
A012 |
なし |
|||
A101 |
A101 |
なし |
A101 |
A101 |
なし |
A102 |
A102 |
あり |
A102 |
A102 |
あり |
A103 |
AAA |
なし |
A103 |
CCC |
なし |
A104 |
ABB |
あり |
A104 |
DDD |
あり |
*1
最初にデプロイスロット側だけに「デプロイスロットの設定」チェックありで追加した設定が、「デプロイスロットの設定」チェックが外れてしまい、元に戻りませんでした。
6. 設定例
以上をふまえて具体的な例を考えてみました。
6.1. 例1
名前 : HOST
で運用は常に www.example.com
、デプロイスロットは常に stg.example.com
としたい
名前 | 値 | デプロイスロットの設定 | |
---|---|---|---|
運用 |
HOST |
www.example.com |
あり |
デプロイスロット |
HOST |
stg.example.com |
あり |
6.2. 例2
名前 : ROLE
で運用は常に production
、デプロイスロットには不要の場合
名前 | 値 | デプロイスロットの設定 | |
---|---|---|---|
運用 |
ROLE |
production |
あり |
または
名前 | 値 | デプロイスロットの設定 | |
---|---|---|---|
運用 |
ROLE |
production |
あり |
デプロイスロット |
ROLE |
|
あり |
*1
何か無効な値を設定する(空文字など)
6.3. 例3
名前 : ROLE
でデプロイスロットは常に deployslot
、運用には不要の場合
名前 | 値 | デプロイスロットの設定 | |
---|---|---|---|
運用 |
ROLE |
|
あり |
デプロイスロット |
ROLE |
deployslot |
あり |
*1
何か無効な値を設定する(空文字など)
純粋にデプロイスロット側だけに存在するような設定にすることが出来ないので、運用には何か無効な値を設定する。 |
6.4. 例4
名前 : INITROLE
で最初にデプロイスロットとして用意したマシンは deploy
を維持、最初に運用として用意したマシンは run
を維持する場合
※無理矢理な例ですが、良い例が思いつきませんでした |
名前 | 値 | デプロイスロットの設定 | |
---|---|---|---|
運用 |
INITROLE |
run |
なし |
デプロイスロット |
INITROLE |
deploy |
なし |
7. まとめ
-
「デプロイスロットの設定」なしの設定は、マシンに紐付く設定
-
スワップにより、マシンAとマシンBの役割(運用、デプロイスロットとか)が入れ替わってもそのまま、マシンAとマシンBの設定のまま維持される
-
-
「デプロイスロットの設定」ありの設定は、役割に紐付く設定
-
スワップにより、マシンAとマシンBの役割(運用、デプロイスロットとか)が入れ替わわると、マシンAとマシンBの設定も入れ替わる
-
ただし、デプロイスロット側のみにある設定で「デプロイスロットの設定」チェックは意味をなさないので、そのような設定を行わない
-
-
どちらかのみに存在する設定をもうけるのはよくなさそう