kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

マニフェストを適用する前に編集できる "kubectl create --edit" コマンド

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

kubernetes.io

kubectl create --edit コマンドをさっそく試す

適当に nginx イメージを replicas: 3 で設定した Deployment のマニフェスト (deployment.yaml) を準備して,以下のように kubectl create --edit -f deployment.yaml コマンドを実行する.すると kubectl edit コマンドと同じようにエディタ画面になり,適用する前にマニフェストを編集できる.

$ kubectl create --edit -f deployment.yaml

f:id:kakku22:20210305110209p:plain

今回は replicas: 3replicas: 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.

kubernetes.io

当然だけど,マニフェストを 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