Skip to content

Google Cloud Platform基礎知識:クラウドインフラの入門

概要

Google Cloud Platform(GCP)は、Googleが提供する包括的なクラウドコンピューティングプラットフォームです。コンピューティング、ストレージ、ネットワーキング、機械学習など、200以上のサービスを提供しており、エンタープライズレベルのインフラストラクチャを構築できます。

GCPの主要サービス

1. コンピューティング

  • Compute Engine: 仮想マシン(VM)
  • App Engine: マネージドアプリケーションプラットフォーム
  • Cloud Run: コンテナベースのサーバーレスプラットフォーム
  • Cloud Functions: サーバーレス関数

2. ストレージ

  • Cloud Storage: オブジェクトストレージ
  • Cloud SQL: マネージドリレーショナルデータベース
  • Cloud Firestore: NoSQLデータベース
  • BigQuery: データウェアハウス

3. ネットワーキング

  • VPC: 仮想プライベートクラウド
  • Cloud Load Balancing: ロードバランサー
  • Cloud CDN: コンテンツ配信ネットワーク
  • Cloud DNS: DNSサービス

基本的なセットアップ

1. GCPアカウントの作成

bash
# Google Cloud CLIのインストール
curl https://sdk.cloud.google.com | bash
exec -l $SHELL

# 初期化
gcloud init

# プロジェクトの作成
gcloud projects create my-project-id --name="My Project"

# プロジェクトの設定
gcloud config set project my-project-id

2. 認証の設定

bash
# サービスアカウントキーの作成
gcloud iam service-accounts create my-service-account \
  --display-name="My Service Account"

# キーファイルのダウンロード
gcloud iam service-accounts keys create key.json \
  --iam-account=my-service-account@my-project-id.iam.gserviceaccount.com

# 認証の設定
gcloud auth activate-service-account --key-file=key.json

3. 必要なAPIの有効化

bash
# Compute Engine API
gcloud services enable compute.googleapis.com

# Cloud Storage API
gcloud services enable storage.googleapis.com

# Cloud SQL API
gcloud services enable sqladmin.googleapis.com

Compute Engine(仮想マシン)

1. VMインスタンスの作成

bash
# 基本的なVMインスタンスの作成
gcloud compute instances create my-instance \
  --zone=us-central1-a \
  --machine-type=e2-medium \
  --image-family=debian-11 \
  --image-project=debian-cloud \
  --boot-disk-size=10GB \
  --boot-disk-type=pd-standard

# カスタム設定でのVM作成
gcloud compute instances create my-instance \
  --zone=us-central1-a \
  --machine-type=e2-standard-4 \
  --image-family=ubuntu-2004-lts \
  --image-project=ubuntu-os-cloud \
  --boot-disk-size=50GB \
  --boot-disk-type=pd-ssd \
  --tags=http-server,https-server \
  --metadata=startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install -y nginx
    sudo systemctl start nginx'

2. インスタンスの管理

bash
# インスタンスの一覧表示
gcloud compute instances list

# インスタンスの停止
gcloud compute instances stop my-instance --zone=us-central1-a

# インスタンスの開始
gcloud compute instances start my-instance --zone=us-central1-a

# インスタンスの削除
gcloud compute instances delete my-instance --zone=us-central1-a

3. ファイアウォールルール

bash
# HTTPトラフィックを許可
gcloud compute firewall-rules create allow-http \
  --allow tcp:80 \
  --source-ranges 0.0.0.0/0 \
  --target-tags http-server

# HTTPSトラフィックを許可
gcloud compute firewall-rules create allow-https \
  --allow tcp:443 \
  --source-ranges 0.0.0.0/0 \
  --target-tags https-server

Cloud Storage

1. バケットの作成と管理

bash
# バケットの作成
gsutil mb gs://my-unique-bucket-name

# バケットの一覧表示
gsutil ls

# バケットの削除
gsutil rm -r gs://my-unique-bucket-name

2. ファイルのアップロード・ダウンロード

bash
# ファイルのアップロード
gsutil cp local-file.txt gs://my-bucket/

# ディレクトリ全体のアップロード
gsutil -m cp -r local-directory/ gs://my-bucket/

# ファイルのダウンロード
gsutil cp gs://my-bucket/file.txt ./

# ファイルの削除
gsutil rm gs://my-bucket/file.txt

3. アクセス制御

