Kubernetes基盤における性能試験を、CI/CD に組み込み自動化した話です。
2022/03/23 Kubernetes Novice Tokyo #17Kubernetes 基盤における非機能試験の deepdive〜 性能試験は CI/CD にお任せ! 〜氏名:逆井 啓佑(さかさい けいすけ)
View Slide
自己紹介- 2022/03/23 Kubernetes Novice Tokyo #17 -逆井 啓佑さかさいbelongs:日系 Siercarrier: 一年目:”決済サービスの企画・営業 ” 二年目:”Kubernetes 基盤の非機能試験チーム ”# 参画直後、k8s や IaC (terra/helm) …??# 試験環境に太古の tf ファイルを apply し環境破壊を経験kind: destroyerdescription: 最低限の技術力を身につけなければ...ということで、 会社の研修制度で CN・Kubernetes 塾 に参加し、半年間の研鑽ついこの前修了発表なるものが終わりました!
ついこの前修了発表なるものが終わりました!belongs:carrier: 一年目:”決済サービスの企画・営業 ” 二年目:”Kubernetes 基盤の非機能試験チーム ”# 参画直後、k8s や IaC (terra/helm) …??# 試験環境に太古の tf ファイルを apply し環境破壊を経験kind: destroyerdescription: 最低限の技術力を身につけなければ...ということで、 会社の研修制度で CN・Kubernetes 塾 に参加し、半年間の研鑽自己紹介- 2022/03/23 Kubernetes Novice Tokyo #17 -逆井 啓佑さかさい本日は、研修活動での 半年間の 成果を短く LT させてください!研修のモノもあるので、少ーしだけカタイ見栄えとなるかもです...・・・
イントロダクション半年間の活動では、なんちゃって非機能試験担当として、「k8s 基盤での 非機能試験 deepdive」というテーマで活動をしておりました。※ 性能 / 可用性 / セキュリティ とか- 2022/03/23 Kubernetes Novice Tokyo #17 -❶ 性能試験自動化● GKE, Gitlab CI, Argo CD を用いた、GitOps なインフラストラクチャの構築● 性能試験を CI/CD に組み込み、デプロイ検知で自動実行❷ カオスエンジニアリング● 障害試験ツール「Chaos Mesh」を用いた、k8s 基盤における障害試験の検証demo付
イントロダクション半年間の活動では、なんちゃって非機能試験担当として、「k8s 基盤での 非機能試験 deepdive」というテーマで活動をしておりました。※ 性能 / 可用性 / セキュリティ とか- 2022/03/23 Kubernetes Novice Tokyo #17 -❶ 性能試験自動化● GKE, Gitlab CI, Argo CD を用いた、GitOps なインフラストラクチャの構築● 性能試験を CI/CD に組み込み、デプロイ検知で自動実行❷ カオスエンジニアリング● 障害試験ツール「Chaos Mesh」を用いた、k8s 基盤における障害試験の検証demo付性能試験自動化のところにフォーカスを当てて今回はここのみ話します。10 min. LTなので...
性能試験における課題感とある、性能試験の一日...(実際の現場を、かなりイメージで示しています)開発 TmMe(試験 Tm)テスト環境① 新しい資材のデプロイ② 「性能試験よろ」③ 負荷試験ツールGatling を手動で実行④ 終わったら結果解析💦- 2022/03/23 Kubernetes Novice Tokyo #17 -
性能試験自動化のモチベーション- 2022/03/23 Kubernetes Novice Tokyo #17 -とある、性能試験の一日...(実際の現場を、かなりイメージで示しています)開発 TmMe(試験 Tm)テスト環境Gatling コンテナの Job 実行③ 負荷試験ツールGatling を手動で実行② 「性能試験よろ」① 新しい資材のデプロイArgo CD を用いたデプロイ検知(おまけ)● Slack への解析通知● GCS への Report UPL④ 終わったら結果解析💦Argo CDGitOps に則った CD ツール。自動デプロイ・同期などの機能を持つ。② 「性能試験よろ」① 新しい資材のデプロイ③ 負荷試験ツールGatling を手動で実行
性能試験自動化のモチベーションとある、性能試験の一日...(実際の現場を、かなりイメージで示しています)開発 TmMe(試験 Tm)テスト環境結果フィードバックデプロイテストGitOps な CI/CD にテストを組み込み、高品質 でアジリティーの高いリリース基盤を構築- 2022/03/23 Kubernetes Novice Tokyo #17 -
今回構築したものはこれ- 2022/03/23 Kubernetes Novice Tokyo #17 -APP のリソース(manifest)を管理GatlingAPP(自作)のイメージを管理nginxapp
apiVersion: batch/v1kind: Jobmetadata:name: gatling-jobannotations:argocd.argoproj.io/hook: PostSyncspec:template:spec:volumes:- name: google-cloud-keysecret:secretName: cn-ksakasai-gcs-accesskeycontainers:- name: postsyncimage: registry.gitlab.com/keisuke.sakasai/gatling:maincommand:- 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/xxxEOFちょっとだけ詳細(ジョブのマニフェスト)Resource Hookの設定- Argo CD のデプロイ終了を検知して実行Gatling コンテナイメージの指定- Gitlab CI でビルドされたものコンテナ内処理● Gatling 実行● GCS へのレポートアップロード● レポート解析 / Slack 通知- 2022/03/23 Kubernetes Novice Tokyo #17 -
デモンストレーション- 2022/03/23 Kubernetes Novice Tokyo #17 -
まとめ- 2022/03/23 Kubernetes Novice Tokyo #17 -自分の手を動かし、構築することで、Kubernetes 初学者になることができました
最後に (恐縮ですが) 宣伝- 2022/03/23 Kubernetes Novice Tokyo #17 -カオスエンジニアリングについての講演をするかも...抽選中...
記載されている会社名、商品名、またはサービス名は、各社の商標登録または商標です。