Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@loftkun

kubectl editしたくない人のためのkubectl patchコマンド

kubectl patchコマンド

kubectl editコマンドで立ち上がるエディタでリソースを編集するのが煩わしい我々のために🤔
kubectl patchコマンドが用意されている、ありがたく活用させてもらおう。

patchコマンドならエディタで手書きする必要がなくなるのが嬉しいポイントだ。
ワンライナーでリソースを変更できるのでシェルスクリプトなどに組み込むのにも向いている。

例1 コンテナイメージを変更する

イメージを変更するワンライナー

kubectl patch deployment sample-deployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"sample-app","image":"sample-image:1.0"}]}}}}'

一時的にイメージのバージョンを変更したい場合などに活用できる。

例2 レプリカ数を変更する

レプリカ数を変更するワンライナー

kubectl patch deployment sample-deployment -p '{"spec":{"replicas":0}}'

一時的にレプリカ数を変更したい場合に活用できる。
ちなみに0も指定でき、簡易的なアンデプロイ状態になる。

例3 ServiceのTypeを変更する

TypeNodePortに変更するワンライナー

kubectl patch service sample-service -p '{"spec":{"type":"NodePort"}}'

とりいそぎClusterIPからNodePortに変更してアクセスしたい場合などに活用できる。

実行例

# before
$ kubectl get svc sample-service -o jsonpath='{.spec.type}'
ClusterIP

# patch実行
$ kubectl patch service sample-service -p '{"spec":{"type":"NodePort"}}'
service/sample-service patched

# after
$ kubectl get svc sample-service -o jsonpath='{.spec.type}'
NodePort
$ kubectl get svc sample-service -o jsonpath='{.spec.ports[0].nodePort}'
32206
$

上記のように-o jsonpath=に確認したいパスを指定すると値を確認できるが、以下のようにjqで絞り込む方が記号が少なく簡潔に書けるのでおすすめである。

kubectl get svc sample-service -o json | jq -r .spec.type
kubectl get svc sample-service -o json | jq -r .spec.ports[0].nodePort
6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
6
Help us understand the problem. What is going on with this article?