TeamCity と Kubernetes の統合による自動ビルドのスケーリング

TeamCity ビルドエージェントを Kubernetes クラスターにデプロイし、クラウドやベアメタルで堅牢かつスケーラブルな CI/CD ソリューションを実現します。

Kubernetes と TeamCity を組み合わせた継続的インテグレーションと継続的デリバリーのパイプライン

Kubernetes ではチームそのものを「抽象化」してベアメタルサーバーの使用や依存をやめることができます。Kubernetes のユーザーは安定した継続的なサービスを利用できます。IT チームはいつでもサーバーの使用を停止してメンテナンス作業を行い、稼動を再開させることが可能です。

Kubernetes では、複数のタスクを同じサーバーで起動することでリソースを最適化できます。

TeamCity と Kubernetes を統合すれば、運用チームはリソースの競合が増加した際にオーバープロビジョニングを行ったり、サーバーの可用性が低下するリスクを冒したりする必要がなくなります。

TeamCity の形式をお選びください。

TeamCity と Kubernetes クラスターの統合

TeamCity で Kubernetes Support プラグインを使用すると、ビルドエージェントを Kubernetes クラスターで実行できます。このプラグインは TeamCity にバンドルされているため、別途ダウンロードしたりインストールしたりする必要はありません。

  • Kubernetes 上にスケーラブルな CI/CD アーキテクチャを実装できます。ビルドエージェントは必要なときに自動的に起動され、ジョブを実行し、ビルド完了後に削除されます。TeamCity はビルドキューを分散すると同時に、TeamCity エージェントがインストールされたコンテナーをオンデマンドで起動します。
  • ネイティブの Docker サポート。TeamCity ではパイプラインの各ステップに Docker を使用しながら、あらゆる規模と複雑度のプロジェクトで CI/CD を自動化できます。
  • プロジェクトごとに独自の Kubernetes クラスターを参照する独自のクラウドプロファイルを設定することで、各ビルドを独立した環境で実行できます。
  • クラウドホスト型インフラストラクチャの柔軟性を生かすと同時に、Kubernetes のインテリジェントなリソース割り当てと回復性の高い設計を活用できます。
  • Kubernetes pod を使ってタスクを並列実行できます。pod はクラウドホスト型のマシンに最大限の効率で割り当てられており、並列実行するタスクの潜在能力を最大化します。タスクが完了すると、そのタスクに使用されていた pod は設定に従い、終了してリソースを開放するか、そのまま実行し続けます。

Kubernetes によるデプロイ管理の改善

TeamCity は Docker をネイティブでサポートしているため、継続的なインテグレーションとデプロイのプロセスを完全にコンテナー化できます。

コンテナーイメージ

Docker ビルドランナーで新しいコンテナーイメージを作成してコンテナーレジストリに公開し、Kubernetes で管理された実稼働前環境へのデプロイを準備できます。

テスト環境とステージング環境の構成

テスト環境と本番環境に近いステージング環境を構成し、自動インテグレーションとエンドツーエンドテスト、および手動検証の準備ができた最新のビルドを Kubernetes にロールアウトできます。

詳細なレポート

TeamCity は自動テストの詳細なレポートを提供します。ログとスタックトレースへのリンクを含むテスト結果がその場でレポートされるため、すぐに障害調査に取り組むことができます。

Helm ビルドランナーによるライブ環境のミラーリング

Helm ビルドランナー(プラグインとして提供)を使用して、実稼働前のデプロイでライブ環境をミラーリングするように Kubernetes ワークロードを構成できます。

Kubernetes CI/CD を始める

完全にスケーラブルで非常に回復性の高い継続的なインテグレーションとデプロイのパイプラインを実現するには、CI ビルドジョブを処理するように Kubernetes を構成し、本番環境を正確に複製した Kubernetes 上のテスト環境とステージング環境にコンテナー化されたアプリケーションをデプロイする必要があります。

Kubernetes クラスターリソースを使用するように TeamCity を構成するには、以下の手順に従ってください。

  • TeamCity ビルドエージェントをホストする Kubernetes クラスターをセットアップします。Google Cloud の GKE や Amazon EKS などの Kubernetes ホスティングサービスを使用するか、クラウドまたはベアメタルサーバーに自分で Kubernetes をホストするかを選択します。
  • ビルドジョブとテスト環境を同じクラスターにホストするため、Kubernetes に専用の名前空間を構成します。
  • TeamCity にクラスターへの適切な書き込み権限を付与します。
  • TeamCity から Kubernetes クラウドプロファイルを構成し、Cloud Agent の設定を指定します。TeamCity ビルドエージェントの各インスタンスが利用できる計算リソースに制限を設定するか、再起動ポリシーを構成するには、カスタム pod テンプレートを使用します。
  • ビルドジョブにクラウドエージェントを使用するように、TeamCity を構成します。

よくある質問

TeamCity と Kubernetes の統合はどのように機能しますか?

TeamCity は新しいジョブがビルドキューに追加されるたびに互換性のあるビルドエージェントイメージを特定し、リクエストを Kubernetes に渡します。コンテナーオーケストレーターは正しいビルドエージェントを含む既存の pod を特定するか、要求を満たす新しい pod を起動します。同一の仮想マシンで干渉のリスクを負うことなく、複数のコンテナー化されたビルドジョブを実行することが可能です。

どのようにして Kubernetes と TeamCity を使用し始めればよいですか?

TeamCity は Kubernetes をサポートしているため、非常にスケーラブルで回復性の高いインフラストラクチャをビルドジョブと自動テストの両方で最大限に活用できます。CI/CD ガイドで CI/CD のメリットCI/CD パイプラインの目的、およびクラウドホスト型 CI/CD パイプラインの構築に関する考慮事項の詳細をご覧ください。

使用する準備はできましたか?TeamCity と Kubernetes クラスターを統合して、Kubernetes の継続的なインテグレーションとデプロイのパイプラインで最初のビルドを実行しましょう。

TeamCity を使い始める

Kubernetes を使用するチーム向けの強力な CI/CD