Kubernetes のドキュメントを読んでいたら kubectl create
コマンドで --edit
オプションが使えると書いてあった.kubectl create -h
コマンドでヘルプを確認したところ Edit the API resource before creating
と書いてある.簡単に言うと kubectl create
コマンドでマニフェストを適用する前に編集できる.今まで使ったことがなく試してみた!
You can use kubectl create --edit to make arbitrary changes to an object before it is created. Here's an example:
$ kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client > /tmp/srv.yaml
$ kubectl create --edit -f /tmp/srv.yaml
kubectl create --edit
コマンドをさっそく試す
適当に nginx イメージを replicas: 3
で設定した Deployment のマニフェスト (deployment.yaml
) を準備して,以下のように kubectl create --edit -f deployment.yaml
コマンドを実行する.すると kubectl edit
コマンドと同じようにエディタ画面になり,適用する前にマニフェストを編集できる.
$ kubectl create --edit -f deployment.yaml
今回は replicas: 3
→ replicas: 5
に編集した.なるほど!編集できた.
$ kubectl get pods NAME READY STATUS RESTARTS AGE sandbox-nginx-f9f7485cd-2xqx7 1/1 Running 0 5m sandbox-nginx-f9f7485cd-6fm5n 1/1 Running 0 5m sandbox-nginx-f9f7485cd-mnpz2 1/1 Running 0 5m sandbox-nginx-f9f7485cd-qhgtp 1/1 Running 0 5m sandbox-nginx-f9f7485cd-w5pml 1/1 Running 0 5m
kubectl create --edit
コマンドの使いどころ
基本的には kubectl apply
コマンドを使う機会が多いと思う.今回試した kubectl create --edit
コマンドの使いどころを考えていたら,別のドキュメントに以下のように書いてあった.確かに「チュートリアル」など,一時的に試すときには便利そう.今までは wget
で取得してから一部を編集していたことが多かったし!
Suppose you have the URL of an object configuration file. You can use kubectl create --edit to make changes to the configuration before the object is created. This is particularly useful for tutorials and tasks that point to a configuration file that could be modified by the reader.
当然だけど,マニフェストを GitHub 経由 (GitHub : kakakakakku/k8s-manifests) で取得して kubectl create --edit
コマンドを実行しても結果は同じ.マニフェストを編集してから適用できる.
$ kubectl create --edit -f https://raw.githubusercontent.com/kakakakakku/k8s-manifests/master/sandbox-kubectl-create-edit-option/deployment.yaml deployment.apps/sandbox-nginx created
まとめ
今まで使ったことがなかった kubectl create --edit
コマンドを試した.手元にあるマニフェストを適用する前に編集できて便利な使いどころもありそう!そもそも kubectl create
コマンドを使う機会は仕事だと多くはなく,1番使うのは Certified Kubernetes Administrator (CKA) や Certified Kubernetes Application Developer (CKAD) を受験するときかもしれないけど!w