woonizzooni

kubernetes - NGINX MEDIA SERVER 구동하기 본문

Kubernetes

kubernetes - NGINX MEDIA SERVER 구동하기

woonizzooni 2020. 11. 8. 19:36

 

관련글

    "Docker - NGINX MEDIA SERVER 만들기"

 

nginx-media-server : RTMP push스트림을 받아 RTMP/HLS/DASH 서빙.

    github.com/woonizzooni/nginx-media-server

 

위 주소에 생성해놓은 스펙을 그대로 이용하는 것으로 설명함.

 

 

  • Namespace 생성
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ms

 

 

  • Service 생성 :
    - 여기가 조금 애매한데, Endpoint가 여러개일 경우 로드 밸런싱되니 직접 붙어 재생하는 것은 거의 불가능
    - Endpoint가 여러 개일 경우 워크로드(Deployment)를 Origin으로 하고,
      그 뒤에 Edge를 구성해서 Edge를 통해 스트리밍 되어야 하겠음. 
kind: Service
metadata:
  name: nginx-ms
  namespace: nginx-ms
spec:
  selector:
    app: nginx-ms
  ports:
    - protocol: TCP
      name: rtmp
      port: 1935
      targetPort: 1935
    - protocol: TCP
      name: http
      port: 8080
      targetPort: 8080
  type: LoadBalancer

 

 

  • Deployment 생성
    - 일단 replicas를 1로 해서 노출된 Service를 통해 스트림 송/수신이 되도록 의도(?) 했음.
    - 혹시 모를 2개 이상의 수 변경을 고려해서 podAntiAffinity설정을 해놨는데, 빼고 싶으면 빼도 됨.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ms
  namespace: nginx-ms
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-ms
  template:
    metadata:
      labels:
        app: nginx-ms
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: nginx-ms
                operator: In
                values:
                - nginx-ms
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: nginx-ms
        image: woonizzooni/nginx-media-server:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 1935
        - containerPort: 8080
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 10
        livenessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 10
      dnsConfig:
        options:
          - name: ndots
            value: "1"

 

Comments