EKSとJenkinsの連携について

目的

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

jenkinsからEKSへのCI/CDを実現させる。
CI = 継続的インテグレーション
CD = 継続的デリバリー
CI/CDを実現させる事により、都度手動でのリリースは不要になり
git等でソースがコミットされたタイミングで自動リリースすることが可能となる。

前提

  • jenkinsの操作、AWSの操作が一通り出来る読者を対象とする。
  • OSはcentosを使用する。
  • Dockerがインストール済みであること。
  • EKSは作成済みであること。
  • awsコマンドが使用可能であること。

AWS側の準備

  1. AWS Identity and Access Management(以下IAM)でjenkinsユーザーを作成する。

    ※ユーザー名「jenkins」とする。
    必要に応じて権限を設定する。※以下はECRにPushPull出来る権限設定をAWSコンソールで設定する

jenkins(Docker)のインストール

以下はceontosのコンソールで実行する

  1. jenkinsイメージのカスタムDockerfileを作成する
    jenkinsでkubectl、awscliを使用出来るように、centos上で以下のDockerfileを作成する。
    ※コマンド実行はホームディレクトリ(~/)で行う

  2. Dockerタグ「jenkins/jenkins:eks」を指定してビルドを行う

  3. docker-compose.ymlを作成する
    以下のdocker-compose.ymlを作成し実行する。※マウント先の「/srv/jenkins」は作成しておく

  4. Dockerをバックグラウンドで起動する。

  5. jenkins(https://smallit.co.jp:8080)にアクセスしAdmin設定、プラグインの設定を行ってインストール完了

jenkinsとEKSを連携させる

以下はceontosのコンソールで実行する

  1. jenkinsのawsコマンドを設定する。
    マウントした場所「/srv/jenkins/」に「.aws」ディレクリを作成する。

    上記で作成した「.aws」以下にconfigファイルを作成

    上記で作成した「.aws」以下にcredentialsファイルを作成

    ※「■AWS側の準備」で作成した「jenkins」ユーザーのアクセスキー、パスを設定する

    所有者をjenkinsに変更

  2. jenkins上のkubectlコマンドを設定する。
    EKSの設定を取得する。※コマンド実行はホームディレクトリ(~/)で行う

    ※「ap-northeast-1」「cluster-name」は自分の環境に合わせて変更すること
    上記コマンドで「~/.kube」作成されるのでそのファイルをjenkinsマウントポジションにコピー

    所有者をjenkinsに変更

jenkinsユーザーからkubectlを実行できるようにする

以下はceontosのコンソールで実行する

  1. aws-authにjenkinsユーザーを追加する。
    kubectlコマンドでEKSのaws-authを編集する。

jenkinsのpipeline等でkubectlコマンドを使用してEKSに連携する

以下はjenkinsのjob設定でテスト作成する。

  1. Jenkinsfileを作成する。

  2. 実行結果にkubectlの実行でエラーが出ていなければ連携完了。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス