はじめに
ここでは、Kubernetes 1.17 の CHANGELOG から SIG-CLI (kubectl) の取り組みについてまとめています。
新たに追加されたコマンドとフラグ
-
kubectl api-resources --sort-by
フラグ: 値が空でない場合に指定したフィールドを使ってリストを並び替える。name または kind のどちらかを指定できる。 -
kubectl logs --insecure-skip-tls-verify-backend
フラグ: ログの取得をリクエストした kubelet の TLS サーバ証明書の検証を省略する。kubelet が配信する証明書の有効期限が切れている場合に有用だが、攻撃者が不正なログコンテンツを提供することが理論的には可能になる。 -
kubectl logs --prefix
フラグ: 各行の先頭に Pod 名とコンテナ名を付与する
廃止予定のコマンドとフラグ
-
kubectl convert
(v1.17 で削除予定だったが削除されておらず) -
kubectl get --export
フラグ(v1.18 で削除予定)
削除されたコマンドとフラグ
- ありません
そのほか、細かい変更は、 https://github.com/superbrothers/kubectl-docs/compare/v1.16.0...v1.17.0 で参照できます。
What's New (新情報)
SIG-CLI に関する大きな変更はありません。
Urgent Upgrade Notes(必ず一読してからアップグレードしなければならない事項)
SIG-CLI に関する事項はありません。
Deprecations and Removals (廃止および削除)
SIG-CLI に関する機能の廃止および削除はありません。
CLI の改善
-
kubectl api-resources
コマンドはname
またはkind
によりリソースをソートする--sort-by
フラグをサポートしました (#81971, laddng) -
kubectl logs
コマンドは、取得元(Pod 名とコンテナ名)に関する情報を各行の先頭に追加する--prefix
フラグをサポートしました (#76471, m1kola)
その他の主な変更
-
kubectl get endpointslice
の出力が修正されました (#82603, robscott)-
1.16 では get/list の出力に
NAME
とAGE
のカラムしか含まれていなかったのを、ADDRESS TYPE
,PORTS
,ENDPOINTS
を含むように修正されました
-
1.16 では get/list の出力に
-
kubectl delete
で誤ったリソースを使った場合に正しいエラーメッセージが出力されるようになりました (#83825, zhouya0)-
この変更で存在しないリソースを指定した場合に正しく
error: the server doesn't have a resource type "unknown"
("unknown" リソースタイプは存在しません) と出力されるように修正されました
-
この変更で存在しないリソースを指定した場合に正しく
- kubectl コマンドに誤ったフラグを指定した場合に、ヘルプメッセージ全体ではなく
--help
を実行するようにという TIP を表示するだけになりました (#82423, sallyom)- 66572 によると、ヘルプメッセージが大きすぎてものによっては2ページ以上となり冗長で、エラーメッセージが直接確認できないという課題からの変更のようです
-
kubectl apply
のようなコマンドで不正なスキームのアノテーションが指定されていた場合に、これまではアノテーション全体を何ごともないように廃棄するのではなくエラーを返すようになりました。 (#83552, liggitt)-
アノテーションの値は文字列しか受け付けませんが、そこに数字や
on/off/yes/no
などが指定されている場合は何ごともなかったかのようにアノテーション全体を除いてオブジェクトが作成されてしまっていたようです
-
アノテーションの値は文字列しか受け付けませんが、そこに数字や
- StatefulSet に対して
kubectl rollout history
を実行したときに存在しない 0 リビジョンがリストされる問題が修正されました (#82643, ZP-AlwaysWin)- 表示上だけの問題だったようです
- ドキュメントに存在するすでに使用されてない kustomize サブコマンドへの参照が修正されました (#82535, demobox)
-
The kubectl book で
kustomize edit set imagetag
となっていたところがset image
に修正したというものです
-
The kubectl book で
-
kubectl set resources/subject
で結果に変更がなかった場合にエラーを返すことがなくなりました (#85490, sallyom)- 同じ変更を2回実行した場合に、2回目の結果に変更がない場合にこれまでは「変更がない」というエラーが返っていましたが、今後は成功(終了コード 0)となるように変更されました。コマンドがべき等性を持つようになったと言えますね。
- kubectl の
--resource-version
フラグは他のクライアントと対象のオブジェクトの更新で競合しているときであってもlabel/annotate/set selector
コマンドで正しく動作するようになりました (#85285, liggitt) -
--certificate-authority
フラグは kubeconfig ファイルの skip-TLS または CA データの設定を正しく上書きするようになりました (#83547, liggitt)
所感
v1.17 では SIG-CLI に関して特に大きな変更はなく、細かな改善が中心となりました。