EKS CI/CD環境の実装(1)
n/a.環境
Github,jenkins,argoCDを用いてCI/CD環境のEKS構築を行った.
CIの場合はGithub->Jenkins->AWS ECRです.
CDの場合はargoCD->AWS EKSを使用して行います.
筆者の構成環境はvmware-ubuntu-dockerで行います.
CIの実装
1.Jenkinsのインストール
Dokrojenkinsをダウンロードします.
sudo docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -v /docker/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Seoul -u root jenkins/jenkins:latest
![](https://s1.md5.ltd/image/558ad52977adf04bed46ee4e66cab319.png)
2.Jenkins容器にDocker、Kustomizeを取り付ける
# docker 시작 명령어, 종료 명령어
docker start (컨테이너 이름 or ID 앞부분)
docker stop (컨테이너 이름 or ID 앞부분)
# Jenkins container 접속 명령어
docker exec -it jenkins bash
# docker 설치 명령어
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
# 확인 명령어
docker ps
# kustomize 설치 명령어
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
mv kustomize /usr/local/bin
kustomize version
![](https://s1.md5.ltd/image/784bd6a731030e73488171f313388d48.png)
ここまでkustomizeにインストールされていました.
3.ECRの作成
AWS ECR>をクリックしてリポジトリを作成し、そのまま作成します.
![](https://s1.md5.ltd/image/e7b2a223300a9e167095970259de8855.png)
作成が完了したら、作成したリポジトリのURLをコピーします.
4.Jenkins環境の構成
Jenkinsの環境を構成するには、Sever IP:8080接続を使用します.
Jenkinsの初期パスワードはcatコマンドで探せばいいです.筆者にとって、/var/jenkins home/secrets/initialAdminPasswordのパスにあります.
cat /var/jenkins_home/secrets/initialAdminPassword
Jenkinsの画面で、Deshboard->Jenkins管理->プラグインマネージャからdocker-build-step、docker-plugin、docker-pipeline、AWS ECRをダウンロードします.![](https://s1.md5.ltd/image/d7a23ff1cd3bb3b67ac85d224e77a888.png)
![](https://s1.md5.ltd/image/359ffbc8294962ec4f72a383b9624b55.png)
Jenkinsが使用する認証情報を登録します.
Deshboard->jenkins管理->管理資格証明に移動します.
![](https://s1.md5.ltd/image/2c18e18c22cc21e9a8678a4443abcc7b.png)
Globalをクリックし、左側のAdd Creationsをクリックすると、次の画面が出力されます.
![](https://s1.md5.ltd/image/e9a3f7a2e5c317784822c9e3a6ed179d.png)
kindをAWS証明書に変更し、IDは任意に指定できます.アクセスキー、SecretKeyはECRポリシー付きAWS IAMのアクセスキーと秘密鍵を入力すればよい.
もう一度この仕事をして、今度はGithubの資格名に近づくためです.
- kind : Username with password
- Username : github name
- password : github password
- ID : 임의 지정하면 된다.
5. Jenkinsfile
Jenkinsfileを作成します.Vscodeを開き、ファイル名をJenkinsfileとします.その後の作り方は正式な書類を参考にした方が良いでしょう.
node {
// git 연동
stage('Clone repository') {
checkout scm
}
// 도커 이미지 build
stage('Build image') {
app = docker.build("YOUR ECR URL")
}
// ecr repo 에 도커 이미지 push
stage('Push image') {
sh 'rm -f ~/.dockercfg ~/.docker/config.json || true'
docker.withRegistry('YOUR_REGISTRY', 'YOUR_CREDENTIAL'){
app.push("${env.BUILD_NUMBER}")
}
}
// updated docker image 태그를 git push
stage('Deploy') {
// 사전 준비
sh("""
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git checkout -B master
""")
}
}
このようにコード生成ファイルを記述します.他に必要なところがあれば、公式ドキュメントやグーグルで追加することができます.6. Dockerfile
FROM ubuntu:18.04
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN apt upgrade -y && apt-get update -y && apt-get install nginx -y
RUN echo "/ndaemon off;" >> /etc/nginx/nginx.conf
CMD ["nginx"]
EXPOSE 80
ドッキングファイルは、非常に簡単なnginxを実行するファイルから構成されています.7.github repoを作成しjenkinsをバインドする
githubに移動したら、レジストリを作成し、Dockerfileを最初のファイルにアップロードします.gitコマンドは後で整理します.
![](https://s1.md5.ltd/image/9f9e52bbfc4233979766d73fd1081f54.png)
Githubにアップしたら今Jenkinsに行きます
新規生成でpipelineを選択
![](https://s1.md5.ltd/image/467e9f2c481ed5fd39edf7cc54d476a6.png)
Advance Project Optionsに移動し、DefinitionをSCMに変更すると、SCMはGitおよび次のGITリポジトリURLと事前に作成した証明書を選択します.
![](https://s1.md5.ltd/image/4522ddce9b461a13c53db32127a42a39.png)
gitに設定されているbranchとjenkinsfileの位置を指定すると終了します.
![](https://s1.md5.ltd/image/f0096c9fccd831719ec8a7d5bdfb8e87.png)
8.確認
確認したら、「Bulid Now」をクリックして自動的に生成します.
![](https://s1.md5.ltd/image/b14cec0aa2e0a4b3ee3aea5c451603b7.png)
![](https://s1.md5.ltd/image/400dda57e7a77a0f40eda3ebed274e28.png)
これでCiは終わり、現在CDもCiCDが完成しています.
Reference
この問題について(EKS CI/CD環境の実装(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@joshua_s/EKS-CICD-환경구축-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol