CircleCI Server v3.x インストール ステップ 2

Last updated
Tags Server v3.x サーバー管理者

CircleCI Server v3.x のコアサービスのインストールステップを開始する前に、 前提条件 をすべて満たしていることをご確認ください。

Flow chart showing the installation flow for server 3.x with phase 2 highlighted
Figure 1. インストール手順のフローチャート ステップ 2)
以下のセクションでは、< > の中に表示される認証情報の項目にご自身の情報を入力してください。

ステップ 2: コアサービスのインストール

CircleCI Server v3.x は、 ReplicatedKOTS を使用してインストールの管理と配布を行います。

  1. 次のコマンドを実行して最小バージョン 1.65.0 の KOTS を実行していることを確認してください。

    kubectl kots version
    KOTS コマンドは管理者コンソールへのトンネルを開きます。 WSL2 をインストールした Windows 上でコマンドを実行する場合、ホストマシンのポートを利用できません。 この問題を解決するには、いったん WSL を無効化してから有効化してください。 詳細については、 https://github.com/microsoft/WSL/issues/4199 を参照してください。
  2. ターミナルから、以下を実行します(プロキシ内にインストールする場合は、 HTTP プロキシ経由でのインストールを参照してください)。

    kubectl kots install circleci-server

    すると、以下を入力するよう求められます。 * デプロイ先の名前空間 * KOTS 管理者コンソールのパスワード

  3. 完了すると、KOTS 管理者コンソールにアクセスする URL が通知されます (通常は、http://localhost:8800)。

後日再び KOTS 管理者コンソールにアクセスする必要がある場合、 kubectl kots admin-console -n <YOUR_CIRCLECI_NAMESPACE> を実行します。
名前空間を作成したら、以下のコマンド: kubectl config set-context --current --namespace <namespace> で、kubectl コンテキストも設定することをお勧めします。

HTTP プロキシ経由でのインストール (オプション)

プロキシ経由で CircleCI Server をインストールするには、上記の 2. で以下のコマンドを使用します (詳細は、 こちら の KOTS 文書をご覧ください)。

kubectl kots install circleci-server --http-proxy <YOUR_HTTP_PROXY_URI> --https-proxy <https-proxy> --no-proxy <YOUR_NO_PROXY_LIST>

ロードバランサーのエンドポイントを、output processorvm-service の非プロキシリストに追加する必要があります。 これは、非プロキシリストがアプリケーションとビルドエージェントの間で共有されているためです。 アプリケーションとビルドエージェントは同じファイアウォール内にあると想定されているため、両者の間にプロキシを介在させることはできません。

詳細については、 プロキシの設定 ガイドを参照してください。

フロントエンドの設定

フロントエンドの設定により、 CircleCI システムの Web アプリケーション固有の側面が制御されます。

Screenshot showing frontend settings
Figure 2. フロントエンドの設定

以下のフィールドに入力します。

  • Domain Name (ドメイン名)(必須) : フロントエンド TLS キーと証明書を作成した際に指定したドメイン名を入力します。

  • Frontend Replicas (フロントエンドのレプリカ): フロントエンドで処理できるトラフィック量を増やす際に使用します。

  • Frontend TLS Private Key (フロントエンド TLS プライベートキー) (必須): 前提条件のステップで作成したキーです。 この値は以下のコマンドで取得できます。

    cat /etc/letsencrypt/live/<CIRCLECI_SERVER_DOMAIN>/privkey.pem
  • Frontend TLS Certificate (フロントエンド TLS 証明書) (必須): 前提条件のステップで作成した証明書です。 この値は以下のコマンドで取得できます。

    cat /etc/letsencrypt/live/<CIRCLECI_SERVER_DOMAIN>/fullchain.pem

フロントエンド TLS プライベートキーと証明書については、4つの選択肢があります。

  • プライベートキーと証明書を指定します。

  • Let’s Encrypt が自動的に証明書のリクエストと管理を行えるようにボックスにチェックを入れます。

  • AWS Certificate Manager (ACM) が自動的に証明書のリクエストと管理を行えるようにボックスにチェックを入れます。 ACM の使用に関する詳細は、[CircleCI Server v3.x オペレーターの証明書]ガイドを参照してください。

  • この時点で TLS ターミナルを無効にすることも可能ですが、HTTPS 経由でアクセスできる必要があります。

ACM TLS 証明書の使用

AWS Certificate Manager (ACM) を使って TLS 証明書を管理する場合は、 ACM のドキュメント の ACM 証明書の生成方法に従ってください。

証明書を作成したら、フロントエンドセクションの KOTS コンソールで ACM を有効にしてください。 ACM のボックスにチェックを入れて、ACM ARN (Amazon Resource Name) を入力します。

CircleCI Server をデプロイ済みの場合は、ACM の有効化はフロントエンドサービスに破壊的な変更を加えます。 ACM 証明書の使用を許可するようサービスを再生成し、関連するロードバランサーも再生成する必要があります。 CircleCI Server を再デプロイした場合、DNS レコードを再ルーティングする必要があります。

  • Private Load Balancer (プライベートロードバランサー) (オプション): このオプションを設定すると、ロードバランサーは外部 IP アドレスを生成しません。

    プライベートロードバランサーの使用オプションを選択した場合、 Lets Encrypt (暗号化を許可) オプションは機能せず、使用できなくなります。

暗号化

暗号化キーとアーティファクト署名キーは、前提条件のステップで作成しました。 そのキーをここで入力します。

Screenshot showing encryption settings
Figure 3. 暗号化の設定

以下の項目を入力してください。

  • アーティファクト署名キー (必須)

  • 暗号化署名キー (必須)

GitHub

前提条件のステップで作成した Github OAuth アプリケーションのデータを使って、 以下の作業を行ってください。

Screenshot showing GitHub settings
Figure 4. Github の設定
  • Github Type (Github の種類) (必須) - Cloud または Enterprise (オンプレミス)を選択します。

  • OAuth Client ID (OAuth クライアントID) (必須) - Github が提供する OAuth クライアントIDです。

  • OAuth Client Secret (OAuth クライアントシークレット) (必須) - Github が提供する OAuth クライアントシークレットです。

  • Github Enterprise Fingerprint (Github Enterprise のフィンガープリント) - プロキシを使用する場合に必要です。 ssh-keyscan github.example.com の出力をテキストフィールドに記載します。

オブジェクトストレージ

前提条件のステップで作成したオブジェクトストレージバケットとキーを使って、 プラットフォームに応じて以下の設定を完了してください。

Screenshot showing object storage settings
Figure 5. オブジェクトストレージの設定

S3 互換

  • Storage Bucket Name (ストレージ バケット名) (必須) - CircleCI Server に使用するバケットです。

  • AWS S3 Region (AWS S3 リージョン) (オプション) - プロバイダーが AWS の場合、バケットの AWS リージョンを指定します。 このオプションを設定すると、[S3 Endpoint (S3 エンドポイント)] は無視されます。

  • S3 Endpoint (S3 エンドポイント) (オプション) - S3 ストレージプロバイダーの API エンドポイントを指定します。 プロバイダーが AWS ではない場合は必須です。 このオプションを設定すると、AWS S3 リージョンは無視されます。

  • Storage Object Expiry (ストレージ オブジェクトの有効期限)] (オプション) - テスト結果とアーティファクトを保持する日数を指定します。 有効期限を無効にしてオブジェクトを無期限に保持するには、0 に設定します。

