Создаем Ingress для внешних сервисов

Сегодня решил реализовать в кубере прокси на сервис, который располагается на другом сервере (git, registry). Так как вопрос работы с Persistent Volume еще для меня полностью не решенный, то я отложил их переезд в кубер, но вот мне очень понравилось, что в кубере можно очень просто создавать сертификаты.

В итоге нашел такое решение:

  • создаем сервис типа ExternalName и указанным IP адресом
  • создаем Ingress с маппингом между доменом и конкретным сервисом.

services.yaml

 

```yaml
apiVersion: v1
kind: Service
metadata:
  name: git-service
spec:
  type: ExternalName
  externalName: 10.134.67.7
  selector:
    app: git
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000
      name: git
---
apiVersion: v1
kind: Service
metadata:
  name: registry-ui-service
spec:
  type: ExternalName
  externalName: 10.134.67.7
  selector:
    app: registry-ui
  ports:
    - protocol: TCP
      port: 8180
      targetPort: 8180
      name: registry-ui
---
apiVersion: v1
kind: Service
metadata:
  name: registry-service
spec:
  type: ExternalName
  externalName: 10.134.67.7
  selector:
    app: registry
  ports:
    - protocol: TCP
      port: 8181
      targetPort: 8181
      name: registry
```

ingress.yaml

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: velizarov-ext-ingress
  annotations:
    cert-manager.io/issuer: letsencrypt-prod
spec:
  tls:
  - hosts:
    - git.velizarov.ru
    - registry-ui.velizarov.ru
    - registry.velizarov.ru
    secretName: velizarov-ext-tls-secret
  rules:
  - host: git.velizarov.ru
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: git-service
            port:
              name: git
  - host: registry-ui.velizarov.ru
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: registry-ui-service
            port:
              name: registry-ui
  - host: registry.velizarov.ru
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: registry-service
            port:
              name: registry
```

Применяем конфигурацию в Kubernetes

kubectl apply -f services.yaml -n <namespace>

kubectl apply -f ingress.yaml -n <namespace>

 

Телеграм
Присоединяйтесь к моему Телеграм-каналу!

Рекомендации по теме