Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

CI in kubernetes

Avatar for matsuo matsuo
June 13, 2020

CI in kubernetes

Avatar for matsuo

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