DAM 배포 준비
🧱 전체 구성 개요
최소 2대로 구성하지만, 리소스에 따라 더 많은 노드를 구성할 수 있습니다.
🧾 1단계: VM 생성 (ESXi)
🔧 사양 권장
- CPU: 최소 4 vCPU
- RAM: 8GB 이상 (Master), 16GB 이상 (Worker)
- Disk: 100GB 이상
- NIC: 브리지 네트워크 또는 내부 NAT 가능
📌 설치할 OS
- Ubuntu Serve r 22.04 LTS (설치 ISO 필요)
🧾 2단계: OS 설치 및 초기 설정
각 VM에 다음과 같이 설정합니다. https://velog.io/@pennori/Ubuntu-22.04-쿠버네티스-1.29-설치 와 비교
# 방화벽 해제
sudo ufw disable
#sudo로 로그인
sudo apt update && sudo apt upgrade -y
# 호스트명 설정 (각 노드에 다르게)
sudo hostnamectl set-hostname k8s-master # 또는 k8s-worker
🧾 3단계: Docker 설치
sudo -i
# docker 패키지 설치
apt install -y docker.io
docker ps # docker 상태 확인
docker version # docker 버전 확인
# docker 서비스 등록 및 실행
sudo systemctl enable docker
sudo systemctl start docker
🧾 4단계: 쿠버네티스 클러스 구성
sudo -i
# Swap 비활성화 (모든 노드)
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
# IP Forwarding 기능 활성화 (트래픽 관리 효율 제고 목적)
echo '1' > /proc/sys/net/ipv4/ip_forward # 실행시 1 반환 확인
cat /proc/sys/net/ipv4/ip_forward
# 컨테이너 런타임 환경 구성 - containerd 활용
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
# 커널에 생성한 모듈을 등록하여 사용가능하도록 설정
modprobe overlay
modprobe br_netfilter
#노드간 통신을 위한 iptables bridge 설정 추가
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
# 재부팅 후에도 값이 유지
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 재부팅하지 않고 sysctl 파라미터 적용
sudo sysctl --system
# 컨테이너 런타임 환경 구성 - containerd 환경 설정
mkdir /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# 컨테이너 런타임 환경 구성 - cgroup 설정
vi /etc/containerd/config.toml # line 1에 있는 disabled_plugins = [] 확인, 값이 없어야 함
<<내용 수정 시작>>
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
BinaryName = ""
CriuImagePath = ""
CriuPath = ""
CriuWorkPath = ""
IoGid = 0
IoUid = 0
NoNewKeyring = false
NoPivotRoot = false
Root = ""
ShimCgroup = ""
SystemdCgroup = true
..
<<내용 수정 끝>>
sudo service containerd restart
systemctl status containerd
# 컨테이너 런타임 환경 구성 - docker daemon 설정
vi /etc/docker/daemon.json # 새 파일 생성
# 아래 내용 붙여넣기
...
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
...
mkdir -p /etc/systemd/system/docker.service.d
usermod -aG docker ecmadmin #sudo 없이 사용
systemctl daemon-reload
systemctl restart kubelet
systemctl enable docker
systemctl restart docker
systemctl status docker # Active 상태 확인
systemctl restart containerd.service
systemctl status containerd.service
#도커 버전 확인
docker version
#도커의 cgroup 드라이버가 systemd 변경 확인
docker info
🧾 5단계: Kubernetes 설치 (kubeadm, kubelet, kubectl)
# 패키지 업데이트
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gpg
# 패키지 레파지토리에 대한 공개키 다운로드
# `/etc/apt/keyrings` 해당 디렉토리가 없을 경우 먼저 생성 해야 함.
mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 키 정보와 레파지토리 URL 지정
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 패키지 업데이트 후 다운로드
apt-get update
apt-get install -y kubelet kubeadm kubectl
# 자동 업데이트 방지
sudo apt-mark hold kubelet kubeadm kubectl
# 버전 확인
kubeadm version
kubectl version
kubelet --version
# 자동 시작 등록
systemctl daemon-reload
systemctl restart kubelet.service
systemctl enable --now kubelet.service
🧾 5단계: Kubernetes 클러스터 복사 (worker 노드)
vm 복사
sudo hostnamectl set-hostname k8s-worker
🧾 6단계: Kubernetes 클러스터 초기화 (Master 노드)
🔸 컨테이너 런타임: containerd 설정
Ubuntu 22.04부터는 containerd가 기본입니다. kubeadm은 containerd와 호환됩니다.
🔸 클러스터 초기화
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
kubeadm join 192.168.137.131:6443 --token 8g60x8.dx9t64rlmvyun1ww \
--discovery-token-ca-cert-hash sha256:732cfacddea0e6b32213295cc36677a7fd3ea84a0ab266bdb6fc8f245fa20cae
실패시
sudo kubeadm reset -f
sudo systemctl stop kubelet
sudo docker system prune -a --volumes -f # 또는 containerd 사용 시 컨테이너 삭제
sudo rm -rf /etc/kubernetes
sudo rm -rf /var/lib/etcd
sudo rm -rf ~/.kube
다시시도
sudo systemctl daemon-reexec
sudo systemctl restart kubelet
sudo kubeadm reset -f
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
CIDR은 Flannel 네트워크 플러그인 기준입니다.
🔸 일반 사용자에게 kubectl 권한 부여
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
🔸 클러스터 상태 확인 (잠시 기다린 후)
kubectl get nodes
kubectl get pods -n kube-system
🧾 7단계: 네트워크 플러그인 설치 (예: Flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
확인
kubectl get pods -n kube-system
kubectl get nodes
🧾 8단계: Worker 노드 조인
Master 노드 초기화 결과로 나온 join 명령어를 복사하여 Worker 노드에서 실행:
sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
sudo kubeadm join 192.168.137.131:6443 --token 8g60x8.dx9t64rlmvyun1ww \
--discovery-token-ca-cert-hash sha256:732cfacddea0e6b32213295cc36677a7fd3ea84a0ab266bdb6fc8f245fa20cae
🧾 9단계: 클러스터 확인 (Master 노드에서)
kubectl get nodes
두 노드가 Ready 상태여야 합니다.
🧾 10단계: Helm 설치 (모든 노드)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
✅ 이후 단계: OpenText DAM 배포 준비
이제 클러스터가 구성되었으므로 다음을 수행해야 합니다:
- Ingress Controller (NGINX 등) 설치
- StorageClass 설정 (RWX 필요)
- OpenText Container Registry 로그인 및 Docker 이미지 pull
- PostgreSQL 설치 (또는 외부 DB 연결)
- DAM용 Helm Chart 및 values.yaml 구성
Ingress Controller (NGINX 등) 설치