我正在尝试将 Python-Arango library 连接到应用程序。我已经使用此教程在 Kubernetes 节点上设置了 ArangoDB。我的集群 yaml 文件是这样的:
---
apiVersion: "database.arangodb.com/v1alpha"
kind: "ArangoDeployment"
metadata:
name: "arango-cluster"
spec:
mode: Cluster
image: arangodb/arangodb:3.7.6
tls:
caSecretName: arango-cluster-ca
agents:
storageClassName: my-local-storage
resources:
requests:
storage: 2Gi
dbservers:
storageClassName: my-local-storage
resources:
requests:
storage: 17Gi
externalAccess:
type: NodePort
nodePort: 31200
安装似乎没问题,因为我可以通过 Arango shell 访问 Web UI。但是,当我使用 python-arango 库将应用程序连接到数据库时,我收到与证书相关的错误:
Max retries exceeded with url: /_db/testDB/_api/document/demo/10010605 (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))
在执行
kubectl get secrets
时,我看到了 arango-cluster-ca
,我在上面的 YAML 文件中明确提到了这一点。我还在python代码中将验证标志设置为False,如下
db = client.db(name='testDB', verify=False, username='root', password='')
然而,它并没有像预期那样绕过验证。
我想了解我可能错过了什么 - 无论是在设置过程中还是在 Python 调用中 - 这都不允许我绕过此 SSL 证书错误问题,或者是否可以设置证书。我尝试了这个 Arango tutorial 来设置证书,但它没有给我成功。
谢谢。
我能想到的唯一解决方法是选择不安全的路线。 我将该字段设置为
arango-cluster-ca
,而不是 arango 集群配置文件的 spec.tls.caSecretName
字段中的 None
。它允许我毫无问题地连接 http。
仍然想知道是否有一些解决方法可以通过 https 连接它,所以我仍然愿意接受答案,否则我会关闭它。
刚刚找到了使用一些未记录的开关的解决方法:
arango_client = ArangoClient(hosts=ARANGO_DB_URL, verify_override=False)
clients.shared_arango_db = arango_client.db(ARANGO_DB_NAME, username=ARANGO_DB_USER, password=ARANGO_DB_PASSWORD, verify_certificate=False)