프로젝트 개요

특정 네트워크 바운드 안에 있는 프로세스 dns 붙여주기

프로젝트 설명

사용자가 특정 가상머신에서 프로세스를 띄웠을 때 배포를 용이하게 하기 위해서 dns를 붙여주는 서비스입니다.

openstack을 활용한 클라우드 서비스에서 학교의 공인 ip(고정ip)에 dns를 붙이고 이의 subdomain을 활용하여 인스턴스에 붙여주는 작업입니다.

우선 학교 공인 ip를 aolda.in에 a레코드로 붙이고 *.aolda.in을 cname레코드로 붙여 모든 서브 도메인이 학교 공인 ip로 오게합니다.

저희 클라우드 서비스는 모두 kubernetes로 관리하고 있습니다. 그리고 컨테이너의 외부 노출은 ingress를 통해 하고 있으므로 nginx ingress controller를 사용합니다. 이를 통해 인스턴스의 floating Ip와 hostname(subdomain)을 연결합니다.

이런식으로 프로세스를 짠 이유는 네임서버를 구축하지 못했기 때문…

apiVersion:
  value: "v1"
kind:
  value: "Endpoints"
metadata:
  name: "newproxy5-external"
  namespace: "heimdall"
subsets:
- addresses:
  - ip: "1.1.1.1"
  ports:
  - port: 3467
---
apiVersion:
  value: "v1"
kind:
  value: "Service"
metadata:
  name: "newproxy5-external"
  namespace: "heimdall"
spec:
  type: "ClusterIP"
  ports:
  - port: 3467
    targetPort: 3467
---
apiVersion:
  value: "networking.k8s.io/v1"
kind:
  value: "Ingress"
metadata:
  name: "newproxy5-ingress"
  namespace: "heimdall"
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "10G"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    kubernetes.io/ingress.class: "nginx"
spec:
  tls:
  - hosts:
    - "newproxy5.aolda.net"
    secretName: "wildcard-overcloud-prod-cert"
  rules:
  - host: "newproxy5.aolda.net"
    http:
      paths:
      - pathType: "Prefix"
        path: "/"
        backend:
          service:
            name: "newproxy5-external"
            port:
              number: 3467

Floating ip를 endpoints object로 선언해준다. 인스턴스는 kubernetes가 관리하는 컨테이너가 아니기 때문 이를 clusterIp에 연결 argocd에서 관리하는 쿠버네티스 클러스터의 ingress yaml파일을 헤임달 프로젝트에서 생성

  1. kubernetes에 바로 ingress.yaml 파일 적용시키기

  2. github에 ingress.yaml파일 올려두면 argocd를 통해 kubernetes 배포

  3. 장점 : 단순하고 yaml 파일이 바로 적용된다. github의 예외 처리를 할 필요가 없다

    단점 : gitops 원칙을 지키지 못한다. argocd에서 관리하지 않는다.