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(Namespace): 必須フィールドをチェック
- ドキュメント2(Deployment): 必須フィールド、リソース、プローブ、セキュリティをチェック
- ドキュメント3(Service): 必須フィールド、セレクター、ポートをチェック
Resources Foundテーブルに3つのリソースすべてが表示され、アプリケーションスタック全体の概要を把握できます。
順序の考慮事項
Kubernetesはリソースを任意の順序で受け入れますが、一般的には以下のように整理します:
- Namespace(最初に作成)
- ConfigMapとSecret(Deploymentに必要)
- Deployment、StatefulSet、DaemonSet
- Service
- Ingressリソース
ユースケース
新しいNamespaceにデプロイする前に、単一のYAMLファイルで定義された完全なアプリケーションスタックを検証する。環境全体が宣言的に定義されるGitOpsワークフローで一般的。