Kind 기반 Kubernetes 클러스터 구성
1단계. 시스템 준비
sudo ufw disable
sudo hostnamectl set-hostname dam-a
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget gnupg lsb-release git
#OpenText DAM을 Kubernetes 위에 설치하는 경우에도 스왑을 끄는 것이 권장됩니다.
#swapon --show
#sudo swapoff -a
#sudo nano /etc/fstab # swap 관련 주석처리
2단계. Docker 설치
sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker ecmadmin
로그아웃 후 다시 로그인 (docker 권한 적용)
3단계. Helm 설치
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
3단계. Kind 기반 Kubernetes 클러스터 구성
# 기존 클러스터 삭제
kind delete cluster --name ecm-cluster
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: ecm-cluster
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30996 # Ingress HTTPS NodePort
hostPort: 443 # 외부 443과 연결
protocol: TCP
- containerPort: 32472 # Ingress HTTP NodePort
hostPort: 80
protocol: TCP
[참고] Kubernetes 클러스터 명령어
kind create cluster --config kind-config.yaml
# 클러스터 정보 확인
kubectl cluster-info --context kind-ecm-cluster
# 노드 확인
kubectl get nodes
# 파드 상태 확인 (kube-system 네임스페이스)
kubectl get pods -n kube-system
4단계. Ingress Controller 설치 (Helm)
ingress-nginx repo를 Helm에 등록
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
values-ingress.yaml
controller:
admissionWebhooks:
enabled: true
service:
type: NodePort
nodePorts:
http: 32472
https: 30996
config:
allow-snippet-annotations: "true"
Ingress Controller 설치
helm uninstall ingress-nginx -n ingress-nginx
kubectl delete ns ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx --create-namespace -f values-ingress.yaml
kubectl -n ingress-nginx get deployment ingress-nginx-controller -o yaml | grep allow-snippet 결과:
- --allow-snippet-annotations=true
→ Ingress Controller 자체를 설치하는 명령입니다.
→ 이 단계에서는 Ingress Controller Pod, Service 등만 생성되고, 어떤 TLS secret이나 실제 Ingress 리소스는 아직 관여하지 않습니다.
→
cert-manager 설치
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.2/cert-manager.yaml
[참고] Ingress Controller 명령어
# Ingress Controller 수정
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx \
--set controller.service.type=NodePort \
--set controller.service.nodePorts.http=32472 \
--set controller.service.nodePorts.https=30996 \
--set controller.config.allow-snippet-annotations=true
# Ingress Controller 삭제
helm uninstall ingress-nginx -n ingress-nginx
kubectl delete ns ingress-nginx --wait
[참고] 포트상태 조회 및 수정
조회
kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.96.107.89 <none> 80:32472/TCP,443:30996/TCP 7s
ingress-nginx-controller-admission ClusterIP 10.96.147.98 <none> 443/TCP 7s
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx \
--set controller.service.type=NodePort \
--set controller.service.nodePorts.http=32472 \
--set controller.service.nodePorts.https=30996 \
--set controller.config.allow-snippet-annotations=true
# Ingress Controller 설정에서 `configuration-snippet` 사용이 **보안 이유로 비활성화**된 상태
5단계. 네임스페이스 생성
kubectl create namespace ecm
[참고] 네임스페이스 확인 방법
현재 클러스터에 어떤 네임스페이스가 있는지 확인하려면:
kubectl get namespaces
출력 예시:
NAME STATUS AGE
default Active 10d
kube-system Active 10d
kube-public Active 10d
ingress-nginx Active 1d
ecm Active 1d
dam Active 1d
[참고] 네임스페이스 안 리소스 확인
특정 네임스페이스(ecm) 안에 뭐가 있는지 보려면:
# 모든 리소스 보기
kubectl get all -n ecm
# Secret만 보기
kubectl get secret -n ecm
# ConfigMap만 보기
kubectl get configmap -n ecm
6단계. Ingress 리소스 생성/업데이트
# ecm-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ecm-ingress
namespace: ecm
spec:
ingressClassName: nginx # deprecated annotation 대신 사용
tls:
- hosts:
- ecmsvr25.pentasystem.kr
secretName: tls-secret
rules:
- host: ecmsvr25.pentasystem.kr
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ecm-service
port:
number: 80
kubectl apply -f ecm-ingress.yaml
7단계. DB 설치
sudo apt install -y postgresql
sudo -u postgres psql
CREATE USER otdsuser WITH PASSWORD 'SystemAdmin@1234';
CREATE DATABASE otdsdb OWNER otdsuser;
GRANT ALL PRIVILEGES ON DATABASE otdsdb TO otdsuser;
\q
psql -h localhost -U otdsuser -d otcsdb
sudo -u postgres psql
drop DATABASE otdsdb ;
drop user otdsuser;
drop DATABASE otiv ;
drop user otiv;
drop DATABASE ac ;
drop user ac;
1) 접속 중인 세션 확인
SQL
SELECT pid, usename, application_name, client_addr
FROM pg_stat_activity
WHERE datname = 'otdsdb';
2) 모든 세션 강제 종료
SQL
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'otdsdb';
\q
[참고] 2_PostgreSQL 설치 .md