[ 1. 자동차 길찾기 API 및 다중 경유지 API]
REQ
- origin
- destination
- waypoints (
127.111202,37.394912,name=판교역 | 127.112275,37.39281
) : 5개 미만 / 30개 미만
- priority (RECOMMEND / TIME / DISTANCE)
- alternatives(대안경로) : true/false
- road_details : true/false
- roadevent : 0 (통제 반영)
- summary : true/false 보통의 정보는 summary가 false여야 제공
RES
- routes
- resultcode
- 0 : 성공
- traffic_state
- 1 : 교통 정체
- 2 : 교통 지체
- 4: 원활
- 6 : 통행 불가
- resultcode
[ 2. 다중 경유지 길찾기 api ]
- 초기 설정 데이터를 포함하는 드라이브
- 이 안에는 사용자 계정, 호스트명, 네트워크 설정, SSH 키 등이 들어 있는
meta-data
,user-data
,network-config
파일이 포함
- 이 안에는 사용자 계정, 호스트명, 네트워크 설정, SSH 키 등이 들어 있는
- OS 부팅 후 cloud-init이 해당 드라이브를 탐색하여 설정을 적용
따라서 cloud init을 이용하기 위해서는
- Ubuntu 공식 cloud-image qcow2 이미지를 다운받아 사용하거나, (권장 방법)
- cloud init drive에 일반 drive의 iso파일을 이용하여 ubuntu 설치 (현재 방법)👉cloud init drive 생성 및 일반 drive에 iso 파일 추가
→ 부팅 순서 조정을 통해 일반 drive의 iso 실행
→ iso파일을 이용해서 cloud init drive에 ubuntu 설치
→ 일반 drive 제거
- cloud-init : VM이 설치된 이후, 실행되는 스크립트 설정 (⇒ 템플릿 마다 자동 설정 부여)
- qemu-agent : 호스트 시스템과 VM을 연결해주는 데몬
[ 2. VM을 cloud 환경으로 : Provision ]
⇒ 외부(Terraform?)에서 RKE2를 활용한 프로비져닝이 자동화
- Proxmox REST API를 사용해서, VM템플릿을 활용 1개의 마스터, 3개의 워커 노드 생성 = ubuntu설치 + cloud-init 설치 및 메타데이터 실행
- cloud-init에서
rke2_role = "server”
와 같이 서로 다른 롤을 부여해서, RKE2-server / RKE2-agent 생성
- 각 노드를 rancher를 사용해서 연결하는 것(master-worker) 까지 자동으로
👉
- PROXMOX REST API : 탬플릿을 이용하여 VM 생성을 API로
- cloud-init : ROLE(master/worker)에 따른 설정 부여 + 각 RKE 연결 까지
- cloud-init : ROLE(master/worker)에 따른 설정 부여 + 각 RKE 연결 까지
[ 3. HTTP traffic을 어떻게 처리하나? : Networking ]
- 외부 사용자가 브라우저 접속 : https://main.test.com
- 라우터가 요청을 Nginx Proxy Manager에게 전달
⇒ DNS를 통해 https://test.com 주소가 192.168.0.100(Nginx Proxy Manager IP)로
- Nginx Proxy 규칙에 따라, main. 은 proxy_pass http://192.168.0.240:80으로 전달 (내부망 IP)
- Nginx Proxy Manager는 https://main.test.com/hello로 요청을 받아서 그대로 http://192.168.0.240:80/hello로 대신 전달(proxy)
- 여기서 192.168.0.240:80이 IP가 metalLB를 통해서 로드밸런서 서비스에 부여한 가상 L2 IP
- MetalLB에서 192.168.0.240가 할당된 특정 노드 A를 찾아 연결 172.30.0.1
- kube-proxy가 K8s 서비스 ClusterIP(172.30.0.1)를 → 선택된 pod(172.30.3.5:8080)로 라우팅
역할 정리
👉
- Nginx Proxy Manager : 받은 HTTPS 요청을 URL 라우팅 및 SSL 설정 등을 한 후, 전달
⇒ 전달 IP : MetalLB로 만든 가상 L2 IP
- MetalLB : 내부망의 특정 노드와 연결되는 외부 IP를 제공
⇒ 전달 IP : 노드 A의 클러스터 IP
- K8s : kube-proxy를 통한 클러스터 IP 요청을 실제 Pod로 연결
⇒ 전달 IP : Pod
⇒ 전달 IP : MetalLB로 만든 가상 L2 IP
- MetalLB : 내부망의 특정 노드와 연결되는 외부 IP를 제공
⇒ 전달 IP : 노드 A의 클러스터 IP
- K8s : kube-proxy를 통한 클러스터 IP 요청을 실제 Pod로 연결
⇒ 전달 IP : Pod
공부했지만 못적은 것들 (후에 RKE-etcd 묶고, metalLB ingress 부분 묶고, 설치해서 실행 되는거 까지 해보기)
클러스터안에 설치되는 프로그램들
RKE
https://velog.io/@gojol_devops/Kubernetes-RKE1-vs-RKE2
etcd
https://tech.kakao.com/posts/484
metal LB vs Ingress
https://lordofkangs.tistory.com/566
- 초기 설정 데이터를 포함하는 드라이브
/dev/sr0
,/dev/sr1
같은 CD-ROM으로 마운트됨.
- 이 안에는 사용자 계정, 호스트명, 네트워크 설정, SSH 키 등이 들어 있는
meta-data
,user-data
,network-config
파일이 포함됩니다.
- OS 부팅 후 cloud-init이 해당 드라이브를 탐색하여 설정을 적용