Реестр контейнеров JFrog в Kubernetes возвращает ошибку 404 в конечной точке пользовательского интерфейса
Я развернул реестр контейнеров JFrog в своем кластере Kubernetes, и все работает нормально, но когда я пытаюсь получить к нему доступ через браузер, он перенаправляется на /ui, который возвращает 404, но в журналах ничего не отображается.
Я не использовал диаграмму Helm, так как мне не нужны nginx или Postgres и т. Д., Просто чтобы попробовать.
Мое развертывание таково:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jcr
namespace: <REDACTED>
spec:
replicas: 1
template:
metadata:
labels:
app: jcr
spec:
containers:
- name: jcr
image: docker.bintray.io/jfrog/artifactory-jcr:latest
ports:
- containerPort: 8081
volumeMounts:
- name: jcr-data
mountPath: /jcr-data
volumes:
- name: jcr-data
persistentVolumeClaim:
claimName: jcr-data
securityContext:
fsGroup: 2000
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jcr-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
name: jcr
namespace: <REDACTED>
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: /
prometheus.io/port: '8081'
spec:
selector:
app: jcr
ports:
- port: 80
targetPort: 8081
sessionAffinity: None
type: ClusterIP
---
apiVersion: contour.heptio.com/v1beta1
kind: IngressRoute
metadata:
labels:
app: jcr
name: jcr
namespace: <REDACTED>
spec:
virtualhost:
fqdn: <REDACTED>
tls:
secretName: jcr-live
routes:
- match: /
services:
- name: jcr
port: 80
1 ответ
Похоже, в вашей конфигурации порта отсутствуют некоторые изменения.
Надо порт выставить
8082
вjcr
контейнер, который теперь является основным портом пользовательского интерфейсаКак только порт открыт, вы должны добавить этот порт в свою службу.
Итак, ваш измененный yaml должен выглядеть примерно так (Развертывание и обслуживание):
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jcr
namespace: <REDACTED>
spec:
replicas: 1
template:
metadata:
labels:
app: jcr
spec:
containers:
- name: jcr
image: docker.bintray.io/jfrog/artifactory-jcr:latest
ports:
- containerPort: 8081
- containerPort: 8082
volumeMounts:
- name: jcr-data
mountPath: /jcr-data
volumes:
- name: jcr-data
persistentVolumeClaim:
claimName: jcr-data
securityContext:
fsGroup: 2000
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jcr-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
name: jcr
namespace: <REDACTED>
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: /
prometheus.io/port: '8081'
spec:
selector:
app: jcr
ports:
- port: 80
targetPort: 8082
- port: 8081
targetPort: 8081
sessionAffinity: None
type: ClusterIP
Обратите внимание, что я оставил 8081 открытым, что позволяет при необходимости получить прямой доступ к Artifactory для повышения производительности (Artifactory теперь работает за службой маршрутизатора).
ПРИМЕЧАНИЕ. - Я рекомендую использовать официальную диаграмму JFrog Container Registry Helm, которая значительно упрощает процесс настройки и управления жизненным циклом развертывания JCR.