# ユーザクラウド
ユーザクラウドとして使用できるものは、現在は以下の1種類のみとなります。
利用できるクラウド
- GKE (Google Kubernetes Engine)
Qmonus SDK LabではKubernetesクラスタ単位ではなくKubernetesネームスペース単位での登録も可能です。
# 対応バージョン
# Kubernetes v1.29 - v1.30
GKEのリリースチャンネルRegular/Stableにおける最新2バージョンをサポート予定となります。
GKEのversion up
GKEのversion upを行う場合、version up前に既存の環境を削除してversion up後に再度環境を作成し直すようお願いいたします。
version upの際にQmonusを構成するコンポーネント (Pod) が順不同に削除および再作成されることでQmonusコンポーネント間の同期がとれなくなる可能性があります。
# テンプレートを使用してクラスタを準備する
テンプレートをご利用いただくことでスムーズに作成することができます。
すでにご用意いただいているクラスタ、ネームスペースを使用したい場合は以下へお進みください。
→ 既存のKubernetesクラスタを使用する場合
→ 既存のKubernetesネームスペースを使用する場合
この章ではQmonus SDK Labチームの用意したファイル、コマンドを使用し必要なクラウド設定を行うまでを説明します。
前提条件
- Cloud SDK がインストール済みである (gcloudコマンドが使用可能である)
→ Google公式ページ > Cloud SDK のインストール (opens new window) - GCPのプロジェクトが作成済みである
→ Google公式ページ > ステップ 2: Google Cloud プロジェクトを作成する (opens new window) - GCPのプロジェクトのAPIを有効にするアクセス件を持っているユーザが使用可能である
- Cloud Armorが導入済みである
- Terraformがインストール済みである
→ Terraform公式ページ > Install Terraform (opens new window)
# 1. ファイルをダウンロードする
Qmonus SDK Labチームが作成した以下の2つのファイルをダウンロードします。
# 2. フォルダの作成、ファイルの再配置
PCに以下のようなツリー構造のフォルダを作成し、ダウンロードしたファイルを下図のように配置してください。
※<project name>は作成いただいたGCPプロジェクトのものを選んでください。
(ユーザディレクトリなど)
└── <project name>
# 3. テンプレートへの入力 ( project-setup.sh ファイル)
ダウンロードしたファイルを使用するためにはデータを入力しなければなりません。
「project-setup.sh」ファイルを編集用のアプリで開き、以下の記述があることを確認してください。
# project-setup.sh
#!/usr/bin/env bash
PJ_ID="qmonus-hoge-project-12345678"
QMONUS_SRE_MAINTENANCE_GROUP="hoge@example.com"
TERRAFORM_BUCKET_NAME="qmonus-hoge-cloud-bucket"
上記の赤文字で示された箇所を編集します。
「project-setup.sh」内で書き換える項目
qmonus-hoge-project-12345678
GKEのプロジェクトIDに書き換えます。
以下のリンクなどから確認することができます。
→ Google公式ページ > リソースの管理 (opens new window)hoge@example.com
Google グループのグループメールアドレスに書き換えます。
Google グループにはGKEプロジェクトをメンテナンスするメンバーを所属させてください。
以降の手順で実施するTerraform操作の実行権限が付与されます。
→ Google公式ページ > グループを作成し、グループ設定を選択する (opens new window)sample-qmonus-cloud-bucket
GCS bucket名を入力してください。
以降の手順でproject_setup.shを実行した際、ここに記載した名前で作成されます。
# 4. テンプレートへの入力 ( template.tf ファイル)
「template.tf」ファイルを編集用のアプリで開き、以下の記述があることを確認してください。
# template.tf
}
variable "region" {
}
variable "maintenance_group" {
}
variable "allowed_networks" {
}
variable "cluster_version" {
}
variable "node_count" {
}
terraform {
}
上記の赤文字で示された箇所を編集します。
「template.tf」内で書き換える項目
qmonus-hoge-project-12345678
GKEのプロジェクトIDに書き換えます。
手順3 で入力した プロジェクトIDと同じものとしてください。asia-northeast1
希望するリージョンに書き換えます。
ここで記載したリージョンにクラスタが配置されます。
→ Google公式ページ > Cloud のロケーション (opens new window)
例: asia-northeast1(東京) などhoge@example.com
Google グループのグループメールアドレスに書き換えます。
手順3 で入力したメールアドレスと同じものとしてください。127.0.0.1/32
アクセス元のGIP(個人宅やVPNサーバーのGIP等)を記載してください。
事前にCloud Armorにて通信を許可するIPアドレスレンジの定義をする必要があります。
→ Google公式ページ > Google Cloud Armor のセキュリティ ポリシー、ルール、式を作成する (opens new window)1.23.11-gke.300
クラスタのバージョンに書き換えます。
利用可能なバージョンは以下よりご確認ください。
→ Google公式ページ > GKE release notes (opens new window)3
クラスタを構成するインスタンスグループ単位のノード数に書き換えてください。
例としてasia-northeast1にはzoneが3つあるため、ここで指定した数×3のノードが合計で構築されます。目安として、標準的な構成であれば3つ程度の開発環境が1つのノードに収容可能です。1.0.0
Terraformのバージョンに書き換えます。
バージョンは以下のコマンドで確かめることができます。
$terraform --version
sample-qmonus-cloud-bucket
GCS bucket名を入力してください。
手順3 で入力した bucket名と同じものとしてください。
# 5. APIの有効化
APIを有効化します。以下のコマンドを入力してください。
gcloud auth login
gcloud config configurations create ${config_name}
gcloud config set project ${project_name}
gcloud config set account ${account}
gcloud services enable iam.googleapis.com
gcloud services enable serviceusage.googleapis.com
# 6. terraform実行権限の追加
以下のコマンドを実行し、google groupのメンバーにterraform実行権限を与えます。
dev01 $ sh project-setup.sh
# 7. クラスタの作成
以下のコマンドを実行し、クラスタの作成を開始します。
dev01 $ terraform init
dev01 $ terraform apply
terraformのapply完了後は必要なリソースが作成されている状態です。
Outputsとして以下の情報が出力されますのでお控えください。
# apply完了後に出力される情報詳細
cluster_ip
- 作成したクラスタにおけるコントロールプレーンのIPアドレスです。
- Qmonus SDK Labの環境を作成する際、クラウドサービス設定にて利用します。
project
- クラスタを作成したGCPプロジェクトです。
- Qmonus SDK Labの環境を作成する際、クラウドサービス設定にて利用します。
security_policy
- 作成したcloud armorのsecurity policyです。
- Qmonus SDK Labの環境を作成する際、クラウドサービス設定にて利用します。
service_account_gke_internal
- 作成した1つ目のサービスアカウントです。
各種QmonusのImageをPullする際に利用します。 - Qmonus SDK Lab利用申請の際に記載してください。
- 作成した1つ目のサービスアカウントです。
service_account_qmonus_sdk_lab
- 作成した2つ目のサービスアカウントです。
- 本アカウントに対してjson形式のサービスアカウントキーを発行してください。
(参考)
→ Google公式ページ > サービス アカウントとして認証する (opens new window) - 発行したキーはQmonus SDK Labの環境を作成する際、クラウドサービス設定にて利用します。
# 8. 作成後の確認
以下のページから作成されたクラスタを確認します。
Google公式ページ > Google Kubernetes Engine に移動 (opens new window)
以上で本手順「テンプレートを使用してクラスタを準備する」は完了となります。
# 既存のKubernetesクラスタを使用する場合
以下の3つを作成してください。
- Kubernetesクラスタ
- 下記アドレス (Qmonus SDK Lab) からの通信を許可してください。
- 35.200.13.149/32
- 35.189.158.160/32
- 下記アドレス (Qmonus SDK Lab) からの通信を許可してください。
- ユーザクラスタのNodeに関連付けられたサービスアカウント1 (SA1)1)
- 利用申請時にサポートにご提示いただきます。
※Qmonus提供のterraformでクラスタ作った場合は「gke-internal@~~~」というSAとなります。確認方法
- 利用申請時にサポートにご提示いただきます。
- 「Kubernetes Engine 管理者」ロールのついたサービスアカウント2 (SA2)
- サポートに提示いただく必要はございません。
※「ログ閲覧者」ロールを追加することでQmonus SDK Labからログをダウンロードすることができるようになります。
- サポートに提示いただく必要はございません。
お控えいただくもの
・GKEのプロジェクトID
→ 確認場所 (opens new window)
より対象のIDをご確認ください。
・Kubernetesクラスタのエンドポイント
→ 確認場所 (opens new window)よりクラスタを選択、詳細をご確認ください。
・GKEのサービスアカウント
→ 作成方法 (opens new window)または確認方法より対象のSAをご確認ください。
・GKEのサービスアカウントキーファイル
→ 作成方法 (opens new window)からサービスアカウントキーを新たに作成してください3)。
TIP
サービスアカウントの用途は以下の通りです。
・コンテナイメージ(弊社のプライベートレジストリ内)のPullを許可
・Qmonus SDK LabのCloudService登録 (要Kubernetes Engine 管理者ロール)
# 既存のKubernetesネームスペースを使用する場合
以下の2つを作成してください。
※KUJIRA基盤上にデプロイする場合などはこちらを選択します。
- Kubernetesネームスペース(作成場所となるKubernetesクラスタもご用意ください。)
- ネームスペースのkubeconfigファイル
お控えいただくもの
・kubeconfig(KUJIRA基盤利用の場合はKUJIRAチームよりkubeconfigが払い出されます)
KUJIRA環境について
NTT Communicationsの提供しているKUJIRA(labprivate/labshared)環境を利用する際は以下を参照ください。
→ NTT Communicationsの提供しているKUJIRA環境を利用する際の注意事項
【注意事項】開発環境間の通信制御について
Labの仕様としては、GKEクラスタ内のPod同士の通信を抑止する等の設定は行なっておりません。
そのため、認証情報があれば同クラスタに構築された環境間での通信や操作が可能です。 通信制御が必要な場合はユーザ側でのクラスタ設定実施をお願いいたします。