Examples: query, "exact match", wildcard*, wild?ard, wild*rd
Fuzzy search: cake~ (finds cakes, bake)
Term boost: "red velvet"^4, chocolate^2
Field grouping: tags:(+work -"fun-stuff")
Escaping: Escape characters +-&|!(){}[]^"~*?:\ with \, e.g. \+
Range search: properties.timestamp:[1587729413488 TO *] (inclusive), properties.title:{A TO Z}(excluding A and Z)
Combinations: chocolate AND vanilla, chocolate OR vanilla, (chocolate OR vanilla) NOT "vanilla pudding"
Field search: properties.title:"The Title" AND text
Answered
Hello, I Wanted To Test Out Clearml And Installed The 7.14.2 Helm Chart. The Deployment Looks Ok. I Can Access The Webui And Create Workspace Api Credentials. What I Can’T Do Is.

Hello,

I wanted to test out clearml and installed the 7.14.2 helm chart.

The deployment looks ok. I can access the webui and create workspace API credentials.

What I can’t do is.

  • Register Minio storage credentials
192.168.70.50 - - [17/Feb/2025:14:42:58 +0000] "POST /api/v2.31/storage.set_settings HTTP/2.0" 400 411 "
" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" 1065 0.005 [clearml-clearml-webserver-8080] ] 172.16.254.58:80 411 0.005 400 99ca34c97f23f0ea2ec44f02649d3901
  1. Run hello world jupyter notebok
pip install clearml
%env CLEARML_WEB_HOST=

%env CLEARML_API_HOST=

%env CLEARML_API_ACCESS_KEY=FUNTEUQGUT38FUQSH1960CUCEZ2WLS
%env CLEARML_API_SECRET_KEY=X9nrVUDXqL1KbZY7fh85qjgne1wkpsS4z4daw4481nysbxA6YpjvnkLYulmw
from clearml import Task 
task = Task.init(project_name="my project", task_name="my task") 

as I’m getting

TBD - Jupyter is acting up atm but I'll update the errors later. They're also network related.

My ingress controller looks ike

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: clearml-ingress
  namespace: clearml
  annotations:
    kubernetes.io/spec.ingressClassName.class: "nginx"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    #nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  tls:
    - hosts:
      - api-clearml.domain.duckdns.org
      secretName: clearml-wildcard-domain-duckdns-secret
    - hosts:
      - files-clearml.domain.duckdns.org
      secretName: clearml-wildcard-domain-duckdns-secret
    - hosts:
      - web-clearml.domain.duckdns.org
      secretName: clearml-wildcard-domain-duckdns-secret            
  rules:
  - host: api-clearml.domain.duckdns.org
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service: 
            name: clearml-apiserver
            port:
              number: 8008
  - host: files-clearml.domain.duckdns.org
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service: 
            name: clearml-fileserver
            port:
              number: 8081
  - host: web-clearml.domain.duckdns.org
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service: 
            name: clearml-webserver
            port:
              number: 8080                            
  ingressClassName: nginx

ArgoCD application looks like

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: clearml
  namespace: argocd
  finalizers:
  - resources-finalizer.argocd.argoproj.io/foreground
spec:
  destination:
    namespace: clearml
    server: 

  project: default
  sources:
    - repoURL: '
'
      targetRevision: 7.14.2
      chart: clearml
      helm:
        skipCrds: true
        values: |
          apiserver:
            service:
              type: ClusterIP
          fileserver:
            service:
              type: ClusterIP
            storage:
              data:
                class: longhorn
                size: 5Gi
          webserver:
            service:
              type: ClusterIP
          redis:
            architecture: replication
            master:
              persistence:
                enabled: true
                accessModes:
                  - ReadWriteOnce
                size: 5Gi
                storageClass: longhorn
            replica:
              replicaCount: 1
          mongodb:
            enabled: true
            architecture: replicaset
            replicaCount: 1
            arbiter:
              enabled: false
            pdb:
              create: true
            podAntiAffinityPreset: soft
            persistence:
              size: 5Gi
              storageClass: longhorn
          elasticsearch:
            replicas: 1
            volumeClaimTemplate:
              storageClassName: longhorn
              resources:
                requests:
                  storage: 5Gi     
    - repoURL: git@github.com:domain/k8s-playbooks.git
      path: clearml/overlays/domain.duckdns.org
      targetRevision: HEAD

I am able to curl the api endpoint and get a token using API credentials

curl -u "FUNTEUQGUT38FUQSH1960CUCEZ2WLS:X9nrVUDXqL1KbZY7fh85qjgne1wkpsS4z4daGhwPa7Qw4481nysbxA6YpjvnkLYulmw" -X GET 

{"meta":{"id":"503eb8be154d47a39838972a9133b420","trx":"503eb8be154d47a39838972a9133b420","endpoint":{"name":"auth.login","requested_version":"2.31","actual_version":"1.0"},"result_code":200,"result_subcode":0,"result_msg":"OK","error_stack":"","error_data":{}},"data":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3Mzk4MDQxNjksImV4cCI6MTc0MjM5NjE2OSwiYXV0aF90eXBlIjoiQmVhcmVyIiwiZW52IjoiPHVua25vd24-IiwiaWRlbnRpdHkiOnsidXNlciI6IjQ3NjY3ODAxYTM3NTRiMjZiODk3OGUzMDE3Mjc0MjAxIiwicm9sZSI6InVzZXIiLCJjb21wYW55X25hbWUiOiJjbGVhcm1sIiwiY29tcGFueSI6ImQxYmQ5MmEzYjAzOTQwMGNiYWZjNjBhN2E1YjFlNTJiIiwidXNlcl9uYW1lIjoiTWFydGluIn0sInNlc3Npb25faWQiOiI3YzVjNWY5YWIzYjE0OWY2YTk0MmNiN2YyNTg2MTA1YiIsImFwaV92ZXJzaW9uIjoiMi4zMSIsInNlcnZlcl92ZXJzaW9uIjoiMi4wLjAiLCJzZXJ2ZXJfYnVpbGQiOiI2MTMiLCJmZWF0dXJlX3NldCI6ImJhc2ljIn0.Tg4prT8MARdEvkbVr-vmnD_poki5oF-ruCT-P4aPdIg"}}%
  
  
Posted one month ago
Votes Newest

Answers 19


Hi CostlyOstrich36

Thanks for looking at this.

  • Pasted the body below
{
	"aws": {
		"key": "emEijEB2wZtj1rgaUN3y",
		"secret": "oTxr3w3nlygv85oULOBWkaJi6Zj41OFBLB1e1m0L",
		"region": "",
		"token": "",
		"use_credentials_chain": false,
		"buckets": [{
			"bucket": "clearml",
			"host": "
",
			"key": "emEijEB2wZtj1rgaUN3y",
			"secret": "oTxr3w3nlygv85oULOBWkaJi6Zj41OFBLB1e1m0L",
			"token": "",
			"secure": false,
			"region": "",
			"verify": null,
			"use_credentials_chain": false
		}]
	},
	"google": {
		"project": null,
		"credentials_json": {},
		"buckets": []
	},
	"azure": {
		"containers": []
	}
}

I noticed I got this response

{
    "meta": {
        "id": "a2abdf8724014e01bf8ecd3a98887082",
        "trx": "a2abdf8724014e01bf8ecd3a98887082",
        "endpoint": {
            "name": "storage.set_settings",
            "requested_version": "2.31",
            "actual_version": "1.0"
        },
        "result_code": 400,
        "result_subcode": 12,
        "result_msg": "Validation error (error for field 'google': error for field 'credentials_json': ('value is wrong, expected type \"str\"', {})..)",
        "error_stack": null,
        "error_data": {}
    },
    "data": {}
}

I’m not setting google credentials so idk why this would be part of the error

I think I found it.

The google credentials were “set” out of the box but had an empty Object {}. I removed the object and saved and the save was succesful.

I was then able to add my minio credentials and save them as well.

Should I make a bug report for this?

  1. I managed to recreate it.
#In my jupyter notebook

%pip install clearml --upgrade pip

from clearml import Task, Logger

%env CLEARML_WEB_HOST=

%env CLEARML_API_HOST=

%env CLEARML_FILES_HOST=

%env CLEARML_API_ACCESS_KEY=GZBUVZYG1YHU6QSPMM3PI19EZB51ZY"
%env CLEARML_API_SECRET_KEY=MlirsAtDI_V4_OdzGFk5aB8-Z8ivLV3bZfcLzMzZD6oYSt503Lbmg0HHJDFJW9PGMuE

task = Task.init(project_name='Test', task_name='test')

I get a timeout error

etrying (Retry(total=239, connect=239, read=240, redirect=240, status=240)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7a91cd5add30>, 'Connection to api-clearml.domain.duckdns.org timed out. (connect timeout=3.0)')': /auth.login

I’m wondering if this is because the url is a local dns set in my unify router and jupyter runs inside the cluster and is trying to resolve it locally?

  
  
Posted one month ago

Also. Can I skip setting the bucket name in the UI as it’s part of the URL?

  
  
Posted one month ago

I also couldn’t see any example credentials in the documentation but the bucket is not public so should I assume that credentials will be used if set?

  
  
Posted one month ago

URL is now None

  
  
Posted one month ago

It’s running behind an ingress so the port is there.

  
  
Posted one month ago

Thanks for checking though 🙂

  
  
Posted one month ago

Oh. I see what you mean now.

“To force usage of a non-AWS endpoint, port declaration is always needed (e.g. host: "my-minio-host:9000" ), even for standard ports like 433 for HTTPS (e.g. host: "my-minio-host:433" ).”

  
  
Posted one month ago

Spun up a jupyterlab locally and was able to connect with clearml. This is obviously a problem with networking on my k8s cluster.

  
  
Posted one month ago

Looks like a network issue.

As a side note, I would suggest removing & revoking all credentials you've pasted here 🙂

  
  
Posted one month ago

minio creds, server creds, someone with ill intentions could have accessed your cluster by now

  
  
Posted one month ago

It’s a homelab k8s cluster that I tear down for laughs and giggles 🙂

  
  
Posted one month ago

No problem. This is all very ephemeral and will die imminently.

  
  
Posted one month ago

                    # This will apply to all buckets in this host (unless key/value is specifically provided for a given bucket)
                    host: "my-minio-host:9000"

You need to add the port for minio

  
  
Posted one month ago

Just to make sure the domain is available I did

jovyan@hub-54bbb78ff4-bphnj:/srv/jupyterhub$ dig api-clearml.domain.duckdns.org

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> api-clearml.domain.duckdns.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1149
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 3ac65d14c9554b0f (echoed)
;; QUESTION SECTION:
;api-clearml.domain.duckdns.org.	IN	A

;; ANSWER SECTION:
api-clearml.domain.duckdns.org.	5 IN	A	192.168.70.20

;; Query time: 3 msec
;; SERVER: 10.96.0.10#53(10.96.0.10) (UDP)
;; WHEN: Mon Feb 17 20:29:43 UTC 2025
;; MSG SIZE  rcvd: 117
  
  
Posted one month ago

Fair enough 🙂
BTW I noticed that your minio access is misconfigured, check here for the proper syntax - None

  
  
Posted one month ago

Is there a way to test if the connection is working?

  
  
Posted one month ago

Hi PerfectSeaurchin36 , on your points:

  • what was the body of the API call, you got 400 so it looks like the body was incorrect
  • Not sure what the issue is
    Not exactly sure I understand what the issue is, can you please elaborate?
  
  
Posted one month ago

I also tried

Task.set_credentials(
     api_host="
",
     web_host="
",
     files_host="
",
     key='E5BYXIM0JXX5N9MRZSHEE2ACKXPTY2',
     secret='govErSIYdtu-67EBGVPhriMOOB0QCT_OZ_B2073rGjYO14uYP802dMuOk1_oVV4STxY'
)

Same result

  
  
Posted one month ago

Highly unlikely as those are all local dns records. 🙂

  
  
Posted one month ago