cheoro
cheoro

Reputation: 11

artifactory docker push error unknown: Method Not Allowed

we are using artifactory pro license and installed artifactory through helm on kubernetes.

when we create a docker local repo(The Repository Path Method) and push docker image,

we get 405 method not allowed errror. (docker login/ pull is working normally.)

########## error msg

# docker push art2.bee0dev.lge.com/docker-local/hello-world

e07ee1baac5f: Pushing [==================================================>]  14.85kB 

unknown: Method Not Allowed 

##########

we are using haproxy load balancer that is used for TLS, in front of Nginx Ingress Controller.

(nginx ingress controller's http nodeport is 31071)

please help us how can we solve the problem.

The artifactory and haproxy settings are as follows.

########## value.yaml
global:  
  joinKeySecretName: "artbee-stg-joinkey-secret"
  masterKeySecretName: "artbee-stg-masterkey-secret"
  storageClass: "sa-stg-netapp8300-bee-blk-nonretain"  

ingress:
  enabled: true
  defaultBackend:
    enabled: false
  hosts: ["art2.bee0dev.lge.com"]
  routerPath: /
  artifactoryPath: /artifactory/
  className: ""
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_pass_header   Server;
      proxy_set_header    X-JFrog-Override-Base-Url https://art2.bee0dev.lge.com;
  
  labels: {}
  tls: []
  additionalRules: []

 ## Artifactory license.
artifactory:
  name: artifactory
  replicaCount: 1
  image:
    registry: releases-docker.jfrog.io
    repository: jfrog/artifactory-pro
    # tag:
    pullPolicy: IfNotPresent
  labels: {}
  updateStrategy:
    type: RollingUpdate

  migration:
    enabled: false
  
 
  customInitContainersBegin: |
   - name: "init-mount-permission-setup"
     image: "{{ .Values.initContainerImage }}"
     imagePullPolicy: "{{ .Values.artifactory.image.pullPolicy }}"
     securityContext:
       runAsUser: 0
       runAsGroup: 0
       allowPrivilegeEscalation: false
       capabilities:
         drop:
           - NET_RAW
     command:
       - 'bash'
       - '-c'
       - if [ $(ls -la /var/opt/jfrog | grep artifactory | awk -F' ' '{print $3$4}') == 'rootroot' ]; then
             echo "mount permission=> root:root";
             echo "change mount permission to 1030:1030 " {{ .Values.artifactory.persistence.mountPath }};
             chown -R 1030:1030 {{ .Values.artifactory.persistence.mountPath }};
         else 
             echo "already set. No change required.";
             ls -la {{ .Values.artifactory.persistence.mountPath }};
         fi
     volumeMounts:
       - mountPath: "{{ .Values.artifactory.persistence.mountPath }}"
         name: artifactory-volume
  
  database:
    maxOpenConnections: 80
  tomcat:
    maintenanceConnector:
      port: 8091
    connector:
      maxThreads: 200
      sendReasonPhrase: false
      extraConfig: 'acceptCount="100"'

   customPersistentVolumeClaim: {}
 
  license:
    ## licenseKey is the license key in plain text. Use either this or the license.secret setting
    licenseKey: "???"
    secret:
    dataKey:

  resources:
    requests:
      memory: "2Gi"
      cpu: "1"
    limits:
      memory: "20Gi"
      cpu: "8"
  javaOpts:
    xms: "1g"
    xmx: "12g"

  admin:
    ip: "127.0.0.1"
    username: "admin"
    password: "!swiit123"
    secret:
    dataKey:

  service:
    name: artifactory
    type: ClusterIP
    loadBalancerSourceRanges: []
    annotations: {}

  persistence:
    mountPath: "/var/opt/jfrog/artifactory"
    enabled: true

    accessMode: ReadWriteOnce
    size: 100Gi

    type: file-system
    storageClassName: "sa-stg-netapp8300-bee-blk-nonretain"

nginx:
  enabled: false
##########

########## haproxy config
frontend cto-stage-http-frontend
    bind 10.185.60.75:80
    bind 10.185.60.76:80
    bind 10.185.60.201:80
    bind 10.185.60.75:443 ssl crt /etc/haproxy/ssl/bee0dev.lge.com.pem ssl-min-ver TLSv1.2 ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
    bind 10.185.60.76:443 ssl crt /etc/haproxy/ssl/bee0dev.lge.com.pem ssl-min-ver TLSv1.2 ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
    bind 10.185.60.201:443 ssl crt /etc/haproxy/ssl/bee0dev.lge.com.pem ssl-min-ver TLSv1.2 ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
    mode http
    option forwardfor
    option accept-invalid-http-request    
    acl k8s-cto-stage hdr_end(host) -i -f /etc/haproxy/web-ide/cto-stage
    use_backend k8s-cto-stage-http if k8s-cto-stage

backend k8s-cto-stage-http
    mode http
    redirect scheme https if !{ ssl_fc }
    option tcp-check
    balance roundrobin
    server lgestgbee04v 10.185.60.78:31071 check fall 3 rise 2
##########

Upvotes: 1

Views: 624

Answers (1)

Yuvarajan
Yuvarajan

Reputation: 470

The request doesn't seem to be landing at the correct endpoint. Please remove the semi-colon from the docker command and retry again.

docker push art2.bee0dev.lge.com;/docker-local/hello-world

Try executing it like below,

docker push art2.bee0dev.lge.com/docker-local/hello-world

Upvotes: 0

Related Questions