Pod를 외부와 연결시켜주는 오브젝트
포트를 외부로 노출해 사용자들이 접근하거나, 다른 디플로이먼트의 포드들이 내부적으로 접근이 필요한 경우 생성
서비스 구성시 파드 고유 IP가 변경되더라도 호출 IP는 변경되지 않음
apiVersion: v1
kind: Service
metadata:
name: {{PN}}-svc # 서비스명
namespace: {{NS}}
spec:
type: ClusterIP | NodePort | LoadBalancer
selector: # 어떤 라벨을 갖는 포드에 접근할 수 있게 만들 것인지 결정
app: {{PN}}-pod # metadata.labels.app와 동일한 Pod
ports:
- name: web-port
# - protocol: TCP
port: {{PORT}} # 쿠버네티스 내부에서만 사용할 수 있는 고유한 IP
targetPort: {{POD-PORT}} # 연결하고 싶은 Pod의 포트
# nodePort : {{NODE-PORT}} NodePort인 경우 30000-32767
$ kubectl apply -f hostname-svc-clusterip.yaml
$ kubectl get services
$ kubectl get svc # services
$ kubectl delete svc hostname-svc-clusterip
$ kubectl delete -f hostname-svc-clusterip.yaml
# 서버에 접속한 뒤
$ curl {ClusterIP}:{PORT} --silent
$ curl {{{PN}}-svc}:{PORT} --silent
참고 :
https://hungc.tistory.com/187
https://velog.io/@rhee519/deployment-service-ingress
yaml문법 참고 : https://subicura.com/k8s/prepare/yaml.html#%E1%84%80%E1%85%B5%E1%84%87%E1%85%A9%E1%86%AB%E1%84%86%E1%85%AE%E1%86%AB%E1%84%87%E1%85%A5%E1%86%B8