📑 CI/CD 서버 구축
Host-Only Network
- VM 간에 통신을 하거나 내 호스트 PC에서 VM에 접속을 하기 위한 네트워크
- -> 따라서 IP가 같으면 안됨
- 이 네트워크는 외부 인터넷에 접속이 안됨
- -> 따라서 NAT를 추가해서 사용한다
- NAT IP는 자동할당 되는데 IP가 인프라 환경이랑 같지만 인터넷만 쓰기 위한 용도라서 문제는 없음
echo '======== [1] Rocky Linux 기본 설정 ========'
echo '======== [1-1] 패키지 업데이트 ========'
yum -y update
echo '======== [1-2] 타임존 설정 ========'
timedatectl set-timezone Asia/Seoul
echo '======== [1-3] 방화벽 해제 ========'
systemctl stop firewalld && systemctl disable firewalld
echo '======== [2] Kubectl 설치 ========'
echo '======== [2-1] repo 설정 ========'
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
echo '======== [2-2] Kubectl 설치 ========'
yum install -y kubectl-1.27.2-150500.1.1.aarch64 --disableexcludes=kubernetes
echo '======== [3] 도커 설치 ========'
# https://download.docker.com/linux/centos/8/x86_64/stable/Packages/ 저장소 경로
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-3:23.0.6-1.el9.aarch64 docker-ce-cli-1:23.0.6-1.el9.aarch64 containerd.io-1.6.21-3.1.el9.aarch64
systemctl daemon-reload
systemctl enable --now docker
echo '======== [4] OpenJDK 설치 ========'
yum install -y java-17-openjdk
echo '======== [5] Gradle 설치 ========'
yum -y install wget unzip
wget https://services.gradle.org/distributions/gradle-7.6.1-bin.zip -P ~/
unzip -d /opt/gradle ~/gradle-*.zip
cat <<EOF |tee /etc/profile.d/gradle.sh
export GRADLE_HOME=/opt/gradle/gradle-7.6.1
export PATH=/opt/gradle/gradle-7.6.1/bin:${PATH}
EOF
chmod +x /etc/profile.d/gradle.sh
source /etc/profile.d/gradle.sh
echo '======== [6] Git 설치 ========'
yum install -y git-2.39.3-1.el9_2
echo '======== [7] Jenkins 설치 ========'
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
yum install -y java-11-openjdk jenkins-2.414.2-1.1
systemctl enable jenkins
systemctl start jenkins
💻 설치
- kubectl 설치 -> NAT를 설정해놨기에 외부 저장소에서 kubectl 패키지를 다운받아서 설치할 수 있음
- Jenkins JDK17버전 지원
- 직접 설치한 버전의 gradle이랑 openJDK를 jenkins에서 빌드를 할 때 사용하겠다고 등록
Jenkins 초기 비밀번호 확인
cat /var/lib/jenkins/secrets/initialAdminPassword
Docker 사용 설정
# jeknins가 Docker를 사용할 수 있도록 권한 부여
[root@cicd-server ~]# chmod 666 /var/run/docker.sock
[root@cicd-server ~]# usermod -aG docker jenkins
# Jeknins로 사용자 변경
[root@cicd-server ~]# su - jenkins -s /bin/bash
# 자신의 Dockerhub로 로그인 하기
[jenkins@cicd-server ~]$ docker login
Username:
Password
Master Node에서 인증서 복사
# 폴더 생성
[jenkins@cicd-server ~]$ mkdir ~/.kube
# Master Node에서 인증서 가져오기
[jenkins@cicd-server ~]$ scp root@192.168.56.30:/root/.kube/config ~/.kube/
# 인증서 가져오기 실행 후 [fingerprint] yes 와 [password] [본인의 password] 입력
출처
[인프런] 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2
저자 : 일프로
'k8s' 카테고리의 다른 글
[2-5] Helm과 Kustomize 비교하며 사용하기 (1) (0) | 2024.05.06 |
---|---|
[2-3] 배포를 시작하기 전에 반드시 알아야 할 것들 (0) | 2024.05.05 |
[1-8] Component 동작으로 이해하기 (1) | 2024.05.01 |
[1-7] Application 기능으로 이해하기 - PV/PVC, Deployment, Service, HPA (0) | 2024.04.29 |
[1-6] Application 기능으로 이해하기 - Configmap, Secret (1) | 2024.04.16 |