アクティブ/スタンバイ#
設定#
既存のプロジェクトをアクティブ/スタンバイに対応させるためには、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
にアタッチしたいルートをproduction_routes
セクションに設定する必要があります。 環境。アクティブ/スタンバイの切り替え時には、これらのルートは2つの環境間で移動します。
もし2つのプロダクション環境、production-brancha
とproduction-branchb
があり、現在アクティブなプロダクション環境がproduction-brancha
であるなら:
production_routes.active
の下のルートはあなたをproduction-brancha
に向かわせます。production_routes.standby
の下のルートはあなたをproduction-branchb
に向かわせます。
アクティブ/スタンバイの切り替え時には、ルートが交換されます:
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
の下にあるルートは、アクティブ/スタンバイの一部として移動されません。これらのルートは常に定義された環境に付属しています。特定のルートを必要とする場合は、そのルートが アクティブ/スタンバイ切り替え中に移行した場合、それらを環境セクションから削除し、それがアクティブルートかスタンバイルートであるべきか特定の production_routes
セクションに配置してください。 .lagoon.yml
のルートについて詳しくはこちらを参照してください。
切り替えイベントのトリガー#
UI経由#
環境ルートの切り替えをトリガーするには、Lagoon UIでスタンバイ環境を訪れ、Switch Active/Standby environments
というラベルのボタンをクリックします。アクションを確認するように求められます。
確認されると、スイッチの進行状況を確認することができるタスクページに移動します。
API経由#
環境を切り替えるイベントをトリガーするには、次のGraphQL変異を実行します。これにより、Lagoonがプロセスを開始します。
mutation ActiveStandby {
switchActiveStandby(
input:{
project:{
name:"drupal-example"
}
}
){
id
remoteId
}
}
切り替えイベントがトリガーされると、現在のアクティブ環境の tasks
タブにタスクが作成されます。ここでスイッチの状態を確認することができます。
switchActiveStandby
変異からの remoteId
を使用して、 タスクのステータスも確認することができます。
query getTask {
taskByRemoteId(id: "<remoteId>") {
id
name
created
started
completed
status
logs
}
}
drush
エイリアス#
デフォルトでは、プロジェクトは以下のエイリアスが作成され、プロジェクトでアクティブ/スタンバイが有効になっている場合に利用できます。
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環境を再デプロイできます。 - もう他のブランチ
production-brancha
が必要ない場合、それを削除できます。 - Gitでブランチを保持する場合、混乱を避けるためにそのブランチの
.lagoon.yml
からもproduction_routes
を削除するべきです。ブランチはproduction
タイプのままになりますが、それを削除して再デプロイしない限り(すべてのストレージとデータベースなどを消去)。 - プロジェクトが
production-branchb
プロダクション環境だけが存在し、他のすべての環境がdevelopment
である状態になったら、プロジェクトからstandbyProductionEnvironment
を削除して、環境のアクティブ/スタンバイラベルを消去します。
mutation updateProject {
updateProject(input:{
id:1234
patch:{
productionEnvironment:"production-branchb"
standbyProductionEnvironment:""
}
}){
standbyProductionEnvironment
name
productionEnvironment
}
}
ノート#
アクティブ/スタンバイトリガーが実行されたとき、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"
}
}
}
環境を切り替えた後: