Namespace設定のマルチドキュメントYAML

Namespace、Deployment、Serviceを含むマルチドキュメントYAMLファイルを検証します。単一のYAMLファイルで完全なアプリケーションスタックを構成する方法を学びます。

Multi-Document

詳細な説明

マルチドキュメントKubernetes YAML

Kubernetesは---で区切られた複数ドキュメントのYAMLファイルをサポートしています。これはNamespace、Deployment、Service、ConfigMapなどのアプリケーションスタック全体を単一ファイルで定義するためによく使用されます。

マルチドキュメントマニフェスト例

apiVersion: v1
kind: Namespace
metadata:
  name: production-app
  labels:
    environment: production
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-server
  namespace: production-app
  labels:
    app: api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      securityContext:
        runAsNonRoot: true
      containers:
        - name: api
          image: myregistry.io/api:2.5.0
          ports:
            - containerPort: 8080
          resources:
            requests:
              cpu: 200m
              memory: 256Mi
            limits:
              cpu: 1000m
              memory: 512Mi
          livenessProbe:
            httpGet:
              path: /health
              port: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: api-service
  namespace: production-app
spec:
  selector:
    app: api
  ports:
    - port: 80
      targetPort: 8080

バリデーターのマルチドキュメント処理

バリデーターは---セパレーターで入力を分割し、各ドキュメントを独立して検証します:

  1. ドキュメント1(Namespace): 必須フィールドをチェック
  2. ドキュメント2(Deployment): 必須フィールド、リソース、プローブ、セキュリティをチェック
  3. ドキュメント3(Service): 必須フィールド、セレクター、ポートをチェック

Resources Foundテーブルに3つのリソースすべてが表示され、アプリケーションスタック全体の概要を把握できます。

順序の考慮事項

Kubernetesはリソースを任意の順序で受け入れますが、一般的には以下のように整理します:

  1. Namespace(最初に作成)
  2. ConfigMapとSecret(Deploymentに必要)
  3. Deployment、StatefulSet、DaemonSet
  4. Service
  5. Ingressリソース

ユースケース

新しいNamespaceにデプロイする前に、単一のYAMLファイルで定義された完全なアプリケーションスタックを検証する。環境全体が宣言的に定義されるGitOpsワークフローで一般的。

試してみる — K8s Manifest Validator

フルツールを開く