TeamCity オンプレミス 2025.11 ヘルプ

Kubernetes 用の TeamCity の設定

TeamCity は 2 種類の Kubernetes 統合を提供します。

  • 定期的な Kubernetes 統合。このアプローチでは、AWS、Microsoft、Azure、Google Cloud などの他のクラウドプロバイダーとの統合と同様に、TeamCity のクラウドプロファイルとイメージを使用します。ビルドエージェントは TeamCity で設定し、Kubernetes クラスターでホストします。この統合タイプは、外部の Kubernetes のサポート(英語)プラグインに依存します。

  • 外部エグゼキューターとしての Kubernetes クラスター。このモードでは、TeamCity は Kubernetes 側のビルドエージェントを認識しません。代わりに、クラスターのビルド実行機能を認識し、ビルドを実行するエンティティの割り当てとライフサイクル管理をクラスターに完全に委譲します。

この記事では、従来の統合アプローチについて説明します。ネイティブ統合の詳細については、実行者モード: 外部 Kubernetes 統合トピックを参照してください。

要件

TeamCity と Kubernetes の統合は、kubectl ツールに依存しないため、クラスターにインストールする必要はありません。

TeamCity ユーザーが TeamCity エージェントによって使用される Kubernetes 名前空間で書き込み操作を実行できることを確認してください。

また、Kubernetes ユーザーロールに対して次の権限を設定する必要がある場合があります。

  • Pods: getcreatelistdelete .

  • デプロイ: listgetデプロイ構成を使用してエージェント pod を作成する場合。

  • 名前空間: getlist — TeamCity がサーバーで使用可能な名前空間を提案できるようにします。

