フェーズ 3 - CircleCI Server のインストール
前提条件のインストールとオブジェクトストレージの構成が完了したら、エアギャップ環境内の Kubernetes クラスタに Helm デプロイ版の CircleCI Server をインストールできます。
1. values.yaml の用意
通常版インストールガイドの「 Helm 値を作成します」に従って、CircleCI Server をインストールするための values.yaml
を用意する必要があります。 このファイルを用意できたら、以下の手順に従ってエアギャップ環境へのインストール用にフィールドを変更してください。
a. グローバル値を設定する
values.yaml
ファイルの global.container
セクションを以下のように変更します。
-
domainName
の値をインストール環境の内部ドメイン名に設定する -
container.org
の値をcircleci
に設定する -
container.registry
の値をインスタンスの内部レジストリのホスト名に設定する (デフォルトと異なるポートを使用する場合はポートも設定する)
global:
...
domainName: "server.internal.example.com"
container:
registry: "docker.internal.example.com:5000"
org: "<image-registry-org>"
b. GitHub Enterprise を設定する
values.yaml
ファイルの github
セクションで、使用する GitHub Enterprise インスタンスにあわせて設定を変更します。
hostname
値は GitHub Enterprise インスタンスの内部ホスト名に設定します。 enterprise
値は true に設定します。
GitHub Enterprise インスタンスで TLS および自己署名証明書を使用しない場合は、unsafeDisableWebhookSSLVerification: true
と selfSignedCert: true
を設定してください。
また、GitHub Enterprise で OAuth アプリケーションとパーソナルアクセストークンを設定し、下図で示した値を変更してください。 このプロセスの詳細については、 GitHub OAuth アプリケーションの作成手順に関するページを参照してください。
# GitHub Enterprise
github:
hostname: "github.internal.example.com"
unsafeDisableWebhookSSLVerification: true # If using self-signed certificates
enterprise: true
selfSignedCert: true # If using self-signed certificates
# These must be generated and added manually from GitHub Enterprise
clientId: "<<github-enterprise-oauth-app-client-id>>"
clientSecret: "<<github-enterprise-oauth-app-client-secret>>"
defaultToken: "<<github-enterprise-personal-application-token>>"
c. MinIO のオブジェクトストレージを設定する
values.yaml
ファイルの object_storage
セクションに以下の設定を追加し、必要に応じてポート番号を変更します。
object_storage:
bucketName: circleci-data
expireAfter: 0
s3:
enabled: true
endpoint: http://<minio-internal-hostname>:9000
accessKey: <minio-root-user>
secretKey: <minio-root-password>
エンドポイントのプロトコルには、お使いの MinIO に応じて http または https を設定してください。 |
d. MinIO のビルドエージェントを設定する
values.yaml
ファイルの distributor セクションで、agent_base_url
と launch_agent_base_url
の値を、MinIO 内で作成した circleci-data
バケットに設定します。
distributor:
agent_base_url: http://<minio-internal-hostname>:9000/circleci-data/
launch_agent_base_url: http://<minio-internal-hostname>:9000/circleci-data/
ここでは、MinIO のデフォルトであるポート 9000 を使用しています。 お使いの MinIO インスタンスの設定が異なる場合は、ポート番号を適宜変更してください。 |
プロトコルには、お使いの MinIO に応じて http または https を設定してください。 |
e. Nomad ビルドエージェントイメージを設定する
フェーズ 1 でコピーしたレジストリ内の Nomad ビルドエージェントイメージの場所を指定し、必要に応じてポート番号を変更します。
nomad:
...
buildAgentImage: "<your-internal-registry-hostname>:5000/circleci/picard"
必要に応じて Docker レジストリのホスト名のポートを変更してください。 |
f. VM サービスを無効化する
values.yaml
ファイルの vm_service
セクションで、enabled
の値を false
に設定してこのサービスを無効化します。 この機能を使用するには、クラウドへの接続が必要です。
# VM Service Disabled - Requires cloud connectivity
vm_service:
enabled: false
g. NGINX のアノテーションを追加する
インストール環境に応じて、ロードバランサーをプロビジョニングするための NGINX アノテーションを追加します。 この例では、MetalLB を使用します。 詳細については、「その他の検討事項」の「 K3s の LoadBalancer タイプの Service」セクションを参照してください。
# Additional nginx annotations
nginx:
annotations:
# This example uses MetalLB as a k3s load balancer
metallb.universe.tf/allow-shared-ip: default
2. CircleCI Server のインストール
values.yaml
ファイルと Helm チャートの用意が完了したら、エアギャップ環境で Helm の install コマンドを実行して CircleCI Server をインストールします。
推奨手順は、初めに名前空間 (circleci-server
) を作成してから、この名前空間にチャートをデプロイすることです。
helm install circleci-server ./circleci-server/ -n <kubernetes-namespace> --version 4.1.1 -f <path-to-values.yaml>
3. インストール後の手順
Helm によるデプロイ後、環境によっては (MetalLB を使用する場合など)、LoadBalancer タイプの circleci-proxy Service に手動でパッチを適用する必要があります。 詳細については、「その他の検討事項」の「 K3s の LoadBalancer タイプの Service」セクションを参照してください。
次のステップ
本ページの手順を完了したら、「 フェーズ 4 - Nomad クライアントの構成」に進んでください。