はじめに
Kubernetes v1.11 その他の主な変更点から SIG CLI の変更についてまとめています。
新たに追加されたコマンド
-
kubectl wait
: 指定したリソースが特定のコンディションになるまで待つ -
kubectl api-resources
: 利用できるリソースタイプ一覧を出力する
廃止予定のコマンド
kubectl rolling-update
その他オプションの追加、削除などの変更は、https://github.com/superbrothers/kubectl-docs/compare/v1.10.0...v1.11.0 で確認できます。
SIG-CLI その他の主な変更点
kubectl -o go-template
の中で base64decode
関数が利用できるようになりました
Secret オブジェクトはデータが全て base64 エンコードされて記録されています。取得したのちに base64 -d
でデコードするなどで行われていましたが、外部コマンドを利用することなくデコードできるようになりました。地味に便利な改善です。
$ kubectl get secret SECRET -o go-template='{{ .data.KEY | base64decode }}'
- You can now use the
base64decode
function in kubectl go templates to decode base64-encoded data, such askubectl get secret SECRET -o go-template='{{ .data.KEY | base64decode }}'
. (#60755, @glb)
kubectl config view --minify
コマンドで --context
フラグを利用して出力するコンテキストを出力できるようになりました
kubectl config view --minify
は kubeconfig の中から現在のコンテキストの設定のみを出力するコマンドでしたが、--context
フラグを利用して出力するコンテキストを指定できるようになりました。
$ kubectl config view --minify --context minikube
- The global flag "context" now gets applied to
kubectl config view --minify
. In previous versions, this command was only available forcurrent-context
. Now it will be easier for users to view other non current contexts when minifying. (#64608, @dixudx)
削除や特定の状況に指定したリソースがなることを待つことができる kubectl wait
コマンドが追加されました
CD などにおいては、次の e2e テストのステージを実行するためにコンテナイメージが実行されるまで待ちたい要望が以前からあり、これまではスクリプトなどでやってきましたが、ついに kubectl にその機能が追加されました。デフォルトでは30秒間特定のリソースが指定した状態になるまで待つことができます。
$ kubectl run nginx --replicas=5 --image=nginx && kubectl wait deploy/nginx --for condition=available
deployment.apps/nginx created
deployment.extensions/nginx condition met
-
kubectl wait
is a new command that allows waiting for one or more resources to be deleted or to reach a specific condition. It adds akubectl wait --for=[delete|condition=condition-name] resource/string
command. (#64034, @deads2k)
API リソースの一覧を出力する kubectl api-resources
コマンドが追加されました
これまで API versions を取得する kubectl api-versions
コマンドはありましたが、API リソースの一覧を出力するのは面倒でした。kubectl api-resources
コマンドは apiserver から動的に API リソースの一覧を取得して出力します。-o wide
オプションを利用すると、各リソースで対応している Verbs も出力されます。
--all
, -l
, --field-selector
などの対象を選択した kubectl delete
の利用で、"not found" エラーを無視するように変更されました
これまで、--all
, -l
. --field-selector
などの対象を選択した kubectl delete
の実行は対象が見つからなかったとき "not found" エラーとなっていましたが、これが無視され成功するように変更されました。ただし、特定のリソースを指定して実行したときに、対象のリソースが見つからなかった場合はエラーになることに注意してください。
- When using
kubectl delete
with selection criteria, the defaults to is now to ignore "not found" errors. Note that this does not apply when deleting a speciic resource. (#63490, @deads2k)
その他
-
kubectl patch
now supports--dry-run
. (#60675, @timoreimann) - The global flag
--match-server-version
is now global.kubectl version
will respect it. (#63613, @deads2k) - kubectl will list all allowed print formats when an invalid format is passed. (#64371, @CaoShuFeng)
-
kubectl apply --prune
supports CronJob resources. (#62991, @tomoe) - The
--dry-run
flag has been enabled forkubectl auth reconcile
(#64458, @mrogers950) -
kubectl auth reconcile
only works with rbac.v1; all the core helpers have been switched over to use the external types. (#63967, @deads2k) - kubectl and client-go now detect duplicated names for user, cluster and context when loading kubeconfig and report this condition as an error. (#60464, @roycaihw)
- Added 'UpdateStrategyType' and 'RollingUpdateStrategy' to 'kubectl describe sts' command output. (#63844, @tossmilestone)
- Initial Korean translation for kubectl has been added. (#62040, @ianychoi)
-
kubectl cp
now supports completion.
(#60371, @superbrothers) - The shortcuts that were moved server-side in at least 1.9 have been removed from being hardcoded in kubectl. This means that the client-based restmappers have been moved to client-go, where everyone who needs them can have access. (#63507, @deads2k)
-
kubectl create [secret | configmap] --from-file
now works on Windows with fully-qualified paths (#63439, @liggitt) - Portability across systems has been increased by the use of
/usr/bin/env
in all script shebangs. (#62657, @matthyx) - You can now display requests/limits of extended resources in node allocated resources. (#46079, @xiangpengzhao)
- The
--remove-extra-subjects
and--remove-extra-permissions
flags have been enabled forkubectl auth reconcile
(#64541, @mrogers950) - kubectl now has improved compatibility with older servers when creating/updating API objects (#61949, @liggitt)
-
kubectl apply
view/edit-last-applied now supports completion. (#60499, @superbrothers)