Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI in kubernetes

matsuo
June 13, 2020

CI in kubernetes

matsuo

June 13, 2020
Tweet

More Decks by matsuo

Other Decks in Technology

Transcript

  1. マスター タイトルの書式設定 自己紹介  名前 : 松尾  所属 :

    株式会社オージス総研  職種 : インフラエンジニア 1
  2. マスター タイトルの書式設定 そもそもCIとは?  Continuous Integrationの略  継続的インテグレーションと呼ばれている  開発者がコード変更を行うたびに、自動化されたビルドやテストを行うこと

     これにより、小さなサイクルでインテグレーションを繰り返し行い、エラー修正や開発を迅速に行 うことが出来る 3 Plan Code Build Test Release Deploy Operate Continuous Integration
  3. マスター タイトルの書式設定 CIの構成要素 5  このうちテストには  Lint、コード規約、ユニットテスト  デプロイテスト

     結合テスト  負荷テスト  脆弱性チェック  シークレットチェック  ベストプラクティスチェック  コンプライアンスチェック  カオスエンジニアリング  ・・・  今回は主に、テストについてお話します Code Build Test
  4. マスター タイトルの書式設定 Gitリポジトリ コンテナレジストリ Dockerfile アプリケーション コンテナイメージ Manifest 適用 物理/VMホスト

    Kuberntesクラスタ コンテナ OS アプリケーション ミドルウェア 8 Kubernetesの構成要素 開発者 ※簡略化して書いています プッシュ 静的なもの 動的なもの
  5. マスター タイトルの書式設定 レイヤー 静的な 構成要素 動的な 構成要素 物理/VM等の インフラ構成 Terraform、CFn等

    実環境 Kubernetes Manifest Kubernetesクラスタ コンテナ Dockerfile ベースイメージ コンテナイメージ ミドルウェア パッケージ アプリケーションコード リポジトリ Gitリポジトリ - コンテナ レジストリ - 9 Kubernetesの構成要素
  6. マスター タイトルの書式設定 Kubernetsの構成要素に対するテスト例  静的テスト(ファイル)  アプリケーションプログラム  Lint、コード規約 

    ユニットテスト  インフラ構成(CFn)  Lint(cfn-lint)  セキュリティチェック(cfn-ng)  Dockerfile  ベストプラクティスチェック(hadolint)  K8s Manifest  セキュリティチェック(kubesec)  自作ガバナンスルールのチェック(conftest)  Yamlフォーマットチェック(kubeval)  結合テスト(kubetest)  その他  Gitシークレットチェック(Git-secrets)  静的テスト(コンテナイメージ)  CVE脆弱性チェック(Trivy)  CISベンチマーク、ベストプラクティスのチェック(dockle)  動的テスト  実際にテストクラスタにデプロイして簡易的なテストを行う(kind)  カオスエンジニアリング(litmus) 11
  7. マスター タイトルの書式設定 いつテストを行うべきか? 13  一般的にはShift Left Testingという考え方があり、ライフサイクルのより手前、つ まり静的なものに対して、早期かつ頻繁にテストを行うべきと言われています。 Gitリポジトリ

    コンテナレジストリ Dockerfile コンテナイメージ Manifest 適用 物理/VMホスト Kuberntesクラスタ コンテナ OS アプリケーション ミドルウェア 開発者 プッシュ 静的なもの 動的なもの テスト
  8. マスター タイトルの書式設定 KubernetesにおけるCI例 15 Push CIツール • アプリケーションコード • Lint、ユニットテスト

    • Dockerfile • 脆弱性チェック • ベストプラクティスチェック • 全ファイル • シークレットチェック --- ビルド実施 --- • コンテナイメージ • ベストプラクティスチェック Push git Hook dev アプリケーション コード Dockerfile コンテナレ ジストリ Git-secrets コンテナ イメージ
  9. マスター タイトルの書式設定 KubernetesにおけるCI例 16 Manifest Kubernetes クラスタ Push CIツール •

    Manifest • Yamlフォーマットチェック • ユニットテスト • ベストプラクティスチェック • ガバナンスチェック • シークレットチェック 適用 git Hook conftest Git-secrets kubetest kubeval k8s admin