clairctl отказывается от tcp-соединения

#postgresql #kubernetes #clair

Вопрос:

Обновление Clair с 2.1.5 -> 4.1.5, и сервис, похоже, сильно изменился. Я запускаю Clair v4 в модуле в кубернетесе с базой данных postgres в другом модуле. Соединение между модулем Clair и базой данных, похоже, работает, потому что оно обновило данные CVE, которые были видны в журналах.

Основная проблема заключается в том, что при выполнении команды clairctl report nginx:latest , например, я получаю сообщение об ошибке

 ERR  error="Get "http://localhost:6060/indexer/api/v1/index_report/sha256:5e95e5eb8be4322e3b3652d737371705e56809ed8b307ad68ec59ddebaaf60e4": dial tcp 127.0.0.1:6060: connect: connection refused"
 

Вот conf и yaml-ы kubernetes, которые я использую

 ---
# config.yaml
log_level: debug-color
introspection_addr: ""
http_listen_addr: ":6000"
updaters: {}
indexer:
  connstring: 'postgresql://postgres:postgres@postgres/clair'
  scanlock_retry: 10
  layer_scan_concurrency: 5
  migrations: true
matcher:
  indexer_addr: http://localhost:6060/
  connstring: 'postgresql://postgres:postgres@postgres/clair'
  max_conn_pool: 100
  migrations: true
matchers:
  # names:
  # - crda
  # config:
  #   crda:
  #     url: https://f8a-analytics-preview-2445582058137.production.gw.apicast.io/?user_key=3e42fa66f65124e6b1266a23431e3d08
notifier:
  indexer_addr: http://localhost:6060/
  matcher_addr: http://localhost:6060/
  connstring: 'postgresql://postgres:postgres@postgres/clair'
  migrations: true
  delivery_interval: 5s
  poll_interval: 15s
  # webhook:
  #   target: "http://webhook/"
  #   callback: "http://clair-notifier/notifier/api/v1/notifications"
  amqp:
    direct: true
    exchange:
      name: ""
      type: "direct"
      durable: true
      auto_delete: false
    uris: ["amqp://guest:guest@clair-rabbitmq:5672/"]
    routing_key: "notifications"
    callback: "http://clair-notifier/notifier/api/v1/notifications"
# tracing and metrics config
trace:
  name: "jaeger"
  probability: 1
  jaeger:
    agent:
      endpoint: "jaeger:6831"
    service_name: "clair"
metrics:
  name: "prometheus"
---
# clair.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    quay-component: clair
  name: clair
spec:
  replicas: 1
  selector:
    matchLabels:
      app: clair
  template:
    metadata:
      labels:
        app: clair
    spec:
      containers:
      - name: clair
        image: quay.io/coreos/clair:v4.1.5
        imagePullPolicy: IfNotPresent
        env:
        - name: CLAIR_CONF
          value: /clair/config.yaml
        - name: CLAIR_MODE
          value: combo
        resources:
          limits:
            memory: "1000Mi"
            cpu: "2000m"
        ports:
        - containerPort: 8080
          name: clair-http
          protocol: TCP
        - containerPort: 6060
          name: clair-scanner
          protocol: TCP
        volumeMounts:
          - mountPath: /clair/
            name: config
      restartPolicy: Always
      volumes:
      - name: config
        secret:
          secretName: clair-config-secret

---
apiVersion: v1
kind: Service
metadata:
  name: clair
  labels:
    quay-component: clair
spec:
  ports:
  - name: clair-http
    port: 80
    protocol: TCP
    targetPort: 8080
  - name: clair-scanner
    port: 6060
    protocol: TCP
    targetPort: 6060
  selector:
    app: clair
  type: ClusterIP

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: clair
  annotations:
    ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
    - http:
        paths:
          - path: "/"
            backend:
              serviceName: clair
              servicePort: 80
---
# postgres.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
      - name: postgres
        image: postgres:latest
        imagePullPolicy: 'IfNotPresent'
        ports:
          - containerPort: 5432
        env:
        - name: POSTGRES_USER
          value: "postgres"
        - name: POSTGRES_DB
          value: "clair"
        - name: POSTGRES_PASSWORD
          value: "postgres"

---
apiVersion: v1
kind: Service
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  type: ClusterIP
  ports:
    - port: 5432
      protocol: TCP
      name: postgres
      targetPort: 5432
  selector:
    app: postgres
 

Кто — нибудь знает, почему возникает эта ошибка.
Я действительно пытался использовать --host флаг, но это возвращало разные сообщения об ошибках

Комментарии:

1. «Отказано в подключении» имеет ровно одно значение: ничто не прослушивалось на IP:порту, к которому вы пытались подключиться. Не по теме.