bash
# バケットを公開
gsutil iam ch allUsers:objectViewer gs://my-bucket

# 特定のユーザーに権限を付与
gsutil iam ch user:user@example.com:objectAdmin gs://my-bucket

# バケットのACL設定
gsutil acl set public-read gs://my-bucket

Cloud SQL(データベース)

1. MySQLインスタンスの作成

bash
# MySQLインスタンスの作成
gcloud sql instances create my-mysql-instance \
  --database-version=MYSQL_8_0 \
  --tier=db-f1-micro \
  --region=us-central1 \
  --storage-type=HDD \
  --storage-size=10GB \
  --backup-start-time="23:00" \
  --enable-bin-log

# データベースの作成
gcloud sql databases create my-database \
  --instance=my-mysql-instance

# ユーザーの作成
gcloud sql users create my-user \
  --instance=my-mysql-instance \
  --password=my-password

2. PostgreSQLインスタンスの作成

bash
# PostgreSQLインスタンスの作成
gcloud sql instances create my-postgres-instance \
  --database-version=POSTGRES_14 \
  --tier=db-f1-micro \
  --region=us-central1 \
  --storage-type=HDD \
  --storage-size=10GB \
  --backup-start-time="23:00"

# データベースの作成
gcloud sql databases create my-database \
  --instance=my-postgres-instance

# ユーザーの作成
gcloud sql users create my-user \
  --instance=my-postgres-instance \
  --password=my-password

3. 接続と管理

bash
# インスタンスへの接続
gcloud sql connect my-mysql-instance --user=root

# インスタンス情報の表示
gcloud sql instances describe my-mysql-instance

# インスタンスの停止
gcloud sql instances patch my-mysql-instance \
  --activation-policy NEVER

# インスタンスの開始
gcloud sql instances patch my-mysql-instance \
  --activation-policy ALWAYS

App Engine

1. 基本的なアプリケーション

python
# main.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)
yaml
# app.yaml
runtime: python39

handlers:
- url: /.*
  script: auto

env_variables:
  ENVIRONMENT: production

2. デプロイメント

bash
# アプリケーションのデプロイ
gcloud app deploy

# アプリケーションの表示
gcloud app browse

# ログの確認
gcloud app logs tail -s default

料金体系

1. 無料枠

  • Compute Engine: 1つのf1-microインスタンス(月744時間)
  • Cloud Storage: 5GB
  • Cloud SQL: なし
  • App Engine: 標準環境で月28インスタンス時間

2. 従量課金

  • Compute Engine: インスタンスタイプと使用時間に応じて課金
  • Cloud Storage: 保存容量と転送量に応じて課金
  • Cloud SQL: インスタンスタイプと使用時間に応じて課金

3. コスト最適化

bash
# 使用量の確認
gcloud billing accounts list

# 予算アラートの設定
gcloud billing budgets create \
  --billing-account=XXXXXX-XXXXXX-XXXXXX \
  --display-name="Monthly Budget" \
  --budget-amount=100USD \
  --threshold-rules=threshold=0.5,basis=current

セキュリティ

1. IAM(Identity and Access Management)

bash
# ロールの付与
gcloud projects add-iam-policy-binding my-project-id \
  --member="user:user@example.com" \
  --role="roles/compute.admin"

# サービスアカウントの作成
gcloud iam service-accounts create my-service-account \
  --display-name="My Service Account"

# サービスアカウントにロールを付与
gcloud projects add-iam-policy-binding my-project-id \
  --member="serviceAccount:my-service-account@my-project-id.iam.gserviceaccount.com" \
  --role="roles/storage.admin"

2. VPC(Virtual Private Cloud)

bash
# VPCの作成
gcloud compute networks create my-vpc \
  --subnet-mode=auto

# サブネットの作成
gcloud compute networks subnets create my-subnet \
  --network=my-vpc \
  --region=us-central1 \
  --range=10.0.0.0/24

まとめ

GCPは、初心者からエンタープライズまで幅広く対応できる包括的なクラウドプラットフォームです。特に、Compute Engine、Cloud Storage、Cloud SQLなどの基本サービスを理解することで、スケーラブルで安全なインフラストラクチャを構築できます。

無料枠を活用して学習を始め、段階的に機能を拡張していくことで、コスト効率的にクラウドインフラを運用できます。

AI が自動生成した技術記事をまとめたテックブログ