강의

멘토링

커뮤니티

BEST
Programming

/

Devops & Infra

Jenkinsを利用したCI/CDパイプラインの構築

本講義は、クラウドネイティブアプリケーションを構成する4つの核心要素(MSA、CI/CD、DevOps、Container)の一つであるCI(Continuous Integration、継続的インテグレーション)とCD(Continuous Deployment、継続的デプロイメント)パイプラインについて扱う講義です。本講義を通じて、CI/CDツールであるJenkinsを利用してローカル環境とクラウド環境に自分だけの自動化パイプラインを構築し、デプロイするために必要なプロセスを理解し、実習することができます。

難易度 初級

受講期間 無制限

  • Dowon Lee
Jenkins
Jenkins
CI/CD
CI/CD
Ansible
Ansible
Kubernetes
Kubernetes
SonarQube
SonarQube
Jenkins
Jenkins
CI/CD
CI/CD
Ansible
Ansible
Kubernetes
Kubernetes
SonarQube
SonarQube

ansible-serverからwindowsのK8sへのテスト時のリファレンス

** ansible-serverからwindowsのK8sへのテスト時のリファレンス

ansible-serverを利用してWindowsにインストールしたdocker-desktopのKubernetesに接続してテストを行う場合は、以下の内容を確認してください。

ansible-serverでssh-copy-idコマンドを利用してwindowsにid_rsa.pubキーファイルの内容をコピーしようとすると、通常のキーファイルの内容ではなく、ECHO〜という文字列がシャベルになってしまう場合があります。この場合は、ssh-copy-idコマンドの代わりに、対応するid_rsa.pubキーファイルの内容を直接コピーして使用する必要があります。何らかの方法を使用した結果として、 windows の .ssh フォルダにある authorized_keys ファイルに ansible-server で生成したid_rsa.pubキーファイルの内容が保存されればよい。この時の注意点は、ansible-serverにログインしたアカウントとwindowsサーバーにログインするアカウントとが一致しなければならず、そのアカウントはwindowsで管理者権限を持っている必要があり、dockerやkubectlなどの命令を使用する際にエラーが発生しないではありません。要約すると、Windowsにログインするアカウントと同じアカウント名でansible-serverのアカウントを作成した後、キーをコピーする必要があります。このような過程が煩わしい場合は、ssh接続時に認証なしで接続するためにssh-copy-idコマンドを使用するので、この部分はそのままパスワードを入力しながら進行し、ansible-playbookではansibleのhostsファイルにwindows接続情報を記録するご使用いただくと、playbookの実行時には問題なく進行できます。

以下の実行プロセスの説明を参照してください。

  • Windows OS (docker-desktop インストール、Kubernetes 実行、IP: 192.168.0.7)

  • docker-server (ドッカーコンテナ、IP: 172.17.0.3)

  • ansible-server(Dockerコンテナ、Ansibleインストール、IP:172.17.0.4)

  1. まず、ansible-serverで生成されたid_rsa.pubキーをdocker-serverにssh-copy-idコマンドを使用してコピーします。 docker-serverのキーをコピーして、sshがパスワードなしで接続されていることを確認してください。

windows_ansible_step1.png

 

  1. ansible-serverのid_rsa.pubキーをwindowsサーバーにコピーします。 (下の画像は docker-server になっていますが、ansible-server から進んでください)。ただし、 id_rsa.pubキーを生成する際のアカウントと windows の openssh に接続するアカウントが同じでなければならず、その windows アカウントには docker や kubectl コマンドを実行できる管理者権限を持っている必要があります。このとき、ssh-copy-idコマンドを使用してid_rsa.pubキーのコピーを試みると、Windowsのauthorized_keysファイルにid_rsa.pubキーの内容がコピーされるのではなく、ECHO~という文字列がコピーされてしまう場合がありますが、このような場合は、そのキーを直接COPY-PASTE方式でWindowsのauthorized_keysファイルにコピーしてください。 (authorized_keysファイルがwindowsにない場合は、ファイルも直接作成できます)

windows_ansible_step2.png

 

  1. id_rsa.pubキーをコピーする作業をする前に、以下の4)のようにwindowsでsshコマンドを使ってwindowsサーバーに接続されることを確認してください。 (opensshがインストールされていない場合はインストールしてください。)

windows_ansible_step3.png

 

  1. 今回は、ansible-serverから直接sshコマンドでWindowsのopensshサーバーに接続するテストをしてみてください。

windows_ansible_step4.png

 

  1. 上記の2で説明したように、 id_rsa.pubキーをコピーするときは、 id_rsa.pubキーをWindowsのアカウントと同じアカウントで作成する必要があります。を記録して使用することをお勧めします。とにかくsshコマンドを使用して直接接続を試みる場合よりも、ansible命令を使用して処理する場合が多いので、ssh-copy-id操作を進めることなく直接ansible hostsファイルに接続情報を保存して使用するようにします。このセクションでは、ansible_user、ansible_passwordエントリにWindowsアクセスアカウント情報(私は管理者権限を持つユーザーアカウント情報とパスワードを入力しました)を変更できます。 ansible hosts ファイル情報を完成したら、次の ansible 命令を使って ping モジュールが正常に実行されていることを確認してください。

    • ansible windows -m in_ping -u [windows アカウント]

windows_ansible_step5.png

 

  1. ansible-playbook を実行する前に、windows に K8s の manifest ファイルが保存されている場所を確認し、kubectl コマンドを使って Kubernetes のリソースを確認してみます。以下の例では、K8sのサービスのリストを確認しており、基本的に作成されるサービス以外のユーザーが作成したサービスは見えないことを確認しています。

windows_ansible_step6.png

 

  1. ansible-serverでplaybookファイルの内容を確認します。 windowsにコマンドを渡すので、以下の例のようにwin_commandコマンドを使用し(MacOSの場合はcommandコマンドを使用)、実行したいマニフェストファイルの場所を絶対パスとして指定します。 playbookファイルを実行して実行された結果を確認できます。

windows_ansible_step7.png

 

  1. 最後に、windowsで実行したリソースが正常に反映されたか、kubectl命令を利用して確認してみることができます。

windows_ansible_step8.png

 

上記についてさらに質問がある場合は、質問掲示板に書いてください。

問題が悩んでいた方々にお役に立てば幸いです。

ありがとうございます。

コメント