1. 요구 조건

 1.1. vnet 생성 : 10.0.0.0/16
 1.2. subnet 생성
  1.2.1. bastion : 10.0.0.0/24
  1.2.2. web : 10.0.1.0/24

  1.2.3. db : 10.0.2.0/24 

 1.3. 가상머신 생성 / 인바운드 포트 허용
  1.3.1. bastion : 10.0.0.4 / 22
  1.3.2. web : 10.0.1.4 / 22, 80, icmp

  1.3.3. db : 10.0.2.4 / 22, icmp

 1.4. bastion에서 web, db로 ssh 접속 가능하게 설정

 1.5. 가상머신 접속시 rsa 비대칭키 사용 

2. 조건에 맞게 가상 네트워크 및 서브넷 만들기     * 세부  내용은 이전 자료 참고

3. bastion 가상머신 만들기     * 세부  내용은 이전 자료 참고

 

4. 로컬 컴퓨터에서 RSA 비대칭키 만들기 

 4.1. 명령 프롬프트 실행 

 4.2. RSA 비대칭키 생성 (비밀번호 없음)

ssh-keygen -m PEM -b 2048 -t rsa -q -N ""

 

 4.3. Bastion 가상머신으로 개인키 보내기 

scp -i id_rsa id_rsa [bastion 가상머신 계정]@[bastion 가상머신 공인IP]:[저장하고자 하는 디렉토리]/home/[계정]/.ssh/

 

5. WEB, DB 가상머신 만들기    * 세부  내용은 이전 자료 참고

 5.1. 인증형식 : SSH 공개 키 

 5.2. SSH 공개 키 원본 : 기본 퍼블릭 키 사용 

 5.3. SSH 공개 키 : 로컬 컴퓨터에서 생성한 RSA 비대칭키에서 공개키에 해당하는 id-rsa.pub 파일을 메모장을 열어서 컴퓨터 계정 정보를 제외한 내용을 복사 붙여넣기 

 

 

 5.4. 사용자 지정 데이터 입력 (자동 설치 스크립트) 

 

 5.5. web 서버 자동 설치 스크립트

#!/bin/bash
setenforce 0
dnf install -y wget tar
wget https://ko.wordpress.org/wordpress-5.8.8-ko_KR.tar.gz
tar xvfz wordpress-5.8.8-ko_KR.tar.gz
dnf install -y httpd
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php/g' /etc/httpd/conf/httpd.conf
cp -ar wordpress/* /var/www/html/
dnf install -y php php-cli php-gd php-opcache php-curl php-mysqlnd
cp /var/www/html/{wp-config-sample.php,wp-config.php}
sed -i 's/database_name_here/wordpress/g' /var/www/html/wp-config.php
sed -i 's/username_here/root/g' /var/www/html/wp-config.php
sed -i 's/password_here/It12345!/g' /var/www/html/wp-config.php
sed -i 's/localhost/10.0.2.4/g' /var/www/html/wp-config.php
systemctl enable --now httpd

 

 5.6. DB 서버 자동 설치 스크립트

#!/bin/bash
setenforce 0
yum install -y mysql-server
systemctl start mysqld
mysql -uroot -e "create user 'root'@'%' identified by 'It12345!';
grant all privileges on *.* to 'root'@'%';
create database wordpress; 
quit;"
yum install -y openssh     # mysql-server 설치시 원격 접속이 되지 않는 Openssh 문제가 발생함으로 다시 설치해야 원격접속이 가능

 

6. 네트워크 보안 그룹 설정      * 세부  내용은 이전 자료 참고

 

7. 확인 : bastion 가상머신에서 web, db 서버  ssh 접속 시도 

 

1. Master PC 

 1.1. 토큰 생성 : kubeadm token create    * 토큰값 별도 메모 

 1.2. 공개키값 생성   * 토큰값 별도 메모 

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

 

 1.3. Node Join 확인 (Node PC 완료 후) : kubectl get nodes  

2. Worker Node PC 

 2.1. 클러스터 설정 (자동 스크립트)    * Node Ip 주소 수정 필요

#! /bin/bash
timedatectl set-timezone Asia/Seoul
systemctl disable --now firewalld
# Master
# firewall-cmd --add-port={80,443,6443,2379,2380,10250,10251,10252,30000-32767}/tcp --permanent
# Node
# firewall-cmd --add-port={80,443,10250,30000-32767}/tcp --permanent

# swap off
swapoff -a
sed -i '/swap/ s/^\(.*\)$/#\1/g' /etc/fstab

# overlay 및 iptables Module Load
cat > /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

# iptables 및 NAT 활성화
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward =1
EOF
sysctl --system

# /etc/hosts file edit
cat >> /etc/hosts << EOF
172.16.0.11       master  k8s-ma
172.16.0.21       node1   k8s-no1
172.16.0.22       node2   k8s-no2
172.16.0.23       node3   k8s-no3
EOF

# container runtime install
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io
mkdir -p /etc/cotainerd
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
systemctl enable containerd
systemctl restart containerd

# K8S Repository
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

# kubeadm, kubelet, kubectl Package Install
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

systemctl enable kubelet
systemctl start kubelet

 

 

 2.2. Node Join : kubeadm join [Master PC IP주소]:[포트 번호] --token [토큰값] --discovery-token-ca-cert-hash sha256:[공개키값] 

 

 

1. 가상머신 만들기 

 1.1. 가상머신 검색 후 클릭 

 1.2. 만들기 클릭  → Azure 가상 머신 클릭 

 

 1.3. 리소스 그룹  → 새로 만들기  

 

 1.4. 가상 머신 이름 입력   데이터 센터 지역 선택   가용성 중복 불필요 (테스트 환경)   보안 유형 표준   이미지 Rocky Linux 9 with LVM - x64 Gen 2   크기 (테스트 환경이므로 저렴한 크기 선택)     

 1.5. SSH 공개 키 → 사용자 이름 입력 (원격접속시 사용)   키 쌍 이름 입력   

 

 1.6. 네트워크 : 가상 네트워크 → 새로 만들기   서브넷 이름 변경 (필수는 아님) 확인   

 

 1.6. 네트워크 보안 그룹 '기본' → VM 삭제 시 공용 IP 및 NIC 삭제 '체크'   가속화된 네트워킹 사용 '체크 해제'    검토 만들기

 

 

 1.7. 프라이빗 키 다운로드 (2번 다운로드 할 수 없음)

 

 1.8. 공용 IP 주소 확인 : 웹 가상머신  → 연결   연결 → 연결 수단  

 

 1.9. 가상머신 원격 접속

   step1) 연결 : Xshell → 새로 만들기 → 연결 → 이름 입력 → 호스트 (가상머신 공인 IP) 입력 

 

 step2) 사용자 인증 : Public Key 체크 → 설정 → 키 파일 → 사용자 키 선택 → ... 클릭 

 

 step3) 사용자 인증 : 가져오기  클릭 → 다운받은 경로에서 가져오기  

 

1.10. root 계정 전환 : sudo su - 

 

2. Docker로 WEB 서비스 만들기 

 

 2.1. Docker 설치 

  step1) dnf 플러그인 설치 : dnf -y install dnf-plugins-core

  step2) 레포지토리 추가 : dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  step3) docker 엔진 설치 : dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  step4) docker 서비스 구동 (부팅시에도) : systemctl enable --now docker

 2.2. docker 로그인 : docker login -u [아이디]

 2.3. 이미지 가져오기 

  step1) http : docker pull httpd 

  step2) nginx : docker pull nginx

  step3) mysql : docker pull mysql:8.0

 2.4. 이미지 실행 (컨테이터) 

  step1) docker run -itd -p 60080:80 --name h1 httpd

  step2) docker run -itd -p 60180:80 --name n1 nginx

 

3. Azure 방화벽 설정 

 3.1. '네트워크 보안 그룹' 검색 → '네트워크 보안 그룹'  클릭 후 웹 서버 보안 그룹 클릭 

 

 3.2. 설정 → 인바운드 보안 규칙 → 추가 → 서비스 HTTP   추가

 

 3.3. 60080 포트 개방 : 설정 → 인바운드 보안 규칙 → 추가 → 서비스 custom   대상 포트 범위 : 60080

 3.4. 60180 포트 개방 : 설정 → 인바운드 보안 규칙 → 추가 → 서비스 custom   대상 포트 범위 : 60180

 

4. 웹 서비스 구동 확인

 

 

 

+ Recent posts

# 드래그 금지