반응형
클러스터 내에 pod에 어떤 API가 있을 때 이 API를 사용하기 위해서는 IP 주소를 알아야 한다.
service를 deploy할 때 로드밸런서로 설정하면 외부에서도 이 pod에 IP로 접근이 가능하다.
만약 클러스터 IP로 설정되어 있는 경우, 외부에서 접근이 어렵다.
쿠버네티스 포트 포워딩을 하면 내 로컬 포트와 pod 포트에 연결할 수 있다.
(kubectl 명령어는 기본적으로 .kube 폴더에 있는 config 파일에 있는 클러스터로 접속된다.)
8080:80 - 내 로컬 8080포트와 pod 80포트를 연결한다는 뜻. 맞게 변경 할 것.
# 서비스명으로 하든지
kubectl port-forward svc/[서비스명] 8080:80 -n [namespace]
# pod명으로 하든지
kubectl port-forward pod/[pod명] 8080:80 -n [namespace]
터미널에서 위 명령어를 치고 새 터미널을 열어서 파이썬을 실행하면 api를 쓸 수 있다.
url : http://localhost:8080/api주소
이렇게 됨. 원래는 localhost 자리에 api가 있는 pod의 외부 ip를 넣어야 함.
간단한 예시임.
url에 api를 호출하기 위한 경로를 적어야 하는데 IP를 적는 부분에 외부에서 접근 가능한 IP가 아닐 경우 접속이 안됨.
이 경우 쿠버네티스 포트 포워딩으로 내 로컬 8080와 pod 80포트를 연결함.
headers가 없는 경우 다 뺄 것
import requests
def get_data(url):
# headers = { 'key': "value" }
# response = requests.get(url, headers=headers)
response = requests.get(url)
if response.status_code == 200:
return response.json() # JSON 데이터를 파이썬 객체로 변환
else:
return None
def main():
# api가 있는 클러스터 pod 외부 ip
# external_ip = "123.123.123.123"
# port_forward 적용
external_ip = "localhost:8080"
# api를 호출하려는 url
api_url = f"http://{external_ip}/path/to/api"
# 함수 호출하여 결과 출력
data = get_data(api_url)
if data is not None:
print(data)
else:
print("API 요청 실패")
if __name__ == "__main__":
main()
반응형
'배운 내용 > Kubernetes' 카테고리의 다른 글
[crossplane] 이미 생성된 리소스 observe하기 (0) | 2024.05.16 |
---|---|
[crossplane] vpc, subnet 만들기 (0) | 2024.05.16 |
[crossplane] 모든 MetaResource 확인하기 (0) | 2024.05.16 |
파이썬에서 configmap json으로 읽기 (0) | 2024.04.19 |
Unable to connect to the server: dial tcp 192.168.49.2:8443: connect: no route to host (0) | 2023.04.12 |