認証

下記のいづれかが必要です。 IAM キーを選択し、以下を指定します。

  • Access Key ID (アクセス キー ID) (必須) - S3 バケットへのアクセス用のアクセス キー ID を指定します。

  • Secret Key (シークレット キー) (必須) - S3 バケットへのアクセス用のシークレットキーを指定します。

または、IAM ロールを選択し、以下を指定します。

Google Cloud Storage

前提条件のステップで、Google Cloud Storage バケットとサービスアカウントの作成が完了してる必要があります。

  • Storage Bucket Name (ストレージ バケット名) (必須) - CircleCI Server に使用するバケットです。

  • Storage Object Expiry (ストレージ オブジェクトの有効期限)] (必須) - テスト結果とアーティファクトを保持する日数を指定します。 有効期限を無効にしてオブジェクトを無期限に保持するには、0 に設定します。

認証
  • 以下のいづれかを選択します。

    • Service Account JSON (サービス アカウントの JSON) (必須) - バケットへのアクセスに使用する JSON 形式のサービスアカウントキーです。

    • Service Account Email (サービスアカウントのメール)(必須) - Google Workload Identity を使用する場合、サービスアカウントのメール ID を指定します。

次のセクションをスキップします。: Output ProcessorNomadVM Service。 これらについては次のステップで設定します。

Postgres、MongoDB、Vault の設定

既存の Postgres、MongoDB、または Vault インスタンスを使用しない場合は、このセクションをスキップしてください。その場合は、 サービスの外部化に関するドキュメントを参照してください。 CirecleCI Server v3.x では、デフォルトで CircleCI 名前空間内に独自の Postgres、MongoDB、および Vault インスタンスを作成します。 CircleCI 名前空間内のインスタンスは、CircleCI のバックアップおよび復元プロセスに含まれます。

保存とデプロイ

上記項目の設定が完了したら、いよいよデプロイです。 デプロイすると、コアサービスがインストールされ、Kong ロードバランサー用のIP アドレスが提供されます。 この IP アドレスは、DNS レコードを設定し、インストールの第一ステップを完了するための重要なアドレスです。

Server v3.3.0 以降、リバースプロキシを Traefik から Kongに変更しました。 しかし、アップグレードの際の中断を最小限に留めるために、Kong が使用するサービス名への変更はしておりません。 そのため、サービス名は、circleci-server-traefik と表示されますが、実際には Kong のサービスです。

DNS エントリーの作成

Kong ロードバランサー の DNS エントリを作成します。例: (circleci.your.domain.comapp.circleci.your.domain.com) 。この DNS エントリは、前提条件のステップで TLS 証明書とGitHub OAuth アプリケーションを作成する際に使用した DNS 名と一致している必要があります。 すべてのトラフィックは、この DNS レコードを介してルーティングされます。

Kong ロードバランサーの IP アドレス、または AWS を使用している場合は DNS 名が必要になります。 以下のコマンドで情報を入手します。

kubectl get service circleci-server-traefik --namespace=<YOUR_CIRCLECI_NAMESPACE>

新しい DNS レコードを追加する方法について詳しくは、以下のドキュメントを参照してください。

Kong ロードバランサーには、ヘルスチェックが備わっており、https://loadbalancer-address/status に JSON ペイロードを提供します。

バリデーション

これで、CircleCI Server に移動し、アプリケーションに正常にログインできるはずです。

次は、サービスのビルドに移ります。 すべてのサービスが立ち上がるまで時間がかかることがあります。 以下のコマンドを実行することで、定期的に確認することができます (実行中および準備完了状態の “フロントエンド” ポッドが 1/1 と表示されいてる必要があります)。

kubectl get pods -n <YOUR_CIRCLECI_NAMESPACE>


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか?

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、サポートサイトから、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。