0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

備忘録:kubernetes/EKS基礎④(CI/CD)

Last updated at Posted at 2022-12-22

備忘録

下記のような簡単なCI/CD環境を構築する。
Deploymentを作成するマニフェストをCodeCommitにpushするとCodeBuildでEKSクラスタにDeploymentを作成する。試しにDeploymentのreplicas: 2 → replicas: 3に変更後、CodePiplineが起動してPod数が更新されることを確認

スクリーンショット 2022-12-22 17.34.10.png

ハマるポイント:下記CodeBuildのaws-authの設定

CodeCommit

  • リポジトリ名をeks-cicd-testで作成

  • リポジトリ準備

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
pip install git-remote-codecommit
git clone codecommit::ap-northeast-1://eks-cicd-test
cd eks-cicd-test
vim .git/config
.git/config
[user]
        name = xxxxxx
        email = xxxxxx@example.com
  • マニフェスト準備
vim nginx-deployment.yml
git add .
git commit -m "msg"
git push
nginx-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx-app
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

CodeBuild

  • buildspec.ymlの準備
vim buildspec.yml
git add .
git commit -m "msg"
git push
buildspec.yml
version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto17
      docker: 20

  pre_build:
    commands:
      - curl -o kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.7/2022-06-29/bin/linux/amd64/kubectl
      - chmod +x ./kubectl
      - mv kubectl /usr/local/bin
      - aws --region ap-northeast-1 eks update-kubeconfig --name $EKS_CLUSTER_NAME

  build:
    commands:
      - kubectl apply -f nginx-deployment.yml
      - kubectl get all
  • ビルドプロジェクト作成
項目 設定値 備考
プロジェクト名 eks-cicd-test
ソースプロバイダ AWS CodeCommit
リポジトリ eks-cicd-test
リファレンスタイプ ブランチ
ブランチ main
環境イメージ マネージド型イメージ
オペレーティングシステム Amazon Linux 2
ランタイム Standard
イメージ standard:4.0
イメージのバージョン 最新
環境タイプ Linux
特権付与 チェック
サービスロール 新しいサービスロール
ロール名 codebuild-eks-cicd-test-service-role
環境変数 名前:EKS_CLUSTER_NAME / 値:eks-clu2
アーティファクトはなし
  • eksアクセス用のポリシー作成
eks-test
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": "eks:DescribeCluster",
            "Resource": "arn:aws:eks:*:*:cluster/*"
        }
    ]
}
  • codebuild-eks-cicd-test-service-roleにポリシー追加
    上記で作成したeks-testを追加

  • aws-authの設定

kubectl edit configmap aws-auth --namespace kube-system

/service-roleを削除してrolearnを指定する。

data:
  mapRoles: |
    - groups:
      - system:masters
      rolearn: arn:aws:iam::{AWS_ACCOUNT_ID}:role/codebuild-eks-cicd-test-service-role
      username: codebuild-eks-cicd-test-service-role
  • マッピング情報が設定されていることを確認
eksctl get iamidentitymapping --cluster eks-clu2 --region=ap-northeast-1

CodePipline

  • パイプライン作成
項目 設定値 備考
パイプライン名 eks-cicd-test-pl Step1
サービスロール 新しいサービスロール Step1
ロール名 デフォルト Step1
ソースプロバイダー AWS CodeCommit Step2
リポジトリ名 eks-cicd-test Step2
ブランチ名 main Step2
プロバイダーを構築する AWS CodeBuild Step3
プロジェクト名 eks-cicd-test Step3
デプロイステージはスキップ Step4

動作確認

  • CodeBuild手動で実行
    Podが作成されていることを確認
kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c577ccdf7-kxlx9   1/1     Running   0          26s
nginx-deployment-5c577ccdf7-nrtlm   1/1     Running   0          26s
  • マニフェストを変更してCodeCommitにPush
nginx-deployment.yml
replicas: 2 → replicas: 3
git add .
git commit -m "msg"
git push
  • CodePipelineが起動する
    スクリーンショット 2022-12-22 17.47.27.png

  • Pod数が更新されている

kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c577ccdf7-hk27l   1/1     Running   0          2m47s
nginx-deployment-5c577ccdf7-kxlx9   1/1     Running   0          8m20s
nginx-deployment-5c577ccdf7-nrtlm   1/1     Running   0          8m20s

関連記事

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?