【東京】CircleCI ユーザーコミュニティミートアップ#7 https://circleci.connpass.com/event/147712/
CircleCI Server運用のポイントCircleCI ユーザーコミュニティミートアップ #7
View Slide
自己紹介Tanaka Tomohide● twitter: @dehio3● blog:https://www.dehio3.com/● 音響屋→インフラエンジニア● CircleCI運用歴:10ヶ月2
はじめに
CircleCI Serverとは● オンプレミス版のCircleCI● CirlceCIから公開されているTerraformを利用して、AWS上に構築可能○ https://github.com/circleci/enterprise-setup
CircleCI Server 使ってる?✋
CircleCI Server 検討してる?✋
今日話す内容● オンプレ版の運用中に発生した課題から気づいた運用のポイント● CircleCI Server 2.17.3時点での情報(9/30時点の最新)○ https://circleci.com/server/changelog/
CircleCI Server の 構成要素
ビルドの詳しい仕組みはhttps://speakerdeck.com/kimh/circleci-2-dot-0wozhi-eru2tufalse-kontenakurasutatosre
永続リソースと一時リソースそれぞれのポイント
永続リソース
スケーリングのタイミング● nomad-clientはAutoScalingから起動する。● AutoScalingでEC2インスタンス起動アクション後、nomad-clientでbuild処理可能な状態になるまで3,4分かかる。● AutoScalingのアクションは自動では実行されない為、スケールリングアクションの契機は自分で実装する必要がある。● キューの滞留を検知してからスケールリングすると、スケールリングしたタイミングでは既にキューが捌け終わって、無駄なスケールになる事もある。● スケジュールでの時間契機か、リソース状況契機か、利用状況に応じてスーリングの検討が必要。
一時リソース
machine executorは冗長化未対応● machine executorを動作させるサブネットは現状一つしか指定でない。● 設定はWebコンソールから実施する為、AZを変更する場合は再起動が必要。● 8/23のAZ障害はまさに直撃した・・ていうかこの時気づいた( ;∀;)● 即サポートに連絡して改善要望!!
machine executorインスタンスのゾンビ化● “machine”と”setup_remote_docker”を利用すると、一時的なEC2インスタンスが新規に作成される。● 本来であれば処理が終わるとインスタンスが削除されるが、バグ(2.14.01以前)や起動中のserviceboxの再起動によって、インスタンスが削除されずに残る事がある。● ゾンビインスタンは無駄なコストになるので、定期的なゾンビインスタンスのチェックが必要。
DLCのキャッシュ保持期間● “docker_layer_caching”を設定すると専用のEBSボリュームが作成され、都度マウントされる事で、キャッシュが実現される。● “Inactivity period before clearing Docker cache storage volumes (days)”にてchacheの保持期間を設定でき、デフォルトの14日に設定される。● 保持期間はEBSボリュームの作成日ではなく、最終利用日から14日保持される。● EBSボリュームについては、未利用時であっても課金される為、利便性とコストのバランスで保持期間を設定する。
まとめ
まとめ● 当然だがオンプレ版の場合はCircleCIのインフラも運用する必要がある。● インフラの維持コストを抑える為に、状況の可視化と継続的な運用の改善が必要。● まだまだ改善の余地はあるので、今後のCirlceCI Serverの開発に期待!!
おまけ
前回のミートアップhttps://speakerdeck.com/tomohide_tanaka/circleci-server-visualization-of-usage-status
SaaS版のビルド情報を取得ツールを作成https://www.dehio3.com/entry/2019/09/23/115924
Thank you!!25