Namespace の Kubernetes クラスターで実行されている pytest で記述されたエンドツーエンドのテストがありますfoo
。ここで、単純なカオス エンジニアリングをテストに追加して、サービスの回復力を確認したいと考えています。このために、特定のポッドを削除するだけで済みますfoo
。K8s は対応するサービスを再起動するため、サービスが一時的に到達不能になることをシミュレートします。
Pythonで現在の名前空間にある特定のポッドを削除する簡単な方法は何ですか?
私がこれまでに試したこと:
https://github.com/kubernetes-client/python/tree/master/examplesで適切な例が見つかりませんでしたが、ポッドを使用するものは非常に複雑に見えたので、調べてみましたkubetest
。これは非常にシンプルでエレガントに見えます。
kube
私はフィクスチャを使用してから、次のようなことをしたかった:
pods = kube.get_pods()
for pod in pods:
if can_be_temporarily_unreachable(pod):
kube.delete(pod)
パラメーターを指定して pytest を呼び出すと、現在のクラスター設定を使用し、新しい K8s リソースを作成しないように--in-cluster
指示されると思いました。kubetest
ただし、フィクスチャkubetest
を使用するテストケースごとに新しい名前空間を作成したいのkube
ですが、これは望ましくありません。kubetest
新しい名前空間を作成するのではなく、現在の名前空間ですべてを行うように指示する方法はありますか?
それ以外の場合は非常にシンプルでエレガントkubetest
に見えますが、別のソリューションも喜んで使用します。時間とメンテナンスをほとんど必要とせず、テストを複雑にする (読み取る) ことのないシンプルなソリューションはすばらしいでしょう。