Сегодня решил реализовать в кубере прокси на сервис, который располагается на другом сервере (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
```yamlapiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: velizarov-ext-ingress annotations: cert-manager.io/issuer: letsencrypt-prodspec: 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>