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

性能試験はCI/CDにお任せ

 性能試験はCI/CDにお任せ

Kubernetes基盤における性能試験を、CI/CD に組み込み自動化した話です。

逆井啓佑

March 24, 2022
Tweet

More Decks by 逆井啓佑

Other Decks in Technology

Transcript

  1. 2022/03/23 Kubernetes Novice Tokyo #17 Kubernetes 基盤における非機能試験の deepdive 〜 性能試験は CI/CD

    にお任せ! 〜 氏名:逆井 啓佑(さかさい けいすけ)
  2. 自己紹介 - 2022/03/23 Kubernetes Novice Tokyo #17 - 逆井 啓佑

    さかさい belongs:日系 Sier carrier:   一年目:”決済サービスの企画・営業 ”   二年目:”Kubernetes 基盤の非機能試験チーム ” # 参画直後、k8s や IaC (terra/helm) …?? # 試験環境に太古の tf ファイルを apply し環境破壊を経験 kind: destroyer description:     最低限の技術力を身につけなければ...ということで、     会社の研修制度で CN・Kubernetes 塾 に参加し、半年間の研鑽 ついこの前 修了発表なるものが 終わりました!
  3. ついこの前 修了発表なるものが 終わりました! belongs: carrier:   一年目:”決済サービスの企画・営業 ”   二年目:”Kubernetes 基盤の非機能試験チーム ”

    # 参画直後、k8s や IaC (terra/helm) …?? # 試験環境に太古の tf ファイルを apply し環境破壊を経験 kind: destroyer description:     最低限の技術力を身につけなければ...ということで、     会社の研修制度で CN・Kubernetes 塾 に参加し、半年間の研鑽 自己紹介 - 2022/03/23 Kubernetes Novice Tokyo #17 - 逆井 啓佑 さかさい 本日は、研修活動での 半年間の 成果を 短く LT させてください! 研修のモノもあるので、少ーしだけカタイ見栄えとなるかもです... ・・・
  4. イントロダクション 半年間の活動では、なんちゃって非機能試験担当として、 「k8s 基盤での 非機能試験 deepdive」というテーマで活動をしておりました。 ※ 性能 / 可用性

    / セキュリティ とか - 2022/03/23 Kubernetes Novice Tokyo #17 - ❶ 性能試験自動化 • GKE, Gitlab CI, Argo CD を用いた、 GitOps なインフラストラクチャの構築 • 性能試験を CI/CD に組み込み、デプロイ検知で自動実行 ❷ カオスエンジニアリング • 障害試験ツール「Chaos Mesh」を用いた、 k8s 基盤における障害試験の検証 demo付
  5. イントロダクション 半年間の活動では、なんちゃって非機能試験担当として、 「k8s 基盤での 非機能試験 deepdive」というテーマで活動をしておりました。 ※ 性能 / 可用性

    / セキュリティ とか - 2022/03/23 Kubernetes Novice Tokyo #17 - ❶ 性能試験自動化 • GKE, Gitlab CI, Argo CD を用いた、 GitOps なインフラストラクチャの構築 • 性能試験を CI/CD に組み込み、デプロイ検知で自動実行 ❷ カオスエンジニアリング • 障害試験ツール「Chaos Mesh」を用いた、 k8s 基盤における障害試験の検証 demo付 性能試験自動化のところにフォーカスを当てて 今回はここのみ話します。 10 min. LTなので...
  6. 性能試験における課題感 とある、性能試験の一日...(実際の現場を、かなりイメージで示しています) 開発 Tm Me (試験 Tm) テスト環境 ① 新しい資材のデプロイ

    ② 「性能試験よろ」 ③ 負荷試験ツール Gatling を手動で実行 ④ 終わったら結果解析💦 - 2022/03/23 Kubernetes Novice Tokyo #17 -
  7. 性能試験自動化のモチベーション - 2022/03/23 Kubernetes Novice Tokyo #17 - とある、性能試験の一日...(実際の現場を、かなりイメージで示しています) 開発

    Tm Me (試験 Tm) テスト環境 Gatling コンテナの Job 実行 ③ 負荷試験ツール Gatling を手動で実行 ② 「性能試験よろ」 ① 新しい資材のデプロイ Argo CD を用いたデプロイ検知 (おまけ) • Slack への解析通知 • GCS への Report UPL ④ 終わったら結果解析💦 Argo CD GitOps に 則った CD ツール。 自動デプロイ・同期 などの機能を持つ。 ② 「性能試験よろ」 ① 新しい資材のデプロイ ③ 負荷試験ツール Gatling を手動で実行
  8. 性能試験自動化のモチベーション とある、性能試験の一日...(実際の現場を、かなりイメージで示しています) 開発 Tm Me (試験 Tm) テスト環境 結果 フィードバック

    デプロイ テスト GitOps な CI/CD にテストを組み込み、 高品質 でアジリティーの高いリリース基盤を構築 - 2022/03/23 Kubernetes Novice Tokyo #17 -
  9. 今回構築したものはこれ - 2022/03/23 Kubernetes Novice Tokyo #17 - APP の

    リソース (manifest) を管理 Gatling APP(自作) のイメージ を管理 nginx app
  10. apiVersion: batch/v1 kind: Job metadata: name: gatling-job annotations: argocd.argoproj.io/hook: PostSync

    spec: template: spec: volumes: - name: google-cloud-key secret: secretName: cn-ksakasai-gcs-accesskey containers: - name: postsync image: registry.gitlab.com/keisuke.sakasai/gatling:main command: - sh - "-c" - | /bin/bash <<'EOF' ###--- Gatling の実行 /opt/gatling/bin/gatling.sh -s computerdatabase.SampleSimulation ###--- GCS への Report UPL /root/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=/var/secrets/google/cn-ksakasai-gcsAccess.key /root/google-cloud-sdk/bin/gsutil … ###--- Gatling Report の解析 timestamp=${fn:17:4}"/"${fn:21:2}"/"${fn:23:2}" "$((${fn:25:2}+9))":"${fn:27:2}":"${fn:29:2}"" … res=$(cat $fn_js | jq .stats.percentiles4.total) #--- Slack への通知 cp -rf /usr/bin/curl /root/; /root/curl -X POST --data-urlencode "payload={…}" https://hooks.slack.com/services/xxx EOF ちょっとだけ詳細(ジョブのマニフェスト) Resource Hookの設定 - Argo CD のデプロイ終了を検知して実行 Gatling コンテナイメージの指定 - Gitlab CI でビルドされたもの コンテナ内処理 • Gatling 実行 • GCS へのレポートアップロード • レポート解析 / Slack 通知 - 2022/03/23 Kubernetes Novice Tokyo #17 -
  11. デモンストレーション - 2022/03/23 Kubernetes Novice Tokyo #17 -

  12. まとめ - 2022/03/23 Kubernetes Novice Tokyo #17 - 自分の手を動かし、構築することで、 Kubernetes

    初学者になることができました
  13. 最後に (恐縮ですが) 宣伝 - 2022/03/23 Kubernetes Novice Tokyo #17 -

    カオスエンジニアリングについての講演をするかも... 抽選中...
  14. 記載されている会社名、商品名、 またはサービス名は、各社の商標登録または商標です。