Member-only story

Ginkgo、Gomega、Operator Runtimeを使ったKubernetesのオペレータのテスト

gavin.zhou
10 min readAug 17, 2020

--

私は最近、Kubenetes Operator を本番環境で行った経験について書きましたが、その大部分はもちろんテストです。この記事では、テストの話をもう少し深く掘り下げます。

Prescaled CronJobオペレータを参照ください: https://github.com/microsoft/k8s-cronjob-prescaler.

始めに

本当に良い記事が載っています。自力で実行するのに役立つGinkgoのドキュメントもあります。まずは以下の2つのガイドを読んでみてください。

Ginkgoを使ってオペレーターをテストすることに焦点を当てます。

Writing your Tests

私たちのテストは基本的に Kubernetes のオペレータにオブジェクトを送信して、戻ってきたものが正しいかどうかをチェックしているので、Kubernetes のマネージャーとクライアントが必要です。私たちのBeforeSuite メソッドでは次のようになります。

k8sManager, err = ctrl.NewManager(cfg, ctrl.Options{Scheme:             scheme.Scheme,MetricsBindAddress: metricsAddr,})k8sManager.Start(ctrl.SetupSignalHandler())k8sClient = k8sManager.GetClient()

では、リソースを作成してk8sで実行してみましょう。以下のコードは Describe / Context / It ブロックを示しており、ここでは *some* オブジェクトを Kubernetes に送信しています。これはポッド、デプロイメント、または独自の CRD のいずれかです。

var _ = Describe("PrescaledCronJob Controller", func() {Context("Cronjob Autogeneration", func() {It("Should create cronjob correctly", func() {

--

--

No responses yet