フェーズ 4 - Nomad クライアントの構成
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.pem
、key.pem
、cert.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.pem
、key.pem
、cert.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 - インストールのテスト」に進んでください。