Kubernetes RBAC(英語) を介して必要なすべての権限を設定する例を次に示します。

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: teamcity:manage-agents rules: - apiGroups: [""] resources: ["namespaces"] verbs: ["list", "get"] - apiGroups: [""] resources: ["pods"] verbs: ["get", "create", "list", "delete"] - apiGroups: ["extensions", "apps"] resources: ["deployments"] verbs: ["list", "get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: teamcity:manage-agents roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: teamcity:manage-agents subjects: # proper RoleBinding subject depends on your Authentication strategy # use one of examples below # if you use OIDC/Certificate auth strategies - kind: User name: teamcity # if you use Service account - kind: ServiceAccount name: teamcity

Kubernetes クラウドプロファイルの構成

Kubernetes との統合を確立するには、TeamCity で専用のクラウドプロファイルを作成する必要があります。必要なプロジェクトの設定を開き、クラウドプロファイルセクションで新規プロファイルの作成をクリックします。

以下の表に、Kubernetes クラウドプロファイルに固有のオプションを示します。

オプション

説明

Kubernetes API サーバーの URL

KubernetesAPI サーバー(英語)の URL を指定します。

証明する機関 (CA)

クラスターの CA 証明書(英語)のコンテンツを入力します。

Kubernetes 名前空間

必要な Kubernetes 名前空間(英語)を指定します。デフォルトの名前空間(英語)を使用するには、空のままにします。

認証戦略

必要な認証戦略を選択します。選択した戦略に応じて、追加オプションのセットは異なります。使用可能なオプションの詳細については、Kubernetes のドキュメント(英語)を参照してください。

Kubernetes クラウドイメージの追加

一般的な Kubernetes 設定を構成した後、新しいビルドエージェントイメージの追加に進むことができます。

イメージの追加をクリックして、そのオプションを構成します。

オプション

説明

Pod 仕様

以下に説明する 3 つのタイプのいずれかを選択します。

エージェントプール

起動されたインスタンスを特定のエージェントプールに割り当てます。

エージェント名接頭辞

(オプション)TeamCity で表示する場合、このイメージのすべてのインスタンスに同じ接頭辞を表示します。

インスタンスの最大数

(オプション)このイメージに基づいて起動されるインスタンスの数を制限する場合は、こ数を設定します。

デプロイの pod テンプレートを使用する

Kubernetes クラスターで作成された特定のデプロイ構成(英語)に基づいて新しい pod を実行するには、このオプションを選択します。Kubernetes ダッシュボードを使用している場合は、利用可能なデプロイのリストがワークロード | デプロイにあります。

次のように、最新の TeamCity エージェントイメージから単純なデプロイを作成できます。

create deployment simpledep --image="jetbrains/teamcity-agent:latest" deployment.apps/simpledep created

単一のコンテナーを実行する

Docker Hub(英語) からの任意のエージェント Docker イメージに基づいて単一のコンテナー(英語)を実行するには、このオプションを選択します。以下を指定する必要があります。

オプション

説明

Docker イメージ名

docker run コマンドで使用されるものと同様の Docker イメージの名前(たとえば、jetbrains/teamcity-agent)。

イメージプルポリシー

イメージ(英語)更新する(英語)ポリシー。

コマンド

(オプション)コンテナーによって実行されるコマンド(英語)を設定します。

コマンド引数

(オプション)コマンド引数を設定します。

カスタム pod テンプレートを使用

独自の pod テンプレート(英語)を YAML 形式で入力します。起動した pod に対してリソースのリクエスト / 制限や資格情報などの追加の構成を指定する必要がある場合は、このオプションを使用します。このオプションは、デプロイ仕様のテンプレートの代替であり、TeamCity UI/DSL で直接構成を編集できます。

単純なテンプレートの例:

apiVersion: v1 kind: Pod metadata: labels: app: teamcity-agent spec: restartPolicy: Never containers: - name: teamcity-agent image: jetbrains/teamcity-agent resources: limits: memory: "2Gi"

Kotlin DSL

k8s プロファイルとイメージを作成して設定するには、プロジェクトの features グループに KubernetesCloudProfile および KubernetesCloudImage クラスのインスタンスを作成します。イメージの profileId プロパティをプロファイルの id 値に設定して、このイメージをターゲットプロファイルに割り当てます。

project { // ... features { // ... kubernetesCloudProfile { id = "kube-1" name = "K8S Agents" description = "EKS" serverURL = "https://myteamcityserver.com" terminateIdleMinutes = 30 apiServerURL = "https://123.gr7.eu-west-1.eks.amazonaws.com" caCertData = "abc" authStrategy = eks { accessId = "aws_access_id" secretKey = "aws_key" clusterName = "my-k8s-cluster" } } kubernetesCloudImage { id = "PROJECT_EXT_10" profileId = "kube-1" agentPoolId = "21" agentNamePrefix = "k8s-singlec" maxInstancesCount = 5 podSpecification = runContainer { dockerImage = "jetbrains/teamcity-agent" } } kubernetesCloudImage { id = "PROJECT_EXT_11" profileId = "kube-1" agentPoolId = "21" agentNamePrefix = "k8s-pspec" maxInstancesCount = 5 podSpecification = customTemplate { customPod = """ apiVersion: v1 kind: Pod metadata: labels: app: teamcity-agent spec: restartPolicy: Never containers: - name: teamcity-agent image: jetbrains/teamcity-agent resources: limits: memory: "2Gi" """.trimIndent() } } } }

その他の例と API の説明については、KubernetesCloudProfile および KubernetesCloudImage を参照してください。

2025 年 4 月 17 日

関連ページ:

実行者モード: 外部 Kubernetes 統合

TeamCity は 2 種類の Kubernetes 統合を提供します。定期的な Kubernetes 統合。このアプローチでは、AWS、Microsoft、Azure、Google Cloud などの他のクラウドプロバイダーとの統合と同様に、TeamCity のクラウドプロファイルとイメージを使用します。ビルドエージェントは TeamCity で設定し、Kubernetes クラスターでホストします。この統合タイプは、外部の Kubernetes のサポートプラグインに依存します。外部エグゼキ...

アップグレードノート

2025.11.2 から 2025.11.3 への変更:付属ツールのアップデートバンドルされた Git は、サーバーとエージェントの両方の Docker イメージでバージョン 2.53 に更新されました。TeamCity イメージで提供された Docker には、ビルドスクリプトで直接参照したいユーザーのためにリリース間の一貫性を確保するために、999 の固定 GID が付与されるようになりました。2025.11.1 から 2025.11.2 への変更:ユーザーの UID を復元するため、Te...

エージェントプールの構成

ビルドエージェントの共通セットを 1 つ持つ代わりに、エージェントプールと呼ばれる個別のグループに分割できます。プールは、プロジェクトを割り当てることができるエージェントの名前付きセットです。エージェントは 1 つのプールにのみ所属できます。プロジェクトではビルドに複数のプールを使用できます。TeamCity サーバーによって承認されるエージェントの数は、エージェントライセンスの数によって制限されます。デフォルトでは、新しく承認されたすべてのエージェントがデフォルトプールに含まれます。エージェント...

Amazon EC2 用の TeamCity のセットアップ

TeamCity Amazon EC2 統合により、TeamCity は、現在のビルドキューのワークロードに応じて、クラウドでホストされているエージェントをオンデマンドで自動的に開始および停止することで、ビルドリソースを自動スケールできます。共通情報:TeamCity では、さまざまなタイプの EC2 統合をセットアップできます。使用する設定とソースに応じて、クラウド AWS ホスト型エージェントは以下で実行できます。同じ Amazon マシンイメージ (AMI) から複製された複数の同一のイ...

VMware vSphere および vCenter 用の TeamCity のセットアップ

TeamCity vSphere 統合により、VMwarevSphere および vCenter インストールで TeamCity エージェントクラウド機能を使用できます。VMware vSphere/vCenter アカウントを使用して TeamCity を構成する必要があり、その後、キューに入れられたビルドに基づいて、オンデマンドで TeamCity エージェントを使用して仮想マシンの自動作成、起動、停止、削除を処理します。機能は TeamCity にバンドルされているプラグインとして実装されていま...