【问题标题】:JFrog Container Registry on Kubernetes returns 404 on UI endpointKubernetes 上的 JFrog Container Registry 在 UI 端点上返回 404
【发布时间】:2020-06-22 07:49:13
【问题描述】:

我已将 JFrog Container Registry 部署到我的 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

【问题讨论】:

    标签: kubernetes artifactory jfrog-container-registry


    【解决方案1】:

    您的端口配置似乎缺少一些更改。

    1. 您需要在jcr 容器中公开端口8082,该容器现在是主要的UI 端口

    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 chart,它极大地简化了配置和管理 JCR 部署生命周期的过程。

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 2020-07-16
      • 2020-02-18
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 2020-12-23
      • 1970-01-01
      相关资源
      最近更新 更多