Kuernetes Ingress
쿠버네티스에서 Ingress는 클러스터 외부에서 클러스터 내부의 서비스로 HTTP 및 HTTPS 경로를 노출하는 역할을 합니다. 이는 트래픽 라우팅을 제어하며, 이는 Ingress 리소스에 정의된 규칙에 의해 이루어집니다.
다음은 각 YAML 파일에 대한 설명입니다.
myapp-rs.yaml
이 YAML 파일은 쿠버네티스의 ReplicaSet을 정의합니다. ReplicaSet은 동일한 파드의 복사본을 여러 개 유지하도록 보장합니다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-rs
spec:
replicas: 3
selector:
matchLabels:
app: myapp-rs
template:
metadata:
labels:
app: myapp-rs
spec:
containers:
- name: myapp
image: ghcr.io/c1t1d0s7/go-myweb:alpine
ports:
- containerPort: 8080
myapp-svc-np.yaml
이 YAML 파일은 노드 포트를 사용하는 서비스를 정의합니다. 노드 포트는 클러스터의 모든 노드에서 동일한 포트를 통해 서비스에 접근할 수 있도록 합니다.
apiVersion: v1
kind: Service
metadata:
name: myapp-svc-np
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
nodePort: 31111
selector:
app: myapp-rs
myapp-ing.yaml
이 YAML 파일은 Ingress를 정의합니다. Ingress는 클러스터 외부에서 클러스터 내부의 서비스로 HTTP 및 HTTPS 경로를 노출합니다. 이 Ingress는 myapp.example.com
이라는 호스트에 대한 규칙을 가지고 있습니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ing
spec:
defaultBackend:
service:
name: myapp-svc-np
port:
number: 80
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-svc-np
port:
number: 80
myapp-ing-multi-hosts.yaml
이 YAML 파일은 여러 호스트를 가진 Ingress를 정의합니다. 각 호스트는 자체 경로와 백엔드 서비스를 가집니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ing-mhost
spec:
defaultBackend:
service:
name: myapp-svc-np
port:
number: 80
rules:
- host: web1.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-svc-ext-np1
port:
number: 80
- host: web2.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-svc-ext-np2
port:
number: 80
myapp-ing-multi-paths.yaml
이 YAML 파일은 여러 경로를 가진 Ingress를 정의합니다. 각 경로는 자체 백엔드 서비스를 가집니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ing-mpath
spec:
defaultBackend:
service:
name: myapp-svc-np
port:
number: 80
rules:
- host: myapp.example.com
http:
paths:
- path: /web1
pathType: Prefix
backend:
service:
name: myapp-svc-ext-np1
port:
number: 80
- path: /web2
pathType: Prefix
backend:
service:
name: myapp-svc-ext-np2
port:
number: 80
이러한 YAML 파일들은 쿠버네티스 클러스터 내에서 서비스를 생성하고 관리하는 데 사용됩니다. 이들 각각은 특정 목적을 가지고 있으며, 그 목적은 파드의 배포, 서비스의 라우팅, 외부 클라이언트의 접근 등 다양합니다. 이러한 설정들은 애플리케이션의 가용성과 확장성을 높이는 데 도움이 됩니다.
'Infra > Kubernetes' 카테고리의 다른 글
쿠버네티스 03-05 Network_Headless_Service (0) | 2023.09.06 |
---|---|
쿠버네티스 03-04 Network_Readiness_Probe (0) | 2023.09.06 |
쿠버네티스 03-02 Network_External_Service (0) | 2023.09.06 |
쿠버네티스 03-01 Network_Internal_Service (0) | 2023.09.06 |
쿠버네티스 02-05 Controller_Cronjob (0) | 2023.09.06 |