4.4K Views
November 28, 24
スライド概要
CloudNative Days Winter 2024イベントで登壇する「Engineer Enabling!2000名超のエンジニアを支えるGitOps運用ノウハウを大公開 ~GitHub Actionsセルフホステッドランナーを完全プライベートEKSで実現~」の公開資料です。
シンプレクスは1997年の創業以来、メガバンクや大手総合証券を筆頭に、日本を代表する金融機関のテクノロジーパートナーとしてビジネスを展開してきました。現在では、金融領域で培った豊富なノウハウを活用し、金融機関以外の領域でもソリューションを展開しています。2019年3月にはAI企業のDeep Percept株式会社、2021年4月には総合コンサルティングファームのXspear Consulting株式会社がグループに加わり、創業時より付加価値の創造に取り組んできたシンプレクスとワンチームとなって、公的機関や金融機関、各業界をリードする企業のデジタルトランスフォーメーション(DX)の推進を支援しています。
Engineer Enabling! 2000名超のエンジニアを支える GitOps運用ノウハウを大公開 GitHub Actionsセルフホステッドランナーを 完全プライベートEKSで実現 2024/11/28 シンプレクス株式会社 © 2024 Simplex Inc.
目次 • 会社紹介、自己紹介 • 今回の視聴ターゲットおよびポイントについて • システムの全体概要 • 完全プライベートなセキュリティ環境(Amazon EKS) • 運用者目線での効率化(GitOps) • ユーザ体験を重視した設計(Enabling) • 今後の展望 • まとめ 1 © 2024 Simplex Inc.
シンプレクス 会社紹介 金融事業領域を中心にテクノロジーパートナーとしてお客様の収益力強化、生産性向上を支援しています。 近年は官公庁、製造業といった非金融領域に対してもシステム・ソリューションを提供しています。 シンプレクス・ホールディングス 社名 シンプレクス株式会社 事業内容 • コンサルティングサービス • システム開発 • 運用保守 • ASPサービス提供 等 代表取締役社長 金子 英樹 創業年月日 1997年9月16日 資本金 4,750 百万円(2024年3月31日現在) 連結従業員数 1,554名(2024年4月1日現在) 株主 シンプレクス・ホールディングス株式会社 テックファーム 本社所在地 東京都港区虎ノ門1-23-1 虎ノ門ヒルズ森タワー19階 1997年創業 (東証プライム:4373) シンプレクス クロスピア ビジネスプラットフォームの構築 “IDC FinTech Rankings”に13年連続で選出 DXビジネス戦略の立案 コンサルファーム 2021年創設 AWSパートナーネットワークにおける認定 2 © 2024 Simplex Inc.
登壇者紹介 DevOpsエンジニアとして様々なプロジェクトのCI/CD導入を推進し、開発者の生産性向上を支援。 社内の共通基盤としてのGitHubを始めとする、CI/CDに欠かせないサービスの運営を中心に活動中。 経歴 • インフラ領域のエンジニアとして下流から上流工程までを幅広く経験 • GitやCIツールが無い開発現場に0から環境を構築、4000行に及ぶビルド用シェルを解析し Ansibleに置き換え、保守性を高めながらリリースサイクルを従来の3分の1まで圧縮 • 近年は社内コーポレートIT部門として、現場のプロジェクトにかかるセキュリティや 監査の負荷を軽減しつつ、ガバナンスを強化するためのCI/CD基盤施策に従事 西山健太郎 クロスフロンティア・ディビジョン リード 3 © 2024 Simplex Inc.
組織体制と自チームのご紹介 Mission :社内のプロジェクトが利用する開発用プラットフォームの維持/運用がメインミッション! シンプレクス株式会社 Division1:リテール金融 コーポレートIT/情報セキュリティユニット ・情報システム、CSIRT/SOC Division2:キャピタルマーケット クラウドDXユニット Division3:保険ソリューション ・クラウドインテグレーション事業 Division4:エンタープライズDX 金融インフラユニット ERP全般/モーゲージバンク/SaaS Employee Enabling Unit DevSupport ・金融事業向け基盤サービス インフラ&DX推進グループ 運用中社内向けサービス一覧 主な業務 ・ GitHub Enterprise Server ・左記サービス群の運用、保守、機能拡張 ・ GitHub Enterprise Cloud ・開発プロジェクトのCI構築、導入支援 ・ GitHub Actions セルフホステッドランナー ・利用者へのCIに関するサポート ・ Jenkins ・ Nexus3 など 4 © 2024 Simplex Inc.
今回の視聴ターゲットおよびポイントについて 主な視聴ターゲット層 説明Point 特にCI/CD共通基盤を運営している方 また、CI/CDツールを構築している開発者の方 弊社のノウハウを是非ご参考ください! 5 1 完全プライベートなセキュリティ環境 on Amazon EKS ! 2 運用者目線での効率化 by GitOps ! 3 ユーザ体験を重視した設計 for Enabling ! © 2024 Simplex Inc.
システムの全体概要 DevSupport チーム発足以前 各々のプロジェクトが自前でSVNやGitLab、Jenkins等を構築していた。 一部有志メンバーでタスクフォースチームを結成、CI/CD環境の共通化に取り組む。 6 © 2024 Simplex Inc.
システムの全体概要 DevSupport チーム発足以前 2017年~ 各々のプロジェクトが自前でSVNやGitLab、Jenkins等を構築していた。 一部有志メンバーでタスクフォースチームを結成、CI/CD環境の共通化に取り組む。 GitHub Enterprise Server(オンプレ) ビルド環境であるサーバをプロジェクト毎に およびJenkinsを共通基盤として提供開始 都度申し込みベースで追加作業を実施 7 © 2024 Simplex Inc.
システムの全体概要 DevSupport チーム発足以前 2017年~ 各々のプロジェクトが自前でSVNやGitLab、Jenkins等を構築していた。 一部有志メンバーでタスクフォースチームを結成、CI/CD環境の共通化に取り組む。 GitHub Enterprise Server(オンプレ) ビルド環境であるサーバをプロジェクト毎に およびJenkinsを共通基盤として提供開始 都度申し込みベースで追加作業を実施 GitHub Enterprise Cloud と併せて 2023.8月~ GitHub Actions (セルフホステッドランナー) リポジトリに WF定義ファイルを配置するだけ で利用可能 の提供を開始! 8 © 2024 Simplex Inc.
システムの全体概要 DevSupport チーム発足以前 2017年~ 各々のプロジェクトが自前でSVNやGitLab、Jenkins等を構築していた。 一部有志メンバーでタスクフォースチームを結成、CI/CD環境の共通化に取り組む。 GitHub Enterprise Server(オンプレ) ビルド環境であるサーバをプロジェクト毎に およびJenkinsを共通基盤として提供開始 都度申し込みベースで追加作業を実施 GitHub Enterprise Cloud と併せて 2023.8月~ GitHub Actions (セルフホステッドランナー) リポジトリに WF定義ファイルを配置するだけ で利用可能 の提供を開始! CI利用までのハードルが下がった! 9 © 2024 Simplex Inc.
システムの全体概要 従来 Jenkins 管理サーバ 個々のサーバを メンテナンス 申請ベースで ビルドサーバを追加 プロジェクト毎のビルドサーバが常駐 (100台以上) 10 © 2024 Simplex Inc.
システムの全体概要 従来 現在 Jenkins 管理サーバ セルフホステッドランナー on Kubernetes 個々のサーバを メンテナンス 申請ベースで ビルドサーバを追加 GitHubが公式提供する Actions Runner Cotroller でビルド環境(ランナー)が 必要に応じてスケールする リソースの効率的な利用! プロジェクト毎のビルドサーバが常駐 (100台以上) メンテナンスコスト大幅減! 11 © 2024 Simplex Inc.
システムの全体概要 一般的な利用 GitHub Actions, GitLab Runner など SaaS各社のホステッドランナー 各社がホストする ランナー上で実行 各社のネットワーク環境に依存するため 自社の通信統制を効かせることができない 12 © 2024 Simplex Inc.
システムの全体概要 一般的な利用 弊社の環境 GitHub Actions, GitLab Runner など SaaS各社のホステッドランナー 自社環境に構築するビルド環境である セルフホステッドランナー 各社がホストする ランナー上で実行 弊社 セキュリティポリシー 各社のネットワーク環境に依存するため 自社の通信統制を効かせることができない 自社内のセキュアな環境を利用! 13 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 ① プロキシ+SSLインスペクションによる セキュアな社内環境 ② Amazon EKSクラスターの 各リソースをプロキシ経由にする ビルド環境も社内ネットワークと同等の 各種リソースをプロキシを経由させる セキュリティ基準を満たす ためには様々な考慮が必要 14 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 ① プロキシ+SSLインスペクションによるセキュアな社内環境 Point • 社内環境からインターネットにアクセスする際は、プロキシサーバを経由。全トラフィックを検査してセキュリティ担保。 弊社のセキュリティポリシーの基本: 社内環境 SSLインスペクション プロキシ サーバー 利用者 インターネット FWでのアクセス制御 15 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 ① プロキシ+SSLインスペクションによるセキュアな社内環境 Point • 社内環境からインターネットにアクセスする際は、プロキシサーバを経由。全トラフィックを検査してセキュリティ担保。 • インターネットGWを持たない、プライベートなVPCを社内環境と接続。最小限のポリシーでプロジェクトに提供。 弊社のセキュリティポリシーの基本: 社内ネットワークの延長として繋がるVPC: 社内環境 データセンター VPC Internet gateway SSLインスペクション プロキシ サーバー Virtual private cloud (VPC) インターネット 社内ネットワーク 利用者 FWでのアクセス制御 AWS Direct Connect 16 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 完全プライベートEKSとは Amazon EKSで管理されている EC2 インスタンスにプライベート IP アドレスのみを割り当てることにより マネージドノードグループで完全なプライベートネットワーキングを行うこと 参考: https://aws.amazon.com/jp/about-aws/whats-new/2020/04/amazon-eks-managed-node-groups-allow-fully-private-cluster-networking/ Amazon EKS Kubernetes APIサーバへの インターネットアクセスが不可 VPC Amazon S3 Private subnet Private subnet Amazon CloudWatch 17 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 ② Amazon EKSクラスターの各リソースをプロキシ経由にする Point • セキュリティポリシーを満たしつつ、コンテナイメージやCIで利用するライブラリ等の持ち込み管理の手間を省くことができる。 • 各種Podやノードのcontainerd, kubelet, yum等にプロキシの環境変数、SSLインスペクションのCA証明書を設定。 インターネット Amazon EKS データセンター VPC Private subnet AWS Direct Connect EC2 instance contents (Data Plane) 社内ネットワーク simplex-runner actions-runnercontroller cluster autoscaler aws-node 18 プロキシ サーバー © 2024 Simplex Inc.
システムの全体概要 利用者はGitHubの操作さえできれば、セキュアなビルド環境をすぐに利用できる! GitHub Enterprise Cloud Simplexテナント simplex-runners 社内環境 Active Organization A repository Maven Central Docker Hub etc … Active Actions Queue Active Organization B Idle repository Actions Queue プロキシ サーバー Idle Organization C Idle Actions Queue … repository インターネット AWS Azure etc … … テナントのIP制限で ランナーの登録自体も 社内環境に限定 Blue Cluster Green Cluster 19 © 2024 Simplex Inc.
システムの全体概要 利用者はGitHubの操作さえできれば、セキュアなビルド環境をすぐに利用できる! GitHub Enterprise Cloud Simplexテナント simplex-runners 社内環境 Active Organization A repository Maven Central Docker Hub etc … Active Actions Queue Active Organization B Idle repository Actions Queue プロキシ サーバー Idle Organization C Idle Actions Queue … repository インターネット AWS Azure etc … … 社内NW管理下でのCI/CD テナントのIP制限で ランナーの登録自体も 社内環境に限定 Blue Cluster Green Cluster 20 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 くろう Point: • プロキシ設定で試行錯誤 Image Docker Hub Amazon ECR etc … HTTPS_PROXY update-ca-trust Instances Instances User data cloud-init-per instance proxy_config cat << EOF >> /etc/environment http_proxy=http://$PROXY https_proxy=http://$PROXY HTTP_PROXY=http://$PROXY HTTPS_PROXY=http://$PROXY EOF Simplex Runner Cluster Autoscaler ARC Manager コンテナイメージを インターネット経由でPull 21 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 くろう Point: • プロキシ設定で試行錯誤 Image Amazon S3 Instances User data HTTPS_PROXY update-ca-trust NO_PROXY Instances cloud-init-per instance proxy_config cat << EOF >> /etc/environment http_proxy=http://$PROXY https_proxy=http://$PROXY HTTP_PROXY=http://$PROXY HTTPS_PROXY=http://$PROXY no_proxy=$VPC_CIDR,localhost,602401143452.dkr.ecr.apnortheast-1.amazonaws.com, … EOF aws-node (vpc-cni) coredns kube-proxy コンテナイメージを VPCエンドポイント経由でPull 22 © 2024 Simplex Inc.
完全プライベートなセキュリティ環境 くろう Point: • プロキシ設定で試行錯誤 ConfigMap経由で プロキシおよび CA証明書設定 containers: - name: runner image: <ランナーイメージ>:v1.1.0 volumeMounts: - name: ca-configmap mountPath: /etc/ssl/certs/ca.pem subPath: ca.pem envFrom: - configMapRef: name: proxy-environment-variables volumes: - name: ca-configmap configMap: name: ca-configmap Simplex Runner Cluster Autoscaler ARC Manager 各Podがプロキシ経由で インターネットに出る 23 © 2024 Simplex Inc.
運用者目線での効率化 ① GitOpsでのランナーデプロイ ② Blue/Greenデプロイメントによる 安全なクラスターアップグレード 運用者の作業効率を上げるだけでなく 認知負荷の軽減にも繋がる ダウンタイムも0になり 利用ユーザにもメリットがある 24 © 2024 Simplex Inc.
運用者目線での効率化 CIOpsの概要: GitOpsの概要: CIとCDで権限を分離 Git上のマニフェストと同期 CIの延長としてCDを実施 CIツール側に権限を集約 code repository repository CI CI/CD CI Credential 25 manifest repository Credential © 2024 Simplex Inc.
運用者目線での効率化 CIOpsの概要: GitOpsの概要: CIとCDで権限を分離 Git上のマニフェストと同期 CIの延長としてCDを実施 CIツール側に権限を集約 code repository repository CI CI/CD CI Credential manifest repository Credential GitOps Gitを使ってシステムの状態を管理することで、システムの状態をGitの状態と一致させることを目指す運用方法。 Infrastructure as Codeの考え方を応用したもの。代表的なツールはArgo CD 26 © 2024 Simplex Inc.
運用者目線での効率化 ① GitOpsによるランナーのアップデート code repository PR/レビュー PRマージ main 27 © 2024 Simplex Inc.
運用者目線での効率化 ① GitOpsによるランナーのアップデート PR/レビュー code repository CI manifest repository PRマージ Image build main main Trivy scan Image push Git push 28 © 2024 Simplex Inc.
運用者目線での効率化 ① GitOpsによるランナーのアップデート PR/レビュー code repository CI manifest repository PRマージ Image build main main Trivy scan Image push manifest repository Git push PR/レビュー PRマージ prod 29 © 2024 Simplex Inc.
運用者目線での効率化 ① GitOpsによるランナーのアップデート PR/レビュー code repository CI manifest repository PRマージ Image build main main Trivy scan マニフェストリポジトリの prodブランチの情報を 本番環境のArgo CDが同期 Image push manifest repository Git push PR/レビュー Credential PRマージ prod 30 © 2024 Simplex Inc.
運用者目線での効率化 ① GitOpsによるランナーのアップデート PR/レビュー code repository CI manifest repository PRマージ Image build main main Trivy scan マニフェストリポジトリの prodブランチの情報を 本番環境のArgo CDが同期 Image push manifest repository Git push PR/レビュー Credential PRマージ prod Point • ランナーの更新作業がGit操作で完結。運用者の技術ハードルを下げることができる • 変更証跡がGitのコミット履歴として残るため、トラブル時の原因調査等が容易 31 © 2024 Simplex Inc.
運用者目線での効率化 ① GitOpsによるランナーのアップデート PR/レビュー code repository CI manifest repository PRマージ Image build main main Trivy scan マニフェストリポジトリの prodブランチの情報を 本番環境のArgo CDが同期 Image push manifest repository Git push PR/レビュー Credential PRマージ prod 一方デメリットも…(後述) Point • ランナーの更新作業がGit操作で完結。運用者の技術ハードルを下げることができる • 変更証跡がGitのコミット履歴として残るため、トラブル時の原因調査等が容易 32 © 2024 Simplex Inc.
運用者目線での効率化 ② Blue/Greenデプロイメントによる安全なクラスターアップグレード Point • 障害発生時やアップグレード作業のコンチプランとして前バージョンのクラスタを活用できる • ダウンタイム0でのアップグレードが可能。平日日中でもユーザ影響無く実施でき、運用負荷も軽減 GitHub Enterprise Cloud Simplexテナント Ex. Kubernetes バージョン 1.29 Active 並行稼働して新クラスタが 問題無く稼働できたら ノードサイズを0にする Organization A Idle repository Blue Cluster Actions Queue Ex. Kubernetes バージョン 1.30 Organization B bastion Active repository Actions Queue Idle 33 Green Cluster 新クラスタ側で問題が発生したら 旧クラスタのノードサイズを増やし 新クラスタ側で原因調査等進める © 2024 Simplex Inc.
運用者目線での効率化 くふう Point: • ラベル変更パッチによって、ランナーPodが強制終了することなく安全に置き換わっていく GitHub Enterprise Cloud Simplexテナント Ex. Kubernetes バージョン 1.29 simplex-runner Organization A repository simplex-runner Actions Queue Blue Cluster Ex. Kubernetes バージョン 1.30 Organization B simplex-runner repository Actions Queue simplex-runner Green Cluster jobs: build-image: runs-on: simplex-runner 34 © 2024 Simplex Inc.
運用者目線での効率化
くふう Point:
• ラベル変更パッチによって、ランナーPodが強制終了することなく安全に置き換わっていく
GitHub Enterprise Cloud
Simplexテナント
Ex. Kubernetes バージョン 1.29
simplex-runner
Organization A
repository
simplex-runner
Actions
Queue
Blue Cluster
Ex. Kubernetes バージョン 1.30
Organization B
simplex-runner
repository
jobs:
build-image:
runs-on: simplex-runner
Actions
Queue
simplex-runner
Green Cluster
kubectl patch rdeploy simplex-runner -p
'{"spec":{"template":{"spec":{"labels":
[“simplex-runner-disabled"]}}}}' --type merge
35
© 2024 Simplex Inc.
運用者目線での効率化
くふう Point:
• ラベル変更パッチによって、ランナーPodが強制終了することなく安全に置き換わっていく
GitHub Enterprise Cloud
Simplexテナント
Ex. Kubernetes バージョン 1.29
simplex-runner-disable
Organization A
repository
simplex-runner
Actions
Queue
Blue Cluster
Ex. Kubernetes バージョン 1.30
Organization B
simplex-runner
repository
jobs:
build-image:
runs-on: simplex-runner
Actions
Queue
simplex-runner
Green Cluster
kubectl patch rdeploy simplex-runner -p
'{"spec":{"template":{"spec":{"labels":
[“simplex-runner-disabled"]}}}}' --type merge
36
© 2024 Simplex Inc.
運用者目線での効率化
くふう Point:
• ラベル変更パッチによって、ランナーPodが強制終了することなく安全に置き換わっていく
GitHub Enterprise Cloud
Simplexテナント
Ex. Kubernetes バージョン 1.29
simplex-runner-disable
Organization A
simplex-runner-disable
repository
Blue Cluster
Actions
Queue
Ex. Kubernetes バージョン 1.30
Organization B
simplex-runner
repository
jobs:
build-image:
runs-on: simplex-runner
Actions
Queue
simplex-runner
Green Cluster
kubectl patch rdeploy simplex-runner -p
'{"spec":{"template":{"spec":{"labels":
[“simplex-runner-disabled"]}}}}' --type merge
37
© 2024 Simplex Inc.
運用者目線での効率化 くろう Point: • Argo CDによってパッチ適用がリソースの変更として検出され、元のラベルに戻されてしまうので クラスタ切り替え時にSyncPolicyを修正する必要がある Manifest repository Ex. Kubernetes バージョン 1.29 simplex-runner Sync Sync Cluster A SimplexRunner.yml Blue Cluster labels: - simplex-runner simplex-runner Ex. Kubernetes バージョン 1.30 simplex-runner Green Cluster Sync Sync Cluster B SimplexRunner.yml labels: - simplex-runner simplex-runner 38 © 2024 Simplex Inc.
運用者目線での効率化 くろう Point: • Argo CDによってパッチ適用がリソースの変更として検出され、元のラベルに戻されてしまうので クラスタ切り替え時にSyncPolicyを修正する必要がある Manifest repository Ex. Kubernetes バージョン 1.29 simplex-runner-disable Un sync Sync Cluster A SimplexRunner.yml Blue Cluster simplex-runner-disable syncPolicy: automated: selfHeal: false Ex. Kubernetes バージョン 1.30 simplex-runner Green Cluster Sync Sync Cluster B SimplexRunner.yml simplex-runner 39 syncPolicy: automated: selfHeal: true © 2024 Simplex Inc.
運用者目線での効率化 メリット: • リリース運用が簡略化される • 切り戻し環境があることで、安心安全な 定期アップグレードができる Manifest repository Cluster A SimplexRunner.yml Blue Cluster Cluster B SimplexRunner.yml Green Cluster 40 © 2024 Simplex Inc.
運用者目線での効率化 メリット: デメリット: • リリース運用が簡略化される • Blueクラスタは待機系として継続させるため コントロールプレーンのコストが余計にかかる • 切り戻し環境があることで、安心安全な • 検証環境も合わせると合計4クラスタの 定期アップグレードができる 保守/管理が必要となる Manifest repository Prod Dev Blue Cluster Blue Cluster Green Cluster Green Cluster Cluster A SimplexRunner.yml Blue Cluster Cluster B SimplexRunner.yml Green Cluster 41 © 2024 Simplex Inc.
ユーザ体験を重視した設計 ① 高速なCIを支援するための スペックチューニング ② 認知負荷を軽減するための カスタムアクションサポート GitHubホステッドの標準ランナーと GitHub Actionsならではの ジョブの共通処理化 使用感が大きく乖離しないように意識 42 © 2024 Simplex Inc.
ユーザ体験を重視した設計 従来 JOB 1 JOB 2 Organization A JOB 3 JOB 4 Organization B 1サーバのリソースを複数JOBで共有 他JOBによってリソースが逼迫したり ディスクフルやOOMに繋がることも… 43 © 2024 Simplex Inc.
ユーザ体験を重視した設計 現在 従来 JOB 1 JOB 2 Organization A JOB 3 JOB 4 JOB 1 JOB 2 JOB 3 JOB 4 Organization B 1サーバのリソースを複数JOBで共有 他JOBによってリソースが逼迫したり ディスクフルやOOMに繋がることも… PodのRequests/Limitの設計により 他JOBの影響を受けない均一なスペック エフェメラルなランナーで安定した挙動 44 © 2024 Simplex Inc.
ユーザ体験を重視した設計 ① 高速なCIを支援するためのスペックチューニング Point • CPUにはRequestのみを設定することで、リソースを確保しつつ、空きがあれば最大限活用する • メモリにはRequest/Limitを設定することで、EvictやOOMによるPod強制終了を防いでいる resources: limits: memory: 7Gi requests: memory: 7Gi cpu: '2' resources: limits: memory: 7Gi requests: memory: 7Gi cpu: '2' resources: limits: memory: 7Gi requests: memory: 7Gi cpu: '2' EC2 instance contents (Data Plane) 45 © 2024 Simplex Inc.
ユーザ体験を重視した設計 ① 高速なCIを支援するためのスペックチューニング Point • CPUにはRequestのみを設定することで、リソースを確保しつつ、空きがあれば最大限活用する • メモリにはRequest/Limitを設定することで、EvictやOOMによるPod強制終了を防いでいる 46 © 2024 Simplex Inc.
ユーザ体験を重視した設計 くろう Point : • 様々なアプリケーションのCI/CDが動作するので、スペックを確定しづらい • 特にメモリに関してはOOMを回避するため、Limitの設定が必須だった Try① 数パターンのスペックの ランナーを準備 simplex-runner simplex-runner-medium simplex-runner-large 大きいスペックのランナーばかり 使われてしまう 47 © 2024 Simplex Inc.
ユーザ体験を重視した設計 くろう Point : • 様々なアプリケーションのCI/CDが動作するので、スペックを確定しづらい • 特にメモリに関してはOOMを回避するため、Limitの設定が必須だった Try① 数パターンのスペックの ランナーを準備 Try② OOM報告が上がる度に メモリLimitを増やす simplex-runner simplex-runner-medium 際限なくコストがあがってしまったり simplex-runner-large 大きいスペックのランナーばかり 使われてしまう JOB自体のメモリリークや 非効率な使い方を 改善する機会がなくなってしまう 48 © 2024 Simplex Inc.
ユーザ体験を重視した設計 くろう Point : • 様々なアプリケーションのCI/CDが動作するので、スペックを確定しづらい • 特にメモリに関してはOOMを回避するため、Limitの設定が必須だった Try① 数パターンのスペックの ランナーを準備 Try② OOM報告が上がる度に メモリLimitを増やす Try③ そもそもメモリLimitなくす simplex-runner JOB simplex-runner-medium 際限なくコストがあがってしまったり JOB simplex-runner-large 大きいスペックのランナーばかり 使われてしまう JOB自体のメモリリークや 非効率な使い方を 改善する機会がなくなってしまう 49 同一ノードで動いている 他のJOBが強制終了 してしまう可能性がある © 2024 Simplex Inc.
ユーザ体験を重視した設計 くふう Point: • PodのQoS(Quality of Service)クラスを活用し、2種類のランナーを準備 • メモリ起因の強制終了の切り分けや、優先的なKillを許容できる場合に利用してもらう simplex-runner resources: limits: memory: 7Gi requests: memory: 7Gi cpu: '2' simplex-runner-besteffort resources: 設定なし ノードのリソースに空きがあれば 最大限使用できる 50 © 2024 Simplex Inc.
ユーザ体験を重視した設計 くふう Point: • PodのQoS(Quality of Service)クラスを活用し、2種類のランナーを準備 • メモリ起因の強制終了の切り分けや、優先的なKillを許容できる場合に利用してもらう simplex-runner resources: limits: memory: 7Gi requests: memory: 7Gi cpu: '2' クラス 削除優先度 割当て方法 3 全てのコンテナのメモリおよび CPUにRequestとLimitが 等しい値で設定されている Burstable 2 少なくとも1つのコンテナに メモリまたはCPUのRequestか Limitが設定されている BestEffort 1 Request/Limit 何も設定しない Guaranteed simplex-runner-besteffort resources: 設定なし ノードのリソースに空きがあれば 最大限使用できる 51 © 2024 Simplex Inc.
ユーザ体験を重視した設計 くふう Point: • ビルド環境にキャッシュが残らない、公式のキャッシュ機構(actions/cache)もネットワーク距離があり速度が出 づらい課題に対し、プライベートネットワーク内のNexus3、Amazon S3を活用することで速度を向上している Runner VPC データセンター Maven Central Docker Hub etc … 52 © 2024 Simplex Inc.
ユーザ体験を重視した設計 くふう Point: • ビルド環境にキャッシュが残らない、公式のキャッシュ機構(actions/cache)もネットワーク距離があり速度が出 づらい課題に対し、プライベートネットワーク内のNexus3、Amazon S3を活用することで速度を向上している Runner VPC キャッシュがあれば VPC内で完結 データセンター Runner VPC Nexus3 VPC Proxy repo データセンター Maven Central Docker Hub etc … Maven Central Docker Hub etc … 53 キャッシュ無ければ インターネット経由でDL © 2024 Simplex Inc.
ユーザ体験を重視した設計 ② 認知負荷を軽減するためのカスタムアクションサポート 社内環境 プロキシ サーバー インターネット CI セキュアである一方 ビルド環境のプロキシ+CA証明書 の設定がハードルになりがち Apache Maven /Gradle npm / Yarn etc… 54 © 2024 Simplex Inc.
ユーザ体験を重視した設計 ② 認知負荷を軽減するためのカスタムアクションサポート 社内環境 Cache プロキシ サーバー プロキシ サーバー インターネット CI CI セキュアである一方 ビルド環境のプロキシ+CA証明書 の設定がハードルになりがち Apache Maven /Gradle npm / Yarn etc… 社内製カスタム アクション 55 Actionsでよく使われる 処理はカスタムアクション で共通化 © 2024 Simplex Inc.
ユーザ体験を重視した設計 ② 認知負荷を軽減するためのカスタムアクションサポート 社内環境 Cache プロキシ サーバー プロキシ サーバー インターネット CI CI セキュアである一方 ビルド環境のプロキシ+CA証明書 の設定がハードルになりがち Apache Maven /Gradle npm / Yarn etc… 社内製カスタム アクション Actionsでよく使われる 処理はカスタムアクション で共通化 Point • プロキシやCA証明書の設定方法がビルドツールによって異なる手間を、カスタムアクションとして整備することで改善 • 社内専用のキャッシュ基盤活用のためのカスタムアクションを準備して、ユーザが意識せず利用可能となる 56 © 2024 Simplex Inc.
今後の展望 利用者自身がカスタムアクションを 内製できるルール/仕組みを整備 社内製カスタム アクション 利用者同士が自律的に ノウハウを共有する文化を醸成 57 © 2024 Simplex Inc.
今後の展望 利用者自身がカスタムアクションを 内製できるルール/仕組みを整備 ランナーのメトリクスを分析し CIの改善ポイントを提案する仕組みを整備 社内製カスタム アクション PR 利用者同士が自律的に ノウハウを共有する文化を醸成 PR PR PR より高速かつ効果的なCIを提案し 更なる効率化を図る 58 © 2024 Simplex Inc.
まとめ 1 会社にあるセキュリティ強化の仕組みの延長で 完全プライベートなセキュリティ環境 on Amazon EKS ! セルフホステッドを構築するのがBest! 59 © 2024 Simplex Inc.
まとめ 1 完全プライベートなセキュリティ環境 on Amazon EKS ! 会社にあるセキュリティ強化の仕組みの延長で 2 運用者目線での効率化 by GitOps ! トレードオフな点が多くあるが、多少コストかけても セルフホステッドを構築するのがBest! 安全に運用保守できる仕組みを整えたい! 60 © 2024 Simplex Inc.
まとめ 1 完全プライベートなセキュリティ環境 on Amazon EKS ! 会社にあるセキュリティ強化の仕組みの延長で 2 運用者目線での効率化 by GitOps ! トレードオフな点が多くあるが、多少コストかけても 3 ユーザ体験を重視した設計 for Enabling ! 基盤を作って終わりではなく、より開発者が セルフホステッドを構築するのがBest! 安全に運用保守できる仕組みを整えたい! 開発に注力するための施策をうつのが大事! 61 © 2024 Simplex Inc.
まとめ 1 完全プライベートなセキュリティ環境 on Amazon EKS ! 会社にあるセキュリティ強化の仕組みの延長で 2 運用者目線での効率化 by GitOps ! トレードオフな点が多くあるが、多少コストかけても 3 ユーザ体験を重視した設計 for Enabling ! 基盤を作って終わりではなく、より開発者が セルフホステッドを構築するのがBest! 安全に運用保守できる仕組みを整えたい! 開発に注力するための施策をうつのが大事! 安全で効率的に、安定して運用できる基盤が整ったら そこから捻出した時間を、よりEnablingな活動に注力していきましょう! 62 © 2024 Simplex Inc.
Thank You ! 63 © 2024 Simplex Inc.