コンテンツへスキップ
🛠️ToolsShed

Kubernetes YAMLジェネレーター

Deployment、Service、ConfigMap、NamespaceのK8sマニフェストを生成します。

デプロイメント設定

deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: default
  labels:
    app: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: nginx:latest
          ports:
            - containerPort: 80
        env:
          - name: ENV
            value: "production"
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi

次のコマンドで適用: kubectl apply -f deployment.yaml

このツールについて

Kubernetes YAMLジェネレーターは、手動でKubernetesマニフェスト定義を正しくフォーマットされたYAML設定ファイルに変換する開発者向けツールです。コンテナ化されたアプリケーションをデプロイしたり、マイクロサービスを管理したり、インフラストラクチャをコードとして設定したりする場合、このツールはデプロイメント、サービス、設定マップ、および名前空間に対してクリーンで構文的に有効なマニフェストを生成することで、Kubernetes YAMLを手書きする退屈なタスクを排除します。設定がKubernetes APIの仕様とベストプラクティスに従っていることを確認します。

ツールを使用するには、設定フォームにリソースの詳細を入力します。デプロイメントのメタデータ、コンテナイメージ、サービスポート、環境変数、およびその他のパラメーターを指定します。ジェネレーターは自動的に、kubectlまたはCI/CDパイプラインを使用してKubernetesクラスタに直接適用する準備ができた、適切にインデントされた、構造化されたYAMLを生成します。生成前にリソース名、ラベル、セレクター、およびその他すべてのフィールドをカスタマイズできます。

このツールは、Kubernetesを使用するDevOpsエンジニア、アプリケーション開発者、およびインフラストラクチャチームに特に価値があります。ポートマッピング、volumeMounts、securityContext、リソースリミットなどの一般的なエッジケースを処理し、時間を節約し、デプロイメントを成功させることができなくなる可能性のあるYAML構文エラーを削減します。

よくある質問

コード実装

import subprocess
import yaml
import tempfile
import os

def generate_deployment(name, image, replicas=2, port=80, namespace="default"):
    """Generate a Kubernetes Deployment manifest dict."""
    return {
        "apiVersion": "apps/v1",
        "kind": "Deployment",
        "metadata": {"name": name, "namespace": namespace},
        "spec": {
            "replicas": replicas,
            "selector": {"matchLabels": {"app": name}},
            "template": {
                "metadata": {"labels": {"app": name}},
                "spec": {
                    "containers": [{
                        "name": name,
                        "image": image,
                        "ports": [{"containerPort": port}]
                    }]
                }
            }
        }
    }

manifest = generate_deployment("my-app", "nginx:latest", replicas=3)
yaml_str = yaml.dump(manifest, default_flow_style=False)
print(yaml_str)

# Apply using kubectl
with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', delete=False) as f:
    f.write(yaml_str)
    tmp = f.name

result = subprocess.run(["kubectl", "apply", "-f", tmp], capture_output=True, text=True)
print(result.stdout)
os.unlink(tmp)

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.