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
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
ここまでkustomizeにインストールされていました.
3.ECRの作成
AWS ECR>をクリックしてリポジトリを作成し、そのまま作成します.
作成が完了したら、作成したリポジトリの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をダウンロードします.Jenkinsが使用する認証情報を登録します.
Deshboard->jenkins管理->管理資格証明に移動します.
Globalをクリックし、左側のAdd Creationsをクリックすると、次の画面が出力されます.
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コマンドは後で整理します.
Githubにアップしたら今Jenkinsに行きます
新規生成でpipelineを選択
Advance Project Optionsに移動し、DefinitionをSCMに変更すると、SCMはGitおよび次のGITリポジトリURLと事前に作成した証明書を選択します.
gitに設定されているbranchとjenkinsfileの位置を指定すると終了します.
8.確認
確認したら、「Bulid Now」をクリックして自動的に生成します.
これで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