FIXER cloud.config Tech Blog
Kubernetesの「kubectl wait」でいろいろ待機してみよう
2023年03月02日 10時00分更新
本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「kubectl waitでいろいろ待ってみよう#Kubernetesリレー」を再編集したものです。
Kubernetesはマニフェストファイルを用いて状態を定義することで、思い描く環境を作ることができるのが便利ですよね。
ただ、ある一定の前提を満たさないと状態が定義できない時があります。
例えばnamespaceが事前に存在していないと、その名前空間にはリソースが作れません。
namespaceの場合は`kubectl create namespace`を実行してからほかの作業を実施するような順次実行をすることで解決できますね。
これで解決しないとき、例えばKubernetes Operatorのインストール完了を待機したい場合はどうすると良いでしょうか?
kubectl waitで作業完了を待機
kubectl waitというコマンドがあります。
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#wait
このコマンドは、リソースの状態が指定した状態になるのを待機してくれます。
分かりやすい話だと例えば、deploymentがavailableになるのを待機するには下記のように記載します。
kubectl wait --timeout=90s --for=condition=available deployment/name-of-deployment
timeoutの指定により、90秒以内に状態が変わらなければ諦めます。
こちらはdeployment以外にも適用できるようで、Kubernetes Operatorのインストールに使われるinstallplanがinstalledになるのを待機するにはこんな風に書けば良さそうです。
kubectl wait --timeout=90s --for=condition=installed installplan/name-of-installplan -n operators
このあたりを組み合わせれば、Kubernetes Operator のインストール処理の完了を待機して後続処理を実装することができそうですね。
まとめ
短いですが、さまざまなリソースの状態を待機できるkubectl waitについてご紹介してみました。
特に初期セットアップの自動化に役立つコマンドなのではないでしょうか?
松枝 宏樹/FIXER
愛知県在住、リモートワーク気味なエンジニア。
得意分野はC#、ASP.NET、terraform、AKSなど。