[ft_services] 4. sh파일 생성하기. , grafana란? nginx란? influxDB란?
7587 단어 42subjectft_services42subject
풀이 정리
우선 미니쿠베가 설치 안되어있다면, 설치하기.
- ~/.zshrc에 아래 코드 추가(미니쿠베파일을 goinfre파일에 설치한다.)
(이건 개인 맥이나 개인 컴퓨터면 안해도 되어요. 42seoul 클러스터 mac인 경우 설정해주세요, 설치 경로 변경)
export MINIKUBE_HOME=~/goinfre
(이건 개인 맥이나 개인 컴퓨터면 안해도 되어요. 42seoul 클러스터 mac인 경우 설정해주세요, 설치 경로 변경)
export MINIKUBE_HOME=~/goinfre
아래 미니쿠베 설치.(만약 brew없으면 brew도 설치하세요.)
brew install minikube
main()
{
introduce
minikube_setup
make_images
yaml_services
}
메인문은 4가지로 구성되어있다.
1. introduce : sh 파일의 만든이 정보를 넣어줍니다.
2. minikube_setup : 미니쿠베를 시작하고 설정을 해줍니다.
3. make_images : 이미지파일을 만들어 줍니다.
4. yaml_services : yaml파일로 생성한 이미지파일로 pod를 생성해주고, 파드의 오브젝트를 설정합니다.
1. introduce
introduce()
{
echo -e $GREEN
echo "by. hoylee, 21-04-21"
echo "FT_services,start!"
echo -e $WHITE
echo -e $CYAN
echo "=============================================================================================="
echo -e $WHITE
echo " 8888888888 88888888888 88 d88888b 8b d8 88 88888888 8888888"
echo " 888 888 88 88 88 88 88 88 88 88"
echo " 888 888 88 88 88 88 88 88 88 88"
echo " 8888888 888 8888888h 88 88 88 88 88 88888888 8888888"
echo " 888 888 88888888 88 88 \"888888 88 88 88"
echo " 888 888 88 88 88 88 8b 88 88 88"
echo " 888 888 88 88 88 88 8b 8888888b 88 88"
echo " 888 888 88888888 88 88 d88888b 8888b 88888888 88888888 8888888"
echo -e $CYAN
echo "=============================================================================================="
echo -e $BLUE
echo -e $CYAN
echo -e $WHITE
}
2. minikube_setup
minikube_setup()
{
minikube delete
minikube start --driver=virtualbox --cpus=2
minikube addons enable dashboard
minikube addons list
more_addons
echo 😻- complete addons..!
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
kubectl apply -f srcs/yaml_metallb/metallb_complete.yaml
eval $(minikube docker-env)
echo $DOCKER_HOST
echo -en $GREEN
echo "Minikube is ready !"
echo
}
- 쿠버네티스를 시작할 가상머신을 virtualbox를 사용합니다. virtualbox를 사용하는 이유는 docker 의 사용환경이 linux환경일 때 더 높은 효율로 자원들을 컨테이너를 만들수 있습니다. 쿠버네티스의 linux가상 머신의 기본툴이 virtualbox입니다. 드라이브 종류
- 쿠버네티스에서 제공하는 로드벨런스 metallb를 활성화 합니다. addons 추가 설명
- 추가적으로 metlalb설정 했습니다.
- minikube docker-env 을 하는 이유는 내 컴퓨터에 있는 도커 CLI와 쿠버네티스의 docker server 를 연결해줄려고 사용했습니다.
- 쿠버네티스에는 도커는 있지만, docker server가 내장되어있지만, 이를 컨트롤 하기 위해서 내 로컬호스트의 컴퓨터와 연결해서 미니쿠베 도커에게 요청을 할수 있습니다.
more_addons
more_addons()
{
echo -e "addons 더 필요한게 있으면 입력하세요, 그냥 진행하려면 enter"
echo -e "ex) ambassador or auto-pause "
read word
while [[ $word != '' ]];
do
flag1=1
for value in "${addons_list[@]}"; do
if [ $word == $value ] ; then
minikube addons enable $word
minikube addons list
flag1=2
echo "add complete $word"
fi
done
if [ $flag1 -eq 1 ] ; then
echo "==================================================================="
echo -e $RED"$word is not inside addons. addons list,"
echo -e $WHITE
echo "Please input addons name or if you dont need addons just put enter"
echo "==================================================================="
fi
if [ $flag1 -eq 2 ] ; then
echo -e "addons 더 필요한게 있으면 입력하세요, 그냥 진행하려면 enter"
echo -e "ex) ambassador or auto-pause "
fi
read word
done
}
- 여기서는 addons list를 추가적으로 입력 받고 싶으면 입력 받게끔 만들었는데, 과제만 목적이라면 굳이 안해도 괜찮다.
- '' 빈 공간을 입력을 받으면 그냥 넘어간다.
- addlist에 없는 값을 입력 받으면 잘못된 입력이라고 띄운다.
- addon list중에 하나를 입력받으면 활성화된다.
코드 실행 후 사진!
- metalLB 설정도 잘 진행 되고 addons에 관련해서 더 활성화 시킬 에드온이 있는지 물어본다.
metallb.yaml
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.98.100.92-192.98.100.92
- 컨피그맵은 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 컨피그맵을 사용할 수 있다.
- metadta 에서 네임스패이스와 이름을 설정한다.
- metalLB란?
- layer2 : 이 중 Layer 2 설정은 가장 심플하지만, 노드 하나가 트래픽을 일단 다 받으며 로드밸런싱을 한다음 서비스에 연결된 모든 포드로 트래픽을 분산시키는 방식이라는 특징을 가지고 있습니다
3. make_images
make_images()
{
images_kind=("nginx" "wordpress" "mysql" "phpmyadmin" "ftps" "grafana" "influxdb")
for kind in "${images_kind[@]}"
do
echo -en $WHITE
echo "📲 Building $kind image..."
echo -en $YELLOW
docker build -t $kind srcs/$kind/
echo "$kind === "
echo -en $GREEN
echo "📱 success built $kind image !"
echo
done
echo -en $WHITE
}
- 도커를 이미지를 빌드합니다. 도커 설명은 ft_server때 정리해둔 글이있어요! 많이 봐주세요 ㅠ.ㅠ.도커란?
- docker build -t nginx srcs/nginx/ 를 통해 srcs폴더에있는 각각의 dockerfile로 빌드합니다.
색 넣는거 해두면 좋아요. 나중에 sh파일 돌릴 때 빌드마다 노란색으로 구분되서 보여서 실행 상황 보기 편했어요.
yaml_services
yaml_services()
{
kubectl apply -f srcs/yaml_services/nginx.yaml
kubectl apply -f srcs/yaml_services/wordpress.yaml
kubectl apply -f srcs/yaml_services/mysql.yaml
kubectl apply -f srcs/yaml_services/phpmyadmin.yaml
kubectl apply -f srcs/yaml_services/ftps.yaml
kubectl apply -f srcs/yaml_services/grafana.yaml
kubectl apply -f srcs/yaml_services/influxdb.yaml
}
- 생성한 이미지파일을 컨테이너로 생성하고, 컨테이너를 묶어 pod를 생성합니다.
- 여기서는 이번 실습에서 주로 사용되는 kind는 디플로이먼트와 서비스를 사용합니다.
- deployment : 이미지파일을 통해 컨테이너를 생성하고 리플리카셋을 통해 하나의 파드에 무슨종류의 컨테이너가 몇개씩 사용할지 정해줍니다. 파드의 설정도 진행해줍니다.
- services : 파드를 외부와 연결해주는 오브젝트를 생성합니다.
addons 추가 설명
minikube addons list
minikube addons list
dashboard : 클러스터의 웹 UI 툴
efk : 로그분석 툴(Elasticsearch, Fluentd 및 Kibana)
freshpod : 이미지 리빌드시 pod 재시작
gvisor : 컨테이너 런타임을 대체하여 안전하게 pod 실행
heapster : 컴퓨터 리소스 분석 및 클러스터 모니터링
ingress : 쿠버네티스 Ingress 리소스를 기반으로 구축된 NGINX 컨트롤러
logviewer : 경량 로그 툴
metrics-server : 클러스터 자원 사용률 및 활용도를 수집
** addons의 툴은 각자 기능이 있는데, 구글에 검색하면 설명이나옴. 궁금하면 검색 해볼것 **
참고 : https://www.oops4u.com/2372
> addons : 부가 기능은 Kubernetes의 기능을 확장합니다
Author And Source
이 문제에 관하여([ft_services] 4. sh파일 생성하기. , grafana란? nginx란? influxDB란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hey-chocopie/ftservices-풀이-작성중저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)