Active/Standby#
設定#
既存のプロジェクトをActive/Standbyに対応させるためには、Lagoon APIを使用してプロジェクト設定をいくつか設定する必要があります。
productionEnviromment
は、現在アクティブな環境のブランチ名に設定する必要があります。standbyProductionEnvironment
は、現在スタンバイ中の環境のブランチ名に設定する必要があります。
mutation updateProject {
updateProject(input:{
id:1234
patch:{
productionEnvironment:"production-brancha"
standbyProductionEnvironment:"production-branchb"
}
}){
standbyProductionEnvironment
name
productionEnvironment
}
}
.lagoon.yml
- production_routes
#
.lagoon.yml
ファイルでプロジェクトをActive/Standbyに設定するためには、active
環境にアタッチしたいルートとstandby
環境にアタッチしたいルートをproduction_routes
セクションに設定する必要があります。Active/Standbyの切り替え時には、これらのルートは2つの環境間で移行します。
production-brancha
とproduction-branchb
の2つのproduction
環境があり、現在アクティブなproduction
環境がproduction-brancha
である場合:
production_routes.active
配下のルートはproduction-brancha
に向かわせます。production_routes.standby
配下のルートproduction-branchb
に向かわせます。
Active/Standbyの切り替え時には、ルートが入れ替わります:
production_routes.active
配下のルートはproduction-branchb
に向かわせます。production_routes.standby
配下のルートはproduction-brancha
に向かわせます。
production_routes:
active:
routes:
- nginx:
- example.com:
tls-acme: 'false'
- active.example.com:
tls-acme: 'false'
standby:
routes:
- nginx:
- standby.example.com:
tls-acme: 'false'
情報
environments..routes
セクション配下にあるルートは、Active/Standbyの一部として移動されません。これらのルートは常に定義された環境にアタッチされます。Active/Standbyの切り替え中に特定のルートを移行する必用がある場合、それらを環境セクションから削除し、Activeまたは、Standbyルート固有のproduction_routes
セクションに配置してください。 .lagoon.yml
のルートについて詳しくはこちらを参照してください。
切り替えイベントのトリガー#
UI経由#
環境ルートの切り替えをトリガーするには、Lagoon UIでStandby
環境を訪れ、Switch Active/Standby environments
というラベルのボタンをクリックします。アクションを確認するように求められます。
確認すると、タスクページに移動し、切り替えの進捗状況を確認することができます。
API経由#
環境を切り替えるイベントをトリガーするには、次のGraphQL mutationを実行します。これにより、Lagoonがプロセスを開始します。
mutation ActiveStandby {
switchActiveStandby(
input:{
project:{
name:"drupal-example"
}
}
){
id
remoteId
}
}
切り替えイベントがトリガーされると、現在のアクティブ環境の tasks
タブにタスクが作成されます。ここで切り替えの状態を確認することができます。
remoteId
を使用して、switchActiveStandby
mutationからタスクのステータスを確認することもできます。
query getTask {
taskByRemoteId(id: "<remoteId>") {
id
name
created
started
completed
status
logs
}
}
drush
エイリアス#
デフォルトでプロジェクトは以下のエイリアスが作成され、Active/Standbyが有効になっている場合に利用できます。
lagoon-production
lagoon-standby
lagoon-production
エイリアスはproductionEnvironment
として定義されているサイトを指し、lagoon-standby
は常にstandbyProductionEnvironment
として定義されているサイトを指します。
これらのエイリアスは、プロジェクトの更新によって設定を変更することができます。ただし、それらを変更すると、それらに依存するスクリプトを更新する必要があることに注意してください。
mutation updateProject {
updateProject(input:{
id:1234
patch:{
productionAlias:"custom-lagoon-production-alias"
standbyAlias:"custom-lagoon-standby-alias"
}
}){
productionAlias
name
standbyAlias
}
}
Active/Standbyの無効化#
これら2つのブランチのうち、どちらを主な環境として進めていくかを決定する必要があります。その後、 それがアクティブなブランチとして設定されていることを確認してください。(例:production-branchb
)
- この現在アクティブなブランチの
.lagoon.yml
ファイルで、production_routes.active.routes
セクションからルートをenvironments.production-branchb
セクションに移動します。これは、そのルートがproduction-branchb environment
にのみ関連付けられることを意味します。 - これが完了したら、
.lagoon.yml
ファイルから完全にproduction_routesセクションを削除し、production-branchb環境を再デプロイできます。 - もう1つのブランチである
production-brancha
が必要ない場合は削除してもかまいません。 - Gitにブランチを保持する場合、混乱を避けるためにそのブランチの
.lagoon.yml
からもproduction_routes
を削除しておきましょう。このブランチは削除して再デプロイ(すべてのストレージとデータベースなどを消去)するまでproduction
タイプとして残ります。 - プロジェクトが
production-branchb
のproduction
環境のみで、他のすべての環境がdevelopment
環境である状態になったら、プロジェクトを更新してstandbyProductionEnvironment
を削除し、環境のActive/Standbyラベルを消去します。
mutation updateProject {
updateProject(input:{
id:1234
patch:{
productionEnvironment:"production-branchb"
standbyProductionEnvironment:""
}
}){
standbyProductionEnvironment
name
productionEnvironment
}
}
ノート#
Active/Standbyトリガーが実行されたとき、productionEnvironment
とstandbyProductionEnvironments
はLagoon API内で切り替わります。両方の環境はまだproduction
環境タイプとして分類されています。productionEnvironment
はどちらがactive
とラベル付けされているかを決定するために使用します。環境タイプの違いについての詳細は、environment types
のドキュメントをご覧ください。
query projectByName {
projectByName(name:"drupal-example"){
productionEnvironment
standbyProductionEnvironment
}
}
環境を切り替える前
{
"data": {
"projectByName": {
"productionEnvironment": "production-brancha",
"standbyProductionEnvironment": "production-branchb"
}
}
}
環境を切り替えた後