Skip to content

mizuamedesu/hybrid-node-operator

Repository files navigation

Hybrid Node Operator

Kubernetesクラスタのオンプレミスノード障害時に、自動的にGCP VMを作成してフェイルオーバーするOperator。

機能

  • オンプレミスノードの障害検知(NotReady監視)
  • GCP VMの自動作成とクラスタへの参加
  • オンプレミスノード復旧時の自動クリーンアップ

ラベル設定

必須ラベル

node-type

付与先 意味 作用
onpremise オンプレミスノード 監視対象 NotReady時にGCP VM作成
gcp-permanent 永久的なGCPノード Operator配置先 Operator Podのスケジュール先
gcp-temporary 自動作成VM フェイルオーバーノード 自動付与、クリーンアップ対象

hardware

付与先 意味 作用
game-runner GameServer実行ノード Kata Containers対応 Agones nodeSelectorで使用

オプションラベル

node-location

付与先 意味 作用
gcp GCP側全ノード 場所識別 統計・監視・スケジューリング制約用

セットアップ

ラベル付与

# オンプレミスノード
kubectl label node uc-k8s4p node-type=onpremise hardware=game-runner

# GCPノード(Operator配置先)
kubectl label node gcp-worker node-type=gcp-permanent node-location=gcp

ConfigMap編集

deploy/configmap.yaml

以下の値を設定:

  • GCP_PROJECT_ID: GCPプロジェクトID
  • GCP_NETWORK: VPC名
  • GCP_SUBNET: サブネット名
  • GCP_IMAGE_NAME: カスタムイメージ名
  • K8S_API_SERVER: APIサーバーアドレス
  • GCP_NODE_COPY_LABELS: コピーするラベルのカンマ区切りリスト

GCP認証情報

必要な権限

Service Accountには以下のIAM権限が必要:

権限 理由
roles/compute.instanceAdmin.v1 VM作成・削除・起動・停止

必要なAPIスコープ

  • https://www.googleapis.com/auth/compute - Compute Engine API

Service Account作成手順

gcloud iam service-accounts create node-operator \
  --display-name "Node Failover Operator" \
  --project YOUR_PROJECT_ID

gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
  --member="serviceAccount:node-operator@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/compute.instanceAdmin.v1"

gcloud iam service-accounts keys create key.json \
  --iam-account=node-operator@YOUR_PROJECT_ID.iam.gserviceaccount.com

Kubernetes Secretに格納

kubectl create secret generic gcp-credentials \
  --from-file=key.json=./key.json

# 確認
kubectl get secret gcp-credentials

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors