VPC 구성
Instance 생성 (Bastion-server, K8S-manage-server)
Public의 Bastion
과 Private의 k8s manage server
2개 생성
RECA-PUB-BAS 인스턴스
Nginx, Tomcat, Docker, aws cli 설치
*** Bastion에는 Nginx와 Tomcat을 설치할 필요가 없지만, Dockerfile 생성 시 편의를 위해 설치
nginx 설치
yum info nginx
# Error: No matching Packages to list -> nginx.repo 추가
sudo vi /etc/yum.repos.d/nginx.repo
# 아래 내용 추가
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch
gpgcheck=0
enabled=1
sudo yum install nginx
sudo systemctl enable --now nginx
Public IP:80 nginx 접속 확인
java 설치
# java 설치
sudo yum list | grep jdk
sudo yum install java-1.8.0-openjdk
sudo yum install java-1.8.0-openjdk-devel.x86_64
java -version
javac -version
which java # java의 경로 확인 (/usr/bin/java)
readlink -f /usr/bin/java # 심볼릭 링크가 연결된 실제 파일 경로 확인
# readlink를 통해 나온 경로를 실제 환경변수 $JAVA_HOME에 등록
sudo vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.372.b07-1.amzn2.0.1.x86_64/jre/bin/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
# /etc/profile 마지막 line에 추가
source /etc/profile
echo $JAVA_HOME
tomcat 설치
# tomcat 설치
sudo mkdir /home/tomcat
cd /home/tomcat
sudo wget <https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.75/bin/apache-tomcat-9.0.75.tar.gz>
sudo tar xvfz apache-tomcat-9.0.75.tar.gz
sudo rm apache-tomcat-9.0.75.tar.gz
sudo chmod -R 777 /etc/profile
sudo vi /etc/profile
export CATALINA_HOME=/home/tomcat
# /etc/profile 마지막 line에 추가
source /etc/profile
# /etc/profile에 입력한 내용 적용
echo $CATALINA_HOME
# 설정한 환경변수 확인
cd /home/tomcat/apache-tomcat-9.0.75/
sudo chmod -R 777 /home/tomcat/apache-tomcat-9.0.75/bin
cd bin
sudo ./startup.sh
/etc/profile
Public IP:8080 tomcat 접속 확인
docker 설치
sudo yum update -y
sudo yum install -y docker
docker -v
sudo systemctl enable --now docker
curl "<https://awscli.amazonaws.com/AWSCLIV2.pkg>" -o "AWSCLIV2.pkg"
aws configure
RECA-PRI-MNG 인스턴스 (=k8s manage server)
Bastion에서 .pem 이용해 접속 ssh -i "RECA_TEST.pem" ec2-user@PRIVATE_IP
aws cli, docker, eksctl, kubectl 설치
curl -o kubectl <https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl>
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --short --client
nginx—tomcat 연결을 위한 설정 파일 편집 (Bastion)
sudo vi /etc/nginx/conf.d/default.conf
# 내용 수정
location / {
proxy_pass <http://10.3.128.100:8080>; # tomcat 서비스 ClusterIP를 미리 지정
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
mkdir nginx
# home에 nginx 디렉토리 생성
sudo cp /etc/nginx/conf.d/default.conf nginx/default.conf
# 생성한 nginx 하위에 수정한 설정파일 default.conf 복사 -> dockerfile에 사용할 경로
/etc/nginx/conf.d/default.conf에 ClusterIP를 미리 지정
Dockerfile 생성
sudo vi Dockerfile
FROM nginx:1.22.0
# hub.docker.com에서 nginx 이미지를 가져온다
RUN rm /etc/nginx/conf.d/default.conf
# RUN, 기존의 default.conf 파일을 삭제
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
# 5번에서 수정해 저장한 nginx/default.conf을 원래 경로에 복사
CMD ["nginx", "-g", "daemon off;"]
# 실행
EXPOSE 80
# 80 포트 열기
sudo docker build --tag nginxtest:1.0 .
aws configure 로그인
aws ECR 생성 후 push
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 194453983284.dkr.ecr.ap-northeast-2.amazonaws.com
docker build -t nginxtest .
docker tag nginxtest:latest 194453983284.dkr.ecr.ap-northeast-2.amazonaws.com/nginxtest:latest
docker push 194453983284.dkr.ecr.ap-northeast-2.amazonaws.com/nginxtest:latest
콘솔에서 클러스터, 노드 그룹 생성 후 연결
aws eks --region ap-northeast-2 update-kubeconfig --name EKS-test
kubectl get nodes
kubectl create deployment tomcat --replicas=3 --image=tomcat
kubectl expose deployment tomcat --name=tomcat-service --port=8080 --target-port=8080 --type=LoadBalancer --cluster-ip=10.3.128.100
# nginx 설정 파일에 지정해 준 clusterIP 지정
kubectl create deployment nginx --replicas=3 --image=194453983284.dkr.ecr.ap-northeast-2.amazonaws.com/nginxtest
# ECR에 올려놓은 nginx 이미지로 create
kubectl expose deployment nginx --name=psy-nginx-service --port=80 --target-port=80 --type=LoadBalancer --cluster-ip=10.3.0.100
# Loadbalancer
kubectl get services
# 확인
⇒ aws 콘솔의 nginx 로드밸런서 — DNS 접속하여 최종 확인