infrastructure
Terraform、Docker、Kubernetesといった技術を活用し、Gutsノードを効率的に構築・展開するための、Infrastructure as Code(IaC)のパターンを適用するSkill。
📜 元の英語説明(参考)
Infrastructure as Code patterns for deploying Guts nodes using Terraform, Docker, and Kubernetes
🇯🇵 日本人クリエイター向け解説
Terraform、Docker、Kubernetesといった技術を活用し、Gutsノードを効率的に構築・展開するための、Infrastructure as Code(IaC)のパターンを適用するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o infrastructure.zip https://jpskill.com/download/16921.zip && unzip -o infrastructure.zip && rm infrastructure.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/16921.zip -OutFile "$d\infrastructure.zip"; Expand-Archive "$d\infrastructure.zip" -DestinationPath $d -Force; ri "$d\infrastructure.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
infrastructure.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
infrastructureフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Guts 用インフラストラクチャ Skill
複数のノードタイプを持つ分散型アプリケーションのインフラストラクチャを管理しています。
デプロイメントターゲット
- ローカル開発: Docker Compose
- テスト: Kubernetes (k3s/kind)
- 本番環境: クラウド非依存の Kubernetes + Terraform
Terraform パターン
モジュール構造
infra/
├── terraform/
│ ├── modules/
│ │ ├── network/
│ │ ├── compute/
│ │ └── storage/
│ ├── environments/
│ │ ├── dev/
│ │ ├── staging/
│ │ └── prod/
│ └── main.tf
モジュール例
# modules/guts-node/main.tf
variable "node_count" {
type = number
description = "デプロイする Guts ノードの数"
default = 3
}
variable "instance_type" {
type = string
description = "ノードのインスタンスタイプ"
default = "t3.medium"
}
resource "aws_instance" "guts_node" {
count = var.node_count
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
tags = {
Name = "guts-node-${count.index}"
Environment = var.environment
Project = "guts"
}
}
Docker のベストプラクティス
マルチステージビルド
# Build stage
FROM rust:1.75-slim as builder
WORKDIR /app
COPY . .
RUN cargo build --release --bin guts-node
# Runtime stage
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/lists/*
COPY --from=builder /app/target/release/guts-node /usr/local/bin/
EXPOSE 8080 9000
ENTRYPOINT ["guts-node"]
開発用 Docker Compose
version: '3.8'
services:
node1:
build: .
ports:
- "8081:8080"
environment:
- GUTS_NODE_ID=node1
- GUTS_PEERS=node2:9000,node3:9000
volumes:
- node1-data:/data
node2:
build: .
ports:
- "8082:8080"
environment:
- GUTS_NODE_ID=node2
- GUTS_PEERS=node1:9000,node3:9000
volumes:
- node2-data:/data
node3:
build: .
ports:
- "8083:8080"
environment:
- GUTS_NODE_ID=node3
- GUTS_PEERS=node1:9000,node2:9000
volumes:
- node3-data:/data
volumes:
node1-data:
node2-data:
node3-data:
Kubernetes パターン
ノード用 StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: guts-node
spec:
serviceName: guts-nodes
replicas: 3
selector:
matchLabels:
app: guts-node
template:
metadata:
labels:
app: guts-node
spec:
containers:
- name: guts-node
image: guts/node:latest
ports:
- containerPort: 8080
name: api
- containerPort: 9000
name: p2p
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 100Gi
監視スタック
- メトリクス: カスタム Rust メトリクスを使用した Prometheus
- ログ: Loki + Grafana
- トレース: OpenTelemetry を使用した Jaeger
セキュリティチェックリスト
- [ ] cert-manager 経由の TLS 証明書
- [ ] Pod 分離のためのネットワークポリシー
- [ ] external-secrets によるシークレット管理
- [ ] Trivy による定期的なセキュリティスキャン
- [ ] Kubernetes アクセス用の RBAC
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Infrastructure Skill for Guts
You are managing infrastructure for a decentralized application with multiple node types.
Deployment Targets
- Local Development: Docker Compose
- Testing: Kubernetes (k3s/kind)
- Production: Cloud-agnostic Kubernetes + Terraform
Terraform Patterns
Module Structure
infra/
├── terraform/
│ ├── modules/
│ │ ├── network/
│ │ ├── compute/
│ │ └── storage/
│ ├── environments/
│ │ ├── dev/
│ │ ├── staging/
│ │ └── prod/
│ └── main.tf
Example Module
# modules/guts-node/main.tf
variable "node_count" {
type = number
description = "Number of Guts nodes to deploy"
default = 3
}
variable "instance_type" {
type = string
description = "Instance type for nodes"
default = "t3.medium"
}
resource "aws_instance" "guts_node" {
count = var.node_count
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
tags = {
Name = "guts-node-${count.index}"
Environment = var.environment
Project = "guts"
}
}
Docker Best Practices
Multi-stage Builds
# Build stage
FROM rust:1.75-slim as builder
WORKDIR /app
COPY . .
RUN cargo build --release --bin guts-node
# Runtime stage
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/guts-node /usr/local/bin/
EXPOSE 8080 9000
ENTRYPOINT ["guts-node"]
Docker Compose for Development
version: '3.8'
services:
node1:
build: .
ports:
- "8081:8080"
environment:
- GUTS_NODE_ID=node1
- GUTS_PEERS=node2:9000,node3:9000
volumes:
- node1-data:/data
node2:
build: .
ports:
- "8082:8080"
environment:
- GUTS_NODE_ID=node2
- GUTS_PEERS=node1:9000,node3:9000
volumes:
- node2-data:/data
node3:
build: .
ports:
- "8083:8080"
environment:
- GUTS_NODE_ID=node3
- GUTS_PEERS=node1:9000,node2:9000
volumes:
- node3-data:/data
volumes:
node1-data:
node2-data:
node3-data:
Kubernetes Patterns
StatefulSet for Nodes
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: guts-node
spec:
serviceName: guts-nodes
replicas: 3
selector:
matchLabels:
app: guts-node
template:
metadata:
labels:
app: guts-node
spec:
containers:
- name: guts-node
image: guts/node:latest
ports:
- containerPort: 8080
name: api
- containerPort: 9000
name: p2p
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 100Gi
Monitoring Stack
- Metrics: Prometheus with custom Rust metrics
- Logs: Loki + Grafana
- Tracing: Jaeger with OpenTelemetry
Security Checklist
- [ ] TLS certificates via cert-manager
- [ ] Network policies for pod isolation
- [ ] Secrets management with external-secrets
- [ ] Regular security scanning with Trivy
- [ ] RBAC for Kubernetes access