INIT(deploy): portfolio project setup

Add complete portfolio project including:
- Next.js application in services/nextjs
- Docker configurations for dev and prod
- Kubernetes deployment manifests with kustomize
- ArgoCD application configuration
- GitHub Actions workflow for automated builds
This commit is contained in:
2025-11-23 23:40:15 +09:00
commit 95584b666a
18 changed files with 835 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: portfolio-app
labels:
app: portfolio-app
spec:
replicas: 1
selector:
matchLabels:
app: portfolio-app
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: portfolio-app
spec:
containers:
- name: portfolio-app
image: ghcr.io/mayne0213/portfolio:latest
imagePullPolicy: Always
ports:
- containerPort: 3000
protocol: TCP
env:
- name: NODE_ENV
value: production
resources:
requests:
memory: "100Mi"
cpu: "50m"
limits:
memory: "200Mi"
cpu: "150m"
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 5
periodSeconds: 5
restartPolicy: Always

View File

@@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
commonLabels:
app.kubernetes.io/name: portfolio
app.kubernetes.io/component: web
images:
- name: ghcr.io/mayne0213/portfolio
newTag: latest

View File

@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: portfolio-service
labels:
app: portfolio-app
spec:
type: ClusterIP
ports:
- name: http
port: 80
targetPort: 3000
protocol: TCP
selector:
app: portfolio-app

View File

@@ -0,0 +1,19 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: portfolio-app
labels:
environment: production
spec:
replicas: 1
template:
spec:
containers:
- name: portfolio-app
resources:
requests:
memory: "100Mi"
cpu: "50m"
limits:
memory: "200Mi"
cpu: "150m"

View File

@@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: portfolio
resources:
- ../../base
commonLabels:
environment: production
# 이미지 태그 설정
images:
- name: ghcr.io/mayne0213/portfolio
newTag: latest
patchesStrategicMerge:
- deployment-patch.yaml