88 lines
2.3 KiB
Markdown
Executable File
88 lines
2.3 KiB
Markdown
Executable File
# GitOps 배포 가이드 (Gitea + ArgoCD)
|
|
|
|
## 📋 전체 흐름
|
|
```
|
|
git push (main)
|
|
→ Gitea Actions 실행
|
|
→ docker build & push → Gitea Registry
|
|
→ k8s yaml image 태그 자동 업데이트 & commit
|
|
→ ArgoCD 변경 감지
|
|
→ K8s 자동 배포
|
|
```
|
|
|
|
## 🔧 최초 1회 설정
|
|
|
|
### 1단계. Gitea Actions Secret 등록
|
|
Gitea 저장소 → Settings → Secrets → Actions 에서 아래 3개 추가:
|
|
|
|
| Secret 이름 | 값 예시 |
|
|
|---|---|
|
|
| `REGISTRY_HOST` | `192.168.1.100:3000` |
|
|
| `REGISTRY_USER` | `admin` (Gitea 계정명) |
|
|
| `REGISTRY_PASSWORD` | Gitea 패스워드 |
|
|
|
|
### 2단계. K8s에 Registry 인증 Secret 생성
|
|
```bash
|
|
kubectl create namespace web-portal
|
|
|
|
kubectl create secret docker-registry gitea-registry-secret \
|
|
--namespace=web-portal \
|
|
--docker-server=192.168.1.100:3000 \
|
|
--docker-username=<gitea계정> \
|
|
--docker-password=<gitea패스워드> \
|
|
--docker-email=<이메일>
|
|
```
|
|
|
|
### 3단계. K8s yaml 파일 실제 주소로 수정
|
|
아래 파일에서 `192.168.x.x:3000/username` 부분을 실제 주소로 변경:
|
|
- `k8s/04-backend.yaml` → image 경로
|
|
- `k8s/05-frontend.yaml` → image 경로
|
|
- `k8s/06-argocd-app.yaml` → repoURL
|
|
- `.gitea/workflows/build-and-push.yaml` → secrets로 자동 처리됨
|
|
|
|
### 4단계. ArgoCD Application 등록
|
|
```bash
|
|
kubectl apply -f k8s/06-argocd-app.yaml
|
|
```
|
|
또는 ArgoCD UI에서 직접 추가:
|
|
- Repository URL: `http://192.168.1.100:3000/username/k8s-portal.git`
|
|
- Path: `k8s`
|
|
- Namespace: `web-portal`
|
|
- Auto-sync: ON
|
|
|
|
### 5단계. Gitea에 코드 push
|
|
```bash
|
|
git init
|
|
git remote add origin http://192.168.1.100:3000/username/k8s-portal.git
|
|
git add .
|
|
git commit -m "init: web portal"
|
|
git push -u origin main
|
|
```
|
|
|
|
→ Gitea Actions가 자동으로 이미지 빌드 & 배포까지 진행!
|
|
|
|
## ⚠️ HTTP Registry 허용 설정 (중요!)
|
|
Gitea Registry가 HTTP(비SSL)인 경우 Docker에서 insecure registry 허용 필요:
|
|
|
|
Docker Desktop → Settings → Docker Engine:
|
|
```json
|
|
{
|
|
"insecure-registries": ["192.168.1.100:3000"]
|
|
}
|
|
```
|
|
|
|
K8s 노드(docker-desktop)도 동일하게 적용 필요:
|
|
```bash
|
|
# docker-desktop VM 내부 /etc/docker/daemon.json 수정 필요
|
|
# Docker Desktop 재시작 후 적용됨
|
|
```
|
|
|
|
## 🔄 이후 배포 방법
|
|
```bash
|
|
# 코드 수정 후
|
|
git add .
|
|
git commit -m "feat: 변경내용"
|
|
git push
|
|
# → 자동으로 빌드 & 배포됨!
|
|
```
|