Docker/K8S実践コンテナ開発入門@6日目
今回もDocker/K8Sの実践本の続きを対応します。
前回はJenkinsコンテナを起動するまでで終わってしまったので続きの設定を行います。
■書籍
Master JenkinsのSSH鍵を作る
実践的な使い方として、JenkinskのSlaveコンテナを追加してみます。
実際にJenkinsを運用する場合、1つのJenkinsサーバだけで運用するケースはあまりありません。
管理機能やジョブ実行指示はMasterのJenkinsが担当し、Jenkinsがジョブ実行に専念するためのSlaveに分けることがほとんどです。
以下の通り、MasterコンテナのSSH Keyを作成してみます。
途中入力が求められることがありますが、何も入力せずEnterキーを入力します。
※上記青塗りつぶし箇所にSSH Keyが生成されています。
ここで作成した /var/jenkins_home/.ssh/id_rsa.pub はJenkins MasterからSlaveへ接続する際に必要です。
Jenkins Slaveコンテナを作る
JenkinsのSlaveコンテナを追加します。
Masterコンテナはmaster、Slaveコンテナはslave01というコンテナ名とします。
SSH接続の準備
直前に実行したmaster ssh−keygenで生成したjenkinsci/ssh-slaveを利用します。
この環境変数はホストの「./jenkins_home/.ssh/id_rsa.pub」の内容をコピペして、そのままを設定してください。Slaveコンテナ内では鍵の取得や設定は極力行なわず、外から環境変数として渡します。
SSHの接続先を示す
Master からSlaveをどうやって探して追加するかという問題が残っています。
IPアドレスを指定しなくても、Composeではよりスマートに解決できます。
linksを利用して他のServices郡にある他のコンテナと通信できます。
コンテナ間の関係と準備を整理する
- 事前にMaster コンテナを作成し、SSH公開鍵の生成までを済ます。
- docker−compose.ymlにSlave用コンテナを追加し、Master のSSH公開鍵をJENKINS_SLAVE_PUBKEYに設定する
- linksを利用してMaster コンテナからSlaveコンテナへ通信できるようにする
これでMaster/Slave構成のJenkinsのdocker−compose.ymlができたので実行してみます。
以下の通り、masterとslave01コンテナが起動したことがわかります。
■コマンド
docker-compose up -d
docker-compose ps
最終調整
まだMasterのJenkinsはSlaveのJenkinsを認識していないので、
以下の画面から「Manage Jenkins」をクリックし、
Manage Nodes and Cloudsを選択し、
左サイドメニューに表示されている「新規ノード作成」からslave01を追加してあげます。
Node nameには「slave01」としておきます。
またPermanent Agentも一応チェックしておきます。
Name・・・
Remote root directory・・・/home/jenkins
Launch Method・・・Launch Agents via SSH
Host・・・slave01
Credentials・・・プルダウンから「Jenkins」を選択
Host Key Verification Strategy・・・Non verifying Verification Strategy
認証情報保存画面に移動したら、
KindをSSH Username with private keyにします。
その後、Usernameを指定してPrivate KeyをEnter directly(直接入力)を選択して直接入力します。
入力情報は「./jenkins_home/.ssh/id_rsa」から取得してください。
認証情報を保存後、以下の画面の通りCredentialが選べるようになっていると思いますので、選びます。
最後にSaveを押すとNodeが作成されます。
以下masterのように表示されていれば問題ないのですが、今回はエラーが発生してしまいN/A と出てしまっています。
こちらの原因は色々みているのですが、根が深そうなので明日以降調査します。
もしかして、、、pub keyの設定ミスってるかも・・・?