매번 재시작할 때마다
1. minikube start
2. kubectl rollout restart ~
3. sudo iptables ~
등 이런 명령어를 매번 치는게 귀찮아서 이것을 ubuntu가 켜질 때마다 실행되는 명령어로 바꾸도록하겠습니다.
service를 이용할 건데 테스트할 스크립트를 만들도록할게요
cat <<EOF>> /home/ubuntu/startup.sh
#!/bin/bash
date >> /home/ubuntu/date_log.txt
exit 0
EOF
/etc/systemd/system/date_test.service 여기에 아래와 같이 파일을 만들게요
[Unit]
Description=Test Service
After=multi-user.target
StartLimitIntervalSec=1
[Service]
Type=simple
User=ubuntu
Group=sudo
WorkingDirectory=/home/ubuntu
ExecStart=/bin/bash startup.sh
Restart=on-failure
Restart=alwayes
RestartSec=1
[Install]
WantedBy=multi-user.target
# 서버 재부팅 시에 서비스 자동 시작
sudo systemctl daemon-reload
sudo systemctl enable date_test.service
# 서비스 시작
sudo systemctl start date_test.service
sudo rm -rf /home/ubuntu/date_log.txt
sudo reboot
cat /home/ubuntu/date_log.txt
# Mon Nov 18 00:51:46 UTC 2024
# Mon Nov 18 00:56:37 UTC 2024
아주 잘 작동하네요 이제 스크립트를 변경해서 사용하도록할게요. Make를 이용하겠습니다.
sudo apt-get -y install make
cat <<EOF>> Makefile
.PHONY: up
up:
bash ./.start.sh
.PHONY: down
down:
bash ./.down.sh
EOF
cat << EOF > .start.sh
#!/bin/bash
echo "telpoert service start!!"
sudo systemctl start teleport
sudo systemctl enable teleport
# sudo iptables -t nat -D PREROUTING {조회한 포워딩 내용 id 번호}
# sudo iptables -t nat -D PREROUTING 2
# sudo iptables -t nat -L --line-numbers
export PROFILE=camping
export SERVICEMESH_PORT=31031
export HEALTHCHECK_PORT=31021
export NETWORK_INTERFACE=ens5
export MINIKUBE_IP=192.168.49.2
minikube profile list
minikube start -p ${PROFILE}
echo "================================"
echo "[INFO] port-forwarding..."
# healthcheck portforwarding
sudo iptables -A PREROUTING -t nat -i ${NETWORK_INTERFACE} -p tcp --dport ${HEALTHCHECK_PORT} -j DNAT --to ${MINIKUBE_IP}:${HEALTHCHECK_PORT}
sudo iptables -A FORWARD -p tcp -d ${MINIKUBE_IP} --dport ${HEALTHCHECK_PORT} -j ACCEPT
# servicemesh portforwarding
sudo iptables -A PREROUTING -t nat -i ${NETWORK_INTERFACE} -p tcp --dport ${SERVICEMESH_PORT} -j DNAT --to ${MINIKUBE_IP}:${SERVICEMESH_PORT}
sudo iptables -A FORWARD -p tcp -d ${MINIKUBE_IP} --dport ${SERVICEMESH_PORT} -j ACCEPT
echo "[INFO] port-forwarding... Done"
# minikube service restart
echo "[INFO] minikube service restart..."
kubectl rollout restart deployments -n istio-system
kubectl rollout restart deployments -n metallb-system
kubectl rollout restart daemonsets -n metallb-system
kubectl rollout restart deployments -n argocd
kubectl rollout restart statefulsets -n argocd
echo "[INFO] minikube service restart... Done"
EOF
cat <<EOF > .down.sh
#!/bin/bash
export PROFILE=camping
minikube stop -p ${PROFILE}
EOF
이렇게 파일을 만들어주고
sudo su
cat <<EOF > /etc/systemd/system/camping.service
[Unit]
Description=minikube start
After=multi-user.target
[Service]
Type=simple
User=ubuntu
Group=sudo
WorkingDirectory=/home/ubuntu
ExecStart=/usr/bin/make up
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable camping.service
reboot
다시 접속하고 다음 명령어를 날리면
sudo systemctl status camping
● camping.service - minikube start
Loaded: loaded (/etc/systemd/system/camping.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-11-18 01:38:42 UTC; 4s ago
Main PID: 1030 (make)
Tasks: 10 (limit: 18714)
Memory: 188.3M
CGroup: /system.slice/camping.service
├─1030 /usr/bin/make up
├─1033 bash ./.start.sh
└─1095 minikube start -p camping
Nov 18 01:38:43 ip-172-31-15-127 make[1064]: | Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Activ>
Nov 18 01:38:43 ip-172-31-15-127 make[1064]: |---------|-----------|---------|--------------|------|---------|---------|-------|------>
Nov 18 01:38:43 ip-172-31-15-127 make[1064]: | camping | docker | docker | 192.168.49.2 | 8443 | v1.31.0 | Stopped | 3 | >
Nov 18 01:38:43 ip-172-31-15-127 make[1064]: |---------|-----------|---------|--------------|------|---------|---------|-------|------>
Nov 18 01:38:43 ip-172-31-15-127 make[1095]: * [camping] minikube v1.34.0 on Ubuntu 20.04
Nov 18 01:38:43 ip-172-31-15-127 make[1095]: - MINIKUBE_IP=192.168.49.2
Nov 18 01:38:44 ip-172-31-15-127 make[1095]: * Using the docker driver based on existing profile
Nov 18 01:38:44 ip-172-31-15-127 make[1095]: * Starting "camping" primary control-plane node in "camping" cluster
Nov 18 01:38:44 ip-172-31-15-127 make[1095]: * Pulling base image v0.0.45 ...
Nov 18 01:38:44 ip-172-31-15-127 make[1095]: * Restarting existing docker container for "camping" ...
다음과 같이 실행되게 된다.