curlでDeploymentをscale


Kubernetes APIをcurlで叩いてdeploymentをスケールさせる手順です。
(curlで実行するくらいならkubectl使ったほうが良いかもしれませんが、何かの言語でリクエストプログラムを作成する際に参考になれば幸いです)
スケールはPATCHメソッドで実行します。

スケール対象の確認

まず対象deploymentの名前とnamespaceを確認します。

kubectl get deploy -n default
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/1     1            1           119m

環境変数に格納しておきます

export DEPLOYMENT=nginx-deployment
export NAMESPACE=default

Kubernetes APIサーバーのエンドポイントと証明書のパスも併せて環境変数に格納します。
(エンドポイントの確認方法はこちらを参照してください。)
クラスター情報取得

export CRTFILE=/Users/sota-n/.minikube/ca.crt
export APISERVER=https://192.168.99.100:8443

パッチの準備

適用するパッチを用意します。

export PATCH='{"spec":{"replicas":2}}'

パッチの適用(スケール)

curlを実行します。
注意点としては、Content-Type:ヘッダーのvalueが application/strategic-merge-patch+json'となっています。

curl -X PATCH \
-H 'Accept: application/json' \
-H 'Content-Type: application/strategic-merge-patch+json' \
-H "Authorization: Bearer ${TOKEN}" \
"${APISERVER}/apis/apps/v1/namespaces/${NAMESPACE}/deployments/${DEPLOYMENT}/scale" -d ${PATCH} --cacert ${CRTFILE}

結果を確認します。

kubectl get deploy -n default
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2/2     2            2           128m

以上です。