Реестр контейнеров JFrog в Kubernetes возвращает 404 в конечной точке пользовательского интерфейса - PullRequest
0 голосов
/ 10 марта 2020

Я развернул JFrog Container Registry в моем кластере Kubernetes, и все это нормально, но когда я пытаюсь получить к нему доступ через браузер, он перенаправляет на / ui, который возвращает 404, но в журналах ничего не отображается.

Я не использовал диаграмму Шлема, так как мне не нужны nginx или Postgres et c только для ее проверки.

Мое развертывание таково:

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 голос
/ 10 марта 2020

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

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

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

Таким образом, ваш пересмотренный yaml должен выглядеть примерно так (Deployment and Service):

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.

...