【Kubernetes】kubectlでマニフェスト作成

2022.03.08
2024.03.24
Kubernetes
kubectl

はじめに

kubectlマニフェストのテンプレを作成する方法を紹介します。

kubectlでマニフェスト作成

kubectlでマニフェストを作成する場合は、下記のオプションを利用します。

  • --dry-run=client
  • -o yaml

--dry-run=clientは、コマンドによって実際にオブジェクトが作成されないようになります。また、-o yamlは、出力をYAML形式にします。

これらのオプションを利用することでYAML形式のオブジェクトのマニフェストを出力できます。

Pod

Podのマニフェストの場合、下記のようになります。

1kubectl run <pod name> --image=<image name> --dry-run=client -o yaml > pod.yml

nginxのPodの場合、下記のようなマニフェストpod.ymlを作成できます。

1kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yml
1apiVersion: v1
2kind: Pod
3metadata:
4  creationTimestamp: null
5  labels:
6    run: nginx
7  name: nginx
8spec:
9  containers:
10  - image: nginx
11    name: nginx
12    resources: {}
13  dnsPolicy: ClusterFirst
14  restartPolicy: Always
15status: {}

Deployment

Deploymentのマニフェストの場合、下記のようになります。

1kubectl create deployment --image=<image name> <deployment name> --dry-run=client -o yaml > deployment.yml

nginxのDeploymentの場合、下記のようなマニフェストdeployment.ymlを作成できます。

1kubectl create deployment --image=nginx nginx --dry-run=client -o yaml > deployment.yml
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  creationTimestamp: null
5  labels:
6    app: nginx
7  name: nginx
8spec:
9  replicas: 1
10  selector:
11    matchLabels:
12      app: nginx
13  strategy: {}
14  template:
15    metadata:
16      creationTimestamp: null
17      labels:
18        app: nginx
19    spec:
20      containers:
21      - image: nginx
22        name: nginx
23        resources: {}
24status: {}

Service

Serviceのマニフェストの場合、下記のようになります。

1kubectl create service clusterip <service name> --tcp=<port>:<target port> --dry-run=client -o yaml > service.yml

実際にやってみると、下記のようなマニフェストservice.ymlを作成できます。

1kubectl create service clusterip nginx --tcp=8080:80 --dry-run=client -o yaml > service.yml
1apiVersion: v1
2kind: Service
3metadata:
4  creationTimestamp: null
5  labels:
6    app: nginx
7  name: nginx
8spec:
9  ports:
10  - name: 8080-80
11    port: 8080
12    protocol: TCP
13    targetPort: 80
14  selector:
15    app: nginx
16  type: ClusterIP
17status:
18  loadBalancer: {}

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee