🔥
k8s(Kubernetes) マニフェスト作成が面倒!? そんな時は kubectl create コマンドを利用しよう!
はじめに
k8s マニフェストの作成が面倒だなと思っていたのですが、kubectl create
をうまく使えば楽にマニフェストが作れたので、備忘録としてここに手順を記載します。
前提
下記を前提に手順を記載しています。
- k8sについてある程度知っている
-
deployment
,pod
,cronjob
,service
とかがどういう役割をしているかわかる
- k8s マニフェストがなにかわかる
-
- kubectlのversionは
1.15.0
以上とします
作り方
kubectl create ~ コマンドを実行して出力結果を ファイルにリダイレクトしてやればいいです。
具体的な方法は下記に記載します。
(※順次追加予定です)
k8s Deployment のマニフェスト
kubectl create deployment
を利用するといいです。
kubectl create deployment [任意の名前] \
--image=[コンテナが利用するイメージ] \
-o [yaml or json] \
--port=[コンテナが公開するport番号] \
--dry-run=client \
-- [Pod(コンテナ)起動時に実行するコマンド] > [マニフェストファイルの名前].[yaml or json]
例
例えば, k8s deploymentで nginxを 80番portで公開するマニフェスト
kubectl create deployment test \
--image=nginx:alpine \
-o yaml \
--port=80 \
--dry-run=client \
-- nginx -g deamon
ファイルに直接記載したい場合は下記
kubectl create deployment test \
--image=nginx:alpine \
-o yaml \
--port=80 \
--dry-run=client \
-- nginx -g deamon > test-nginx.yaml
teeコマンドを利用するとファイルへの書き込みと標準出力両方してくれます。
kubectl create deployment test \
--image=nginx:alpine \
-o yaml \
--port=80 \
--dry-run=client \
-- nginx -g deamon | tee test-nginx.yaml
実行結果
manifest
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: test
name: test
spec:
replicas: 1
selector:
matchLabels:
app: test
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: test
spec:
containers:
- command:
- nginx
- -g
- deamon
image: nginx:alpine
name: nginx
ports:
- containerPort: 80
resources: {}
status: {}
k8s CronJob のマニフェスト
kubectl create cronjob
を利用するといいです。
kubectl create cronjob [任意の名前] \
--image=[コンテナが利用するイメージ] \
-o [yaml or json] \
--schedule="[cronのスケジュール]" \
--dry-run=client \
-- [Pod(コンテナ)起動時に実行するコマンド] > [マニフェストファイルの名前].[yaml or json]
例
毎日 16:00 に busyboxのコンテナでdateコマンドを実行するマニフェスト
kubectl create cronjob cron-test \
--image=busybox \
-o yaml \
--schedule="0 16 * * *" \
--dry-run=client \
-- date
ファイルに直接記載したい場合は下記
kubectl create cronjob cron-test \
--image=busybox \
-o yaml \
--schedule="0 16 * * *" \
--dry-run=client \
-- date > test-cronjob.yaml
teeコマンドを利用するとファイルへの書き込みと標準出力両方してくれます。
kubectl create cronjob cron-test \
--image=busybox \
-o yaml \
--schedule="0 16 * * *" \
--dry-run=client \
-- date | tee test-cronjob.yaml
実行結果
manifest
piVersion: batch/v1
kind: CronJob
metadata:
creationTimestamp: null
name: cron-test
spec:
jobTemplate:
metadata:
creationTimestamp: null
name: cron-test
spec:
template:
metadata:
creationTimestamp: null
spec:
containers:
- command:
- date
image: busybox
name: cron-test
resources: {}
restartPolicy: OnFailure
schedule: 0 16 * * *
status: {}
Discussion