jaeger-operator: Unable to connect to the ES when using K8s secrets

HI,

I have setup the ES cleaner cronjob for an externally hosted Elastic search cluster, and i am trying to use secrets stored in kubernetes to connect to the ES cluster.

Below is my yaml

kind: CronJob
metadata:
  name: es-jaeger-cleaner
  namespace: monitoring
  labels:
    app: es-jaeger-cleaner
    env: staging
spec:
  # every 1 PM UTC-0
  schedule: "0 13 * * *"
  jobTemplate:
    metadata:
      labels:
        app: es-jaeger-cleaner
        env: staging
    spec:
      template:
        metadata:
          labels:
            app: es-jaeger-cleaner
            env: staging
        spec:
          containers:
          - name: es-jaeger-cleaner
            image: jaegertracing/jaeger-es-index-cleaner:latest
            # clean up ES data indices older than 7 days from now
            args: ["7", "<https://<esHOST:port>"]
            env:
            - name: TIMEOUT
              value: "300"
            - name: ES_USERNAME
              value: "<username>"
            - name: ES_PASSWORD
              valueFrom:
                secretKeyRef:
                  key: ES_PASSWORD
                  name: <secret_name>
          restartPolicy: OnFailure

And it somehow does not work and i get the below error

File "/es-index-cleaner/esCleaner.py", line 31, in main
    client = elasticsearch.Elasticsearch(sys.argv[2:], http_auth=(username, password))
  File "/usr/local/lib/python3.7/site-packages/elasticsearch/client/__init__.py", line 206, in __init__
    self.transport = transport_class(_normalize_hosts(hosts), **kwargs)
  File "/usr/local/lib/python3.7/site-packages/elasticsearch/transport.py", line 127, in __init__
    self.set_connections(hosts)
  File "/usr/local/lib/python3.7/site-packages/elasticsearch/transport.py", line 177, in set_connections
    connections = list(zip(connections, hosts))
  File "/usr/local/lib/python3.7/site-packages/elasticsearch/transport.py", line 173, in _create_connection
    return self.connection_class(**kwargs)
  File "/usr/local/lib/python3.7/site-packages/elasticsearch/connection/http_urllib3.py", line 106, in __init__
    self.headers.update(urllib3.make_headers(basic_auth=http_auth))
  File "/usr/local/lib/python3.7/site-packages/urllib3/util/request.py", line 65, in make_headers
    b64encode(b(basic_auth)).decode('utf-8')
  File "/usr/local/lib/python3.7/site-packages/urllib3/packages/six.py", line 620, in b
    return s.encode("latin-1")
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 9-13: ordinal not in range(256)

PS - If i hardcode the username and password, it works fine. Please let me know if i am doing something wrong

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 29 (20 by maintainers)

Most upvoted comments

I have crated https://github.com/jaegertracing/jaeger-operator/issues/592 for the TLS configuration with ES jobs.