静的インストール スクリプトの使用
システム管理者を対象に、非 AWS 環境での CircleCI 2.0 の静的インストールの概要について説明します。
制限事項
このインストール方法には、以下のような制限があります。
-
machine
Executors を使用することはできません。 - リモート Docker 環境および Docker レイヤー キャッシュを使用することはできません。
- 高度な高可用性オプションは提供されません。
CircleCI 2.0 では、以下の改善点を含む新しいインフラストラクチャが提供されています。
- 任意の数のジョブとワークフローをオーケストレーションできる新しい構成
- ジョブごとの実行を行えるカスタム イメージ
- カスタム キャッシュ、ジョブごとの CPU またはメモリの割り当てなど、きめ細かいパフォーマンス
ビルド環境
デフォルトでは、CircleCI 2.0 の Nomad クライアント インスタンスは、.circleci/config.yml
ファイルでジョブごとに構成されたイメージに従ってコンテナを自動的にプロビジョニングします。 CircleCI は、CircleCI 2.0 のプライマリ ジョブ スケジューラとして Nomad を使用します。ジョブ スケジューラ、およびクライアントとクラスタの基本的な操作方法については、「Nomad クラスタの操作ガイド」を参照してください。
アーキテクチャ
CircleCI の静的インストールは、Services と Nomad クライアントという 2 つのプライマリ コンポーネントで構成されています。 Services は、コア アプリケーション、ストレージ、ネットワーク通信機能から成る単一のインスタンス上で動作します。 任意の数の Nomad クライアントがジョブを実行し、Services マシンと通信します。 2 つのコンポーネントはどちらも、以下のアーキテクチャ図に示すように、ネットワーク上で GitHub または GitHub Enterprise のインスタンスにアクセスする必要があります。
Services
Services インスタンスが動作するマシンは、必ず正しい手順に沿って再起動する必要があり、組み込みの VM スナップショット機能を使用してバックアップできます。 メモ: 高可用性を実現するには、PostgreSQL と Mongo を使用して外部データ ストレージを設定します。また、データベースのバックアップには、標準のツールを使用します。詳細については、高可用性のための外部データベース ホストの追加に関するドキュメントを参照してください。 DNS 解決は、Services がインストールされているマシンの IP アドレスを指す必要があります。 以下の表に、Service インスタンスでトラフィックに使用されるポートを示します。
ソース | ポート | 用途 |
---|---|---|
エンド ユーザー | 80、443、7171、8081 | HTTP/HTTPS トラフィック |
管理者 | 22 | SSH |
管理者 | 8800 | 管理者コンソール |
Nomad クライアント | 4647、8585、7171、3001 | 内部通信 |
GitHub (Enterprise または .com) | 80、443 | 受信 Web フック |
Nomad クライアント
Nomad クライアント インスタンスは実行時に状態を保存しないため、必要に応じてコンテナ数を増減することができます。 すべてのビルドを処理できる十分な数のクライアント マシンが確実に実行されるようにするには、キューイングされているビルドを追跡し、必要に応じてクライアント マシンを増やして負荷を分散させます。
Nomad クライアントがインストールされているマシンには、ビルドを調整するために、それぞれ 2 基の CPU と 4 GB のメモリが予約されています。 そのうえで、残りのプロセッサーとメモリでコンテナが作成されます。 マシンの規模が大きくなれば、その分多くのコンテナを実行することができますが、調整用に予約してある 2 基以外に使用できるコアの数によって制限されます。 以下の表に、Nomad クライアント インスタンスで使用されるポートを示します。
ソース | ポート | 用途 |
---|---|---|
エンド ユーザー | 64535-65535 | ビルド機能への SSH 接続 |
管理者 | 80 または 443 | CircleCI API アクセス (正しいシャットダウンなど) |
管理者 | 22 | SSH |
Services VM | 4647、8585、7171、3001 | 内部通信 |
GitHub
CircleCI では、認証に GitHub または GitHub Enterprise 認証情報が使用され、認証時には LDAP、SAML、または SSH を使用してアクセスできます。 また CircleCI では、一元管理された SSO インフラストラクチャでサポートされる認証が継承されます。 以下の表に、GitHub を実行するマシンで Services および Nomad クライアント インスタンスと通信する際に使用されるポートを示します。
ソース | ポート | 用途 |
---|---|---|
Services | 22 | Git アクセス |
Services | 80、443 | API アクセス |
Nomad クライアント | 22 | Git アクセス |
Nomad クライアント | 80、443 | API アクセス |
インストール
以下のセクションでは、Services VM と Nomad クラスタのインストールの手順について説明します。
前提条件
インストールを開始する前に、以下を準備してください。
- CircleCI のプラチナ サポート契約。 まずは、CircleCI サポートまたはお客様のアカウント担当者にお問い合わせください。
- CircleCI ライセンス ファイル (.rli)。 ライセンスが必要な場合は、CircleCI サポートにお問い合わせください。
- Services VM 用に、100 GB 以上のストレージ、32 GB 以上の RAM、4 基以上の CPU (8 基を推奨) を搭載した、Ubuntu 14.04 または 16.04 を実行するマシン。
- Nomad クライアント VM 用に、それぞれ 8 GB 以上の RAM と 4 基以上の CPU を搭載し、ビルドが必要とする Docker Registry へのネットワーク アクセスを有する、Ubuntu 14.04 または 16.04 を実行するマシンのクラスタ。
Services マシンのインストール
-
Services の init スクリプトを Services VM マシンにコピーします。
-
Services VM 用にプロビジョニングされたマシンにログインし、
sudo su
コマンドを実行します。 -
./provision-services-ubuntu.sh
を実行してスクリプトを起動します。 -
HTTPS を使用して、ポート 8800 上のホストのパブリック IP に移動します。
-
ライセンスを入力します。
-
Storage セクションを完了します。 クラウド サービスを使用していない場合は、
None
を選択します (詳細については以下を参照してください)。 -
VM プロバイダーを None に設定します。
-
1.0 ビルドを Off に設定します。
-
2.0 ビルドを Clustered に設定します。
Nomad クライアントのインストール
-
クライアントの init スクリプトを Nomad サーバー マシンにコピーします。
-
Nomad サーバー用にプロビジョニングされたマシンにログインし、
sudo su
コマンドを実行します。 -
スクリプトを起動するには、
NOMAD_SERVER_ADDRESS
環境変数を Services マシンのルーティング可能な IP に設定した状態で (例:NOMAD_SERVER_ADDRESS=0.0.0.0 ./provision-nomad-client-ubuntu.sh
)、./provision-nomad-client-ubuntu.sh
を実行します。
ストレージ
None
ストレージ ドライバーは、すべての CircleCI データをローカルに保存します。 つまり、アーティファクト、テスト結果、およびアクション ログがローカルの /data/circle/storage-fileserver
に保存されます。 このストレージ オプションを使用する場合は、外部ボリュームをマウントし、そのボリュームとの間にシンボリック リンクを作成することをお勧めします。 メモ: データの転送速度は、外部ボリュームで許容される上限に制限されてしまうため、SSD を使用することをお勧めします。
トラブルシューティング
ここでは、システムのセットアップおよびインストールに伴って発生する可能性がある一般的な問題について、考えられる対処法を示します。
- 症状: ジョブが
queued
ステータスにとどまった後、最終的には失敗して正常に実行されない。- Nomad クライアントのログに以下のようなエラー メッセージが含まれる場合は、ポート 8585 をチェックしてください。
- {“error”:”rpc error: code = Unavailable desc = grpc: the connection is unavailable”,”level”:”warning”,”msg”:”error fetching config, retrying”,”time”:”2018-04-17T18:47:01Z”}
- Nomad クライアントのログに以下のようなエラー メッセージが含まれる場合は、ポート 8585 をチェックしてください。