윈도우11에서 도커기반으로 설치구성하였고,
사설인증서를 적용하여 https 통신이 되도록 하였습니다.
테스트로 윈도우11에서 nginx 이미지를 build하고 push까지 성공하였습니다.
 

먼저 https 통신을 위해 사설인증서를 준비합니다.

2025.03.30 - [devops] - 사설인증서 생성

 

사설인증서 생성

Gitlab 과 ArgoCD 를 https로 접근하기 위해 사설인증서를 생성합니다.웹브라우져에서 "이 연결은 안전합니다." 라고 나오게 됩니다. 사설인증서 생성저는 윈도우 git 클라이언트 설치해서 git bash 이

syjb.tistory.com

 

Gitlab 기동 및 설정

PS C:\Users\ky945> docker run -d --name SYgitlab `
       -p 443:443 -p 80:80 `
       -p 5050:5050 `
       -v C:\Users\ky945\SYssl:/etc/gitlab/ssl `
       gitlab/gitlab-ce:latest

# -p 443:443 -p 80:80 : Gitlab 서비스 포트로 설정합니다.
# -p 5050:5050 : 컨테이너 레지스트리 포트로 설정합니다.
# -v C:\Users\ky945\SYssl:/etc/gitlab/ssl : ssl 인증서파일을 마운트합니다.

주의!! PC에서 docker login 할때 https://gitlab.sytech.com 처럼 기본포트(443)로 접근하는게 있는거 같습니다. 호스트와 컨테이너간에 양쪽 모두 443:443 처럼 동일하게 맞춥니다.
 
Gitlab이 모두 기동완료되기 까지 기다립니다.

# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash

# 기동완료되기까지 모니터링 합니다.
watch gitlab-ctl status


Gitlab 설정파일 수정

# Gitlab 컨테이너에서 계속 진행합니다
# 설정파일을 오픈합니다.
vi /etc/gitlab/gitlab.rb

# 32라인
# 외부에서 Gitlab 접근시에 사용하는 도메인주소 입력
external_url 'https://gitlab.sytech.com'

# 1721,1722 라인
# 사설인증서 파일 위치 입력
nginx['ssl_certificate'] = "/etc/gitlab/ssl/sytech.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/sytech.com.key"

# 컨테이너를 빠져 나옵니다.
# 호스트에서 컨테이너 재기동
PS C:\Users\ky945> docker restart SYgitlab


Gitlab 접속확인
PC 웹브라우져에서 https://gitlab.sytech.com 접속합니다.
로그인페이지 나오면  성공입니다


Gitlab Container Repository 설정

# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash

# 설정파일을 오픈합니다.
vi /etc/gitlab/gitlab.rb

# 970라인
# 외부에서 Gitlab 컨테이너 레지스트리 접근시 사용하는 도메인주소 입력
registry_external_url 'https://regist.sytech.com:5050' 

# 973,974,975라인
# Gitlab 컨테이너 레지스트리 활성,도메인주소,접속포트 입력
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "regist.sytech.com" 
gitlab_rails['registry_port'] = "5050"

 
인증서 파일 복사
인증서 파일을 rename해서 복사합니다.

# 컨테이너에서 계속 진행합니다.
cd /etc/gitlab/ssl
cp sytech.com.crt regist.sytech.com.crt
cp sytech.com.key regist.sytech.com.key

# 컨테이너를 빠져나옵니다.
# 호스트에서 컨테이너 재기동
PS C:\Users\ky945> docker restart SYgitlab

주의!! 반드시 /etc/gitlab/ssl 밑에 regist.sytech.com 도메인이름이 포함된 파일로 있어야합니다.

Gitlab Container Repository 생성확인
Gitlab에 로그인합니다. 로그인 계정은 root 이고, 초기 패스워드 정보는 다음처럼 확인합니다.

# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash

# 파일에 Password 부분을 확인합니다.
grep ^Pass /etc/gitlab/initial_root_password

 

프로젝트를 하나 생성합니다. 

Create a project -> Create blank project -> 다음처럼 입력하고 Create porject 클릭

# 프로젝트 이름
Project name : SYgitops

# 계정을 선택
Project URL : root

# 프로젝트 이름 입력되면 자동입력됩니다. 대문자는 소문자로 변환됨
Project slug : sygitops

 
SYgitops 선택 -> 왼쪽 Settings -> "Packages and registries" -> Container registry 보이면 성공입니다.

 


Gitlab Container Repository 테스트
작업 디렉토리를 생성합니다.

PS C:\Users\ky945> mkdir SYimage
PS C:\Users\ky945> cd SYimage
PS C:\Users\ky945\SYimage>

 
nginx 이미지에 배포할 index.html 파일을 만듭니다.

PS C:\Users\ky945\SYimage> notepad index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>나만의 Nginx 서버</title>
</head>
<body>
    <h1>환영합니다!</h1>
    <p>이것은 사용자 정의 Nginx 서버의 인덱스 페이지입니다.</p>
</body>
</html>

 
Dockerfile을 만듭니다.

PS C:\Users\ky945\SYimage> notepad Dockerfile

FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html

 
PC에서 docker 로그인합니다.

PS C:\Users\ky945\SYimage> docker login regist.sytech.com:5050
Username: root
Password: **********  <---- root 패스워드 입력

Login Succeeded    <----- 로그인성공 확인

 
이미지를 빌드합니다.

# -t 태그정보에 registry 접속URL, 계정명, 프로젝트명을 정확히 입력해야합니다.
PS C:\Users\ky945\SYimage> docker build -t regist.sytech.com:5050/root/sygitops/sy-nginx:latest .

....
.... 내용생략
....

# 특별한 에러로그 없으면 성공입니다.

 
이미지를 push 합니다.

PS C:\Users\ky945\SYimage> docker push regist.sytech.com:5050/root/sygitops/sy-nginx:latest

Using default tag: latest
The push refers to repository [regist.sytech.com:5050/root/sygitops/sy-nginx]
62e4061d3e5b: Pushed
6e909acdb790: Pushed
5eaa34f5b9c2: Pushed
57f3c16839af: Pushed
417c4bccf534: Pushed
373fe654e984: Pushed
e7e0ca015e55: Pushed
97f5c0f51d43: Pushed
c22eb46e871a: Pushed
latest: digest: sha256:3790058d20351412ac3d8bd7e5cbdd75bca2b656c53a188a4354f98be24e48a1 size: 856
####################################################################################################

# 특별한 에러로그 없으면 성공입니다.

 
Gitlab에서 push 된 이미지가 보이면 성공입니다.

< push 된 이미지가 보이면 성공 >

 

'도커 환경' 카테고리의 다른 글

Gitops 구성하기v2  (0) 2025.03.30
사설인증서 생성  (1) 2025.03.30
Gitlab 설치구성v2  (0) 2025.03.30
ArgoCD 설치구성v2  (0) 2025.03.29

1. 패키지 최신 업데이트

sudo apt update && sudo apt upgrade -y

 

2. 필요한 패키지 사전설치
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

 

3. SWAP 사용안함

sudo swapoff -a

 

4. 쿠버네티스 key값 다운로드

sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key \

         | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" \

         | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update

 

5. containerd 설치
sudo apt install -y containerd

 

6. containerd 설정

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
grep SystemdCgroup /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd

 

7. kubelet kubeadm kubectl 설치
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

 

8. 쿠버네티스 설정
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system

sudo tee /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
EOF

rebooting 하기

 

9. 쿠버네티스 초기화
sudo kubeadm init --apiserver-advertise-address=192.20.20.10 --pod-network-cidr=192.168.0.0/16 --v=5

##### 아래 출력된 내용을 워커노드에 실행 #######


Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:

 

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.20.20.10:6443 --token jk3ak8.vksa2d6h4kfye4ee \
--discovery-token-ca-cert-hash sha256:c125aa030b953bdc2408ad2b4df564707f2a6325122715536cdd510977769203

##############################

 

10. 쿠버네티스 네트워크 설치
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml

(kubectl cluster-info 결과에 10.0.2.15 가 있었음. 이건 외부로 나가는 NAT용 인걸로 알고 잇음)

'가상서버 환경' 카테고리의 다른 글

Jenkins 와 Gitea 연동구성  (0) 2025.03.15

젠킨스 버전 2.499 , IP : 192.20.20.10
Gitea 버전 1.23.4 , IP : 192.20.20.11

1. 젠킨스 설치

 

2. Gitea Plugin 설치

 

3. Gitea 설치

    + 계정 : gitadmin

    + 저장소명 : SYrepo

 

4. 엑세스토큰생성

    + Gitea 로그인 -> 우측 상단 -> 설정 -> 어플리케이션 -> 엑세스토근만들기

 

5. Credential 생성

    + 젠킨스로그인 -> Jenkins 관리 -> Credential -> (global) 우측 -> Add credentials 클릭

       (Jenkins 관리 -> System -> Gitea -> 설정은 필요없는듯)

 

6. 젠킨스에 Gitea 정보등록
    + 젠킨스로그인 
    + 새로운Item -> pipeline 선택
    + Job -> 구성 -> Trigger -> Poll SCM 선택
    + Job -> 구성 -> pipeline -> "pipeline script from SCM" -> Git
        - Repository URL : http://192.20.20.11:3000/gitadmin/SYrepo.git
        - Credentials : 상연정보기술 Credintial (4번에 생성한값)
        - Branch Speccifier -> */main

 

7. Gitea 웹훅설정

    + SYrepo 저장소 -> 설정 -> 웹훅

       - http://192.20.20.10:8080/gitea-webhook/post  (젠킨스접근정보)

Jenkinsfile 파일내용

pipeline {
    agent any
    stages {
        stage('Checkout') {
           steps {
              git branch: 'main', url: 'http://192.20.20.11:3000/gitadmin/SYrepo.git', credentialsId: 'SYjenkinsCred'
           }
        }
       stage('Deploy') {
           steps {
                script {
                     if (!fileExists('/tmp/deploy')) {
                           sh 'mkdir -p /tmp/deploy'
                     }
                    sh 'cp -r * /tmp/deploy/'
                    sh 'echo "배포 완료: $(date)" > /tmp/deploy/deploy.log'
                }
            }
        }
     }
     post {
          success {
                 echo ' 배포가 성공적으로 완료되었습니다!'
          }
         failure {
                 echo ' 배포 실패!'
         }
     }
}

'가상서버 환경' 카테고리의 다른 글

쿠버네티스 설치구성  (0) 2025.03.15

+ Recent posts