無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

フェーズ 4 - Nomad クライアントの構成

11 months ago1 min read
Server v4.1
サーバー管理者
このページの内容

CircleCI Server では、コンテナベースのビルド操作を実行するために Nomad クライアントを使用します。 このクライアントは、Helm でデプロイされた CircleCI Server と通信できるように、エアギャップ環境内に配置する必要があります。

1. Docker と Nomad をインストールする

以下の 2 つの必須コンポーネントを、Nomad クライアント用の各インスタンスにインストールします。

2. Nomad 用ディレクトリを作成する

各クライアントで、設定用のディレクトリを作成します。 インストール環境で mTLS を使用する場合は、SSL 用のサブディレクトリも作成します。

sudo mkdir /etc/nomad/
sudo mkdir /etc/nomad/ssl/

3. Docker ネットワーク ci-privileged を作成する

以下のコマンドを実行して、ci-privileged という名前の Docker ネットワークを作成します。 作成が完了したら、Nomad サービスを再起動します。

sudo docker network create --label keep --driver=bridge --opt com.docker.network.bridge.name=ci-privileged ci-privileged

sudo service nomad restart

4. (オプション) mTLS 証明書を取得する

Nomad クライアントに mTLS を設定している場合は、Nomad クライアントごとに以下の 3 つのファイルを用意する必要があります。 mTLS を設定しない場合は、次の手順に進んでください。

  • ca.pem

  • key.pem

  • cert.pem

これらのファイルは、以下のコマンドを実行して、Helm でインストールした CircleCI Serverの名前空間 (nomad-rpc-mtls) にあるシークレットから取得します。

kubectl get secret -n <namespace> nomad-rpc-mtls -o yaml > secret.yaml

上記コマンドでは、標準出力に secret.yaml ファイルが出力されます。 必須ファイル (ca.pemkey.pemcert.pem) はそれぞれ、シークレット内に Base64 でエンコードされた文字列として保存されています。 各文字列をコピーおよびデコードして、各 Nomad クライアント内にファイルとして配置します。

# For each of ca.pem, key.pem, cert.pem in the secret output
echo -n "ca.pem-base64-encoded-string" | base64 --decode > ca.pem
echo -n "cert.pem-base64-encoded-string" | base64 --decode > cert.pem
echo -n "key.pem-base64-encoded-string" | base64 --decode > key.pem

5. (オプション) mTLS キーを各 Nomad クライアントにコピーする

mTLS を使用する場合、各クライアントに ca.pemkey.pemcert.pem の各キーをコピーし、下記の場所に配置する必要があります。 mTLS を設定しない場合は、次の手順に進んでください。

/etc/nomad/ssl/ca.pem
/etc/nomad/ssl/cert.pem
/etc/nomad/ssl/key.pem

6. クライアントごとに Nomad conf.hcl ファイルを設定する

Nomad クライアントごとに、/etc/nomad/conf.hcl に以下の conf.hcl ファイルを作成します。 < > で囲まれた項目はすべて適切に変更してください。

log_level = "DEBUG"
name = "<instance-hostname>"
data_dir = "/opt/nomad"
datacenter = "default"
advertise {
  http = "<instance-internal-ip>"
  rpc = "<instance-internal-ip>"
  serf = "<instance-internal-ip>"
}

client {
  enabled = true
  server_join = {
    retry_join = ["<kubernetes-cluster-internal-ip>:4647"]
  }
  node_class = "linux-64bit"
  options = {"driver.raw_exec.enable" = "1"}
}

telemetry {
  collection_interval = "1s"
  disable_hostname = true
  prometheus_metrics = true
  publish_allocation_metrics = true
  publish_node_metrics = true
}

mTLS を設定している場合は、以下のコードブロックを conf.hcl ファイルの末尾に追加してください。

tls {
  http = false
  rpc  = true
  verify_server_hostname = true
  ca_file       = "/etc/nomad/ssl/ca.pem"
  cert_file = "/etc/nomad/ssl/cert.pem"
  key_file      = "/etc/nomad/ssl/key.pem"
}

7. 接続をテストする

Nomad エージェントを起動してログを確認し、クライアントとクラスタが接続されているかテストします。

sudo nomad agent -config /etc/nomad/conf.hcl

次のステップ

本ページの手順を完了したら、「 フェーズ 5 - インストールのテスト」に進んでください。


Suggest an edit to this page

Make a contribution
Learn how to contribute