はじめに
kubectl
でマニフェストのテンプレを作成する方法を紹介します。
kubectlでマニフェスト作成
kubectl
でマニフェストを作成する場合は、下記のオプションを利用します。
--dry-run=client
-o yaml
--dry-run=client
は、コマンドによって実際にオブジェクトが作成されないようになります。また、-o yaml
は、出力をYAML形式にします。
これらのオプションを利用することでYAML形式のオブジェクトのマニフェストを出力できます。
Pod
Podのマニフェストの場合、下記のようになります。
kubectl run <pod name> --image=<image name> --dry-run=client -o yaml > pod.yml
nginxのPodの場合、下記のようなマニフェストpod.yml
を作成できます。
kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
Deployment
Deploymentのマニフェストの場合、下記のようになります。
kubectl create deployment --image=<image name> <deployment name> --dry-run=client -o yaml > deployment.yml
nginxのDeploymentの場合、下記のようなマニフェストdeployment.yml
を作成できます。
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml > deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
Service
Serviceのマニフェストの場合、下記のようになります。
kubectl create service clusterip <service name> --tcp=<port>:<target port> --dry-run=client -o yaml > service.yml
実際にやってみると、下記のようなマニフェストservice.yml
を作成できます。
kubectl create service clusterip nginx --tcp=8080:80 --dry-run=client -o yaml > service.yml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
ports:
- name: 8080-80
port: 8080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: ClusterIP
status:
loadBalancer: {}