Slide 1

Slide 1 text

マスター タイトルの書式設定 KubernetesにおけるCIについて KubeFest Tokyo 2020 - LT

Slide 2

Slide 2 text

マスター タイトルの書式設定 自己紹介  名前 : 松尾  所属 : 株式会社オージス総研  職種 : インフラエンジニア 1

Slide 3

Slide 3 text

マスター タイトルの書式設定 そもそもCIとは? 2

Slide 4

Slide 4 text

マスター タイトルの書式設定 そもそもCIとは?  Continuous Integrationの略  継続的インテグレーションと呼ばれている  開発者がコード変更を行うたびに、自動化されたビルドやテストを行うこと  これにより、小さなサイクルでインテグレーションを繰り返し行い、エラー修正や開発を迅速に行 うことが出来る 3 Plan Code Build Test Release Deploy Operate Continuous Integration

Slide 5

Slide 5 text

マスター タイトルの書式設定 CIの構成要素 4

Slide 6

Slide 6 text

マスター タイトルの書式設定 CIの構成要素 5  このうちテストには  Lint、コード規約、ユニットテスト  デプロイテスト  結合テスト  負荷テスト  脆弱性チェック  シークレットチェック  ベストプラクティスチェック  コンプライアンスチェック  カオスエンジニアリング  ・・・  今回は主に、テストについてお話します Code Build Test

Slide 7

Slide 7 text

マスター タイトルの書式設定 Kubernetesの構成要素 6

Slide 8

Slide 8 text

マスター タイトルの書式設定 物理/VMホスト 物理/VMホスト Kuberntesクラスタ コンテナ 従来システムの構成要素 Kubernetesを使ったシステムの構成要素 OS アプリケーション ミドルウェア OS アプリケーション ミドルウェア 7 Kubernetesの構成要素 ※簡略化して書いています

Slide 9

Slide 9 text

マスター タイトルの書式設定 Gitリポジトリ コンテナレジストリ Dockerfile アプリケーション コンテナイメージ Manifest 適用 物理/VMホスト Kuberntesクラスタ コンテナ OS アプリケーション ミドルウェア 8 Kubernetesの構成要素 開発者 ※簡略化して書いています プッシュ 静的なもの 動的なもの

Slide 10

Slide 10 text

マスター タイトルの書式設定 レイヤー 静的な 構成要素 動的な 構成要素 物理/VM等の インフラ構成 Terraform、CFn等 実環境 Kubernetes Manifest Kubernetesクラスタ コンテナ Dockerfile ベースイメージ コンテナイメージ ミドルウェア パッケージ アプリケーションコード リポジトリ Gitリポジトリ - コンテナ レジストリ - 9 Kubernetesの構成要素

Slide 11

Slide 11 text

マスター タイトルの書式設定 Kubernetsの構成要素に対する テスト例 10

Slide 12

Slide 12 text

マスター タイトルの書式設定 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

Slide 13

Slide 13 text

マスター タイトルの書式設定 いつテストを行うべきか? 12

Slide 14

Slide 14 text

マスター タイトルの書式設定 いつテストを行うべきか? 13  一般的にはShift Left Testingという考え方があり、ライフサイクルのより手前、つ まり静的なものに対して、早期かつ頻繁にテストを行うべきと言われています。 Gitリポジトリ コンテナレジストリ Dockerfile コンテナイメージ Manifest 適用 物理/VMホスト Kuberntesクラスタ コンテナ OS アプリケーション ミドルウェア 開発者 プッシュ 静的なもの 動的なもの テスト

Slide 15

Slide 15 text

マスター タイトルの書式設定 KubernetesにおけるCI例 14

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

マスター タイトルの書式設定 KubernetesにおけるCI例 16 Manifest Kubernetes クラスタ Push CIツール • Manifest • Yamlフォーマットチェック • ユニットテスト • ベストプラクティスチェック • ガバナンスチェック • シークレットチェック 適用 git Hook conftest Git-secrets kubetest kubeval k8s admin

Slide 18

Slide 18 text

マスター タイトルの書式設定 こちらも良ければお願いします

Slide 19

Slide 19 text

マスター タイトルの書式設定 Shift Leftを心掛けてKubernetesでも CIをやっていきましょう!