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
}
}
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(input: {
id: 1234
patch: {
standbyProductionEnvironment: ""
}
}){
name
productionEnvironment
standbyProductionEnvironment
}
}
ノート#
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"
}
}
}
環境を切り替えた後
{
"data": {
"projectByName": {
"productionEnvironment": "production-branchb",
"standbyProductionEnvironment": "production-brancha"
}
}
}