
Comentario 오픈소스를 https로 배포하기 - minikube 활용업무 개선/Docs as code2025. 5. 6. 18:33
Table of Contents
반응형
코드작업은 아래 링크에 추가해두었습니다.
ray5273/comentario-kubernetes-deploy
GitHub - ray5273/comentario-kubernetes-deploy
Contribute to ray5273/comentario-kubernetes-deploy development by creating an account on GitHub.
github.com
Prerequisite
1. CRD 관련 repo들 helm으로 다운받기
# Helm으로 cert-manager 설치
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.12.0 --set installCRDs=true
아래는 comentario에서 사용하는 Traefik CRD이므로 설치해줍니다.
2. cert 파일 생성하기
crt파일과 key 파일을 각각 생성합니다.
myapp.test라는 도메인으로 생성을 합니다.
# myapp.test 도메인용 crt/key 생성
mkcert \
-cert-file myapp.test.crt \
-key-file myapp.test.key \
myapp.test
쿠버네티스 작업
1. namespace 생성
이 이름의 namespace로만 작업하려고 합니다.
kubectl create namespace my-comentario
2. postgres pvc 생성
kubectl apply -f postgres-pvc.yaml -n my-comentario
3. postgres 데이터베이스 배포
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install comentario-postgres bitnami/postgresql -n my-comentario -f postgres-values.yaml
image:
repository: postgres
tag: 17-alpine
primary:
persistence:
existingClaim: comentario-postgres-pvc
securityContext:
enabled: false
podSecurityContext:
fsGroup: 999
containerSecurityContext:
runAsUser: 999
extraVolumes:
- name: run-postgresql
emptyDir: {}
extraVolumeMounts:
- name: run-postgresql
mountPath: /var/run/postgresql
initdb:
scripts:
create-db.sql: |
CREATE DATABASE comentario;
volumePermissions:
enabled: true
global:
postgresql:
auth:
postgresPassword: postgres
database: comentario
4. comentario 시크릿 생성
kubectl apply -f resources/k8s/comentario-secrets.yaml
apiVersion: v1
kind: Secret
metadata:
# Change the secret name to the same value as used for installing the Helm chart
name: comentario-secrets
namespace: my-comentario
type: Opaque
stringData:
secrets.yaml: |
postgres:
host: comentario-postgres-postgresql
port: 5432
database: comentario
username: postgres
password: postgres
5. cert-manager 설치 및 대기
# cert-manager 설치
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml
# 모든 pod가 Ready 상태가 될 때까지 대기 (중요!)
kubectl -n cert-manager wait --for=condition=ready pod --all --timeout=300s
6. 인증서 발급자 생성
selfsigned-issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-issuer
spec:
selfSigned: {}
kubectl apply -f selfsigned-issuer.yaml
7. comentario 서비스 배포
comentario-service.yaml
apiVersion: v1
kind: Service
metadata:
name: comentario
namespace: my-comentario
labels:
app.kubernetes.io/name: comentario
app.kubernetes.io/instance: comentario
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app.kubernetes.io/name: comentario
8. comentario helm 배포
helm install comentario resources/helm/comentario \
--namespace my-comentario \
--set ingress.enabled=true \
--set ingress.host=myapp.test \
--set ingress.tls[0].hosts[0]=myapp.test \
--set ingress.tls[0].secretName=comentario-cert-secret \
--set clusterIssuer=selfsigned-issuer \
--set image.repository=registry.gitlab.com/comentario/comentario \
--set image.tag=latest
9. ingress 설정
# comentario-ingress.yaml 파일 생성
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: comentario-ingress
namespace: my-comentario
annotations:
cert-manager.io/cluster-issuer: selfsigned-issuer
kubernetes.io/ingress.class: nginx
#nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
#nginx.ingress.kubernetes.io/ssl-redirect: "true"
#nginx.ingress.kubernetes.io/use-port-in-redirects: "true"
spec:
tls:
- hosts:
- myapp.test
secretName: comentario-cert-secret
rules:
- host: myapp.test
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: comentario
port:
number: 80
kubectl apply -f comentario-ingress.yaml
10. helm 배포
helm upgrade comentario resources/helm/comentario \
--namespace my-comentario \
--set ingress.enabled=true \
--set ingress.host=myapp.test \
--set ingress.tls[0].hosts[0]=myapp.test \
--set ingress.tls[0].secretName=comentario-cert-secret \
--set clusterIssuer=selfsigned-issuer \
--set image.repository=registry.gitlab.com/comentario/comentario \
--set image.tag=latest
11. minikube ingress 플러그인을 설치
minikube addons enable ingress
활성화 후 ingress-nginx 네임스페이스에 Pod가 뜨고 자동으로 실행됩니다.
12. ingress-nginx 설정으로 30080포트로의 접근을 허용
ingress-nginx-controller.yaml
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx-controller
namespace: ingress-nginx
spec:
type: NodePort
selector:
app.kubernetes.io/name: ingress-nginx
ports:
- name: https
port: 443
targetPort: 443
nodePort: 30080
반응형
'업무 개선 > Docs as code' 카테고리의 다른 글
Docs as Code - 필요성 및 효과에 대한 자료 수집 (0) | 2025.05.12 |
---|---|
Docs as code - (5) docusaurus on-premise 댓글 기능 추가 with comentario (0) | 2025.01.21 |
Docs as code - (4) Docusaurus 방문자 확인 on-premise ackee analytics 적용기 (1) | 2024.12.22 |
Docs as code - (3) Docusaurus 페이지에 대해 Typesense scraper로 검색 인덱스가 잘 생성되지 않는 문제 해결 (0) | 2024.12.22 |
Docs as code - (2) Docusaurus v3의 On-premise 검색 엔진으로 Typesense 사용 하기 (2) | 2024.12.11 |
@ray5273 :: Micro Changes, Macro Impact
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.