Docker/K8S実践コンテナ開発入門@6日目

今回もDocker/K8Sの実践本の続きを対応します。

前回はJenkinsコンテナを起動するまでで終わってしまったので続きの設定を行います。

 

■書籍

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

 

 

 Master JenkinsのSSH鍵を作る

 

実践的な使い方として、JenkinskのSlaveコンテナを追加してみます。

実際にJenkinsを運用する場合、1つのJenkinsサーバだけで運用するケースはあまりありません。

管理機能やジョブ実行指示はMasterのJenkinsが担当し、Jenkinsがジョブ実行に専念するためのSlaveに分けることがほとんどです。

 

以下の通り、MasterコンテナのSSH Keyを作成してみます。

途中入力が求められることがありますが、何も入力せずEnterキーを入力します。

f:id:lawrence-twin:20200419200937p:plain

 

※上記青塗りつぶし箇所にSSH Keyが生成されています。

ここで作成した /var/jenkins_home/.ssh/id_rsa.pub はJenkins MasterからSlaveへ接続する際に必要です。

 

 

Jenkins Slaveコンテナを作る

JenkinsのSlaveコンテナを追加します。

 Masterコンテナはmaster、Slaveコンテナはslave01というコンテナ名とします。

f:id:lawrence-twin:20200419202215p:plain


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

f:id:lawrence-twin:20200419212359p:plain

最終調整

まだMasterのJenkinsはSlaveのJenkinsを認識していないので、

以下の画面から「Manage Jenkins」をクリックし、

f:id:lawrence-twin:20200419212531p:plain

 

Manage Nodes and Cloudsを選択し、

f:id:lawrence-twin:20200419212741p:plain

 

左サイドメニューに表示されている「新規ノード作成」からslave01を追加してあげます。

f:id:lawrence-twin:20200419212853p:plain

 

Node nameには「slave01」としておきます。

またPermanent Agentも一応チェックしておきます。

f:id:lawrence-twin:20200419212948p:plain

 

 

Name・・・

Remote root directory・・・/home/jenkins

Launch Method・・・Launch Agents via SSH

Host・・・slave01

Credentials・・・プルダウンから「Jenkins」を選択

Host Key Verification Strategy・・・Non verifying Verification Strategy

 

f:id:lawrence-twin:20200419213523p:plain

認証情報保存画面に移動したら、

KindをSSH Username with private keyにします。

その後、Usernameを指定してPrivate KeyをEnter directly(直接入力)を選択して直接入力します。

入力情報は「./jenkins_home/.ssh/id_rsa」から取得してください。

f:id:lawrence-twin:20200419215044p:plain

 

認証情報を保存後、以下の画面の通りCredentialが選べるようになっていると思いますので、選びます。

f:id:lawrence-twin:20200419214936p:plain

 

最後にSaveを押すとNodeが作成されます。

以下masterのように表示されていれば問題ないのですが、今回はエラーが発生してしまいN/A と出てしまっています。

f:id:lawrence-twin:20200419225145p:plain

こちらの原因は色々みているのですが、根が深そうなので明日以降調査します。

もしかして、、、pub keyの設定ミスってるかも・・・?