Реестр контейнеров 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 ответ

Похоже, в вашей конфигурации порта отсутствуют некоторые изменения.

  1. Надо порт выставить 8082 в jcr контейнер, который теперь является основным портом пользовательского интерфейса

  2. Как только порт открыт, вы должны добавить этот порт в свою службу.

Итак, ваш измененный 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.

Другие вопросы по тегам