Невозможно получить доступ к локальному сертификату в кластере Kubernetes - PullRequest
0 голосов
/ 27 мая 2020

У меня есть приложение узла, работающее в контейнере, которое хорошо работает, когда я запускаю его локально на docker.

Когда я пытаюсь запустить его в своем кластере k8, я получаю следующую ошибку:

 kubectl -n some-namespace logs --follow my-container-5d7dfbf876-86kv7
> code@1.0.0 my-container /src
> node src/app.js
Error: unable to get local issuer certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1486:34)
    at TLSSocket.emit (events.js:315:20)
    at TLSSocket._finishInit (_tls_wrap.js:921:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:695:12) {
  code: 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY'
}

Это странно, поскольку я запускаю контейнер только с

        command: ["npm", "run", "consumer"]

Я также попытался добавить в свой Dockerfile

npm config set strict-ssl false

согласно приведенной здесь рекомендации: npm ошибка установки - невозможно получить сертификат местного эмитента , но, похоже, help.

Значит, он должен пытаться аутентифицироваться таким образом.

Я был бы признателен за любые указатели на это.

Вот копия моего файла .yaml для полноты.

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    name: label
  name: label
  namespace: some-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      name: lable
  template:
    metadata:
      labels:
          name: label
    spec:
      containers:
      - name: label
        image: some-registry:latest
        resources:
          limits:
            memory: 7000Mi
            cpu: '3'
        ports:
          - containerPort: 80 
        command: ["npm", "run", "application"]
        env:
          - name: "DATABASE_URL"
            valueFrom:
              secretKeyRef:
                name: postgres
                key: DBUri
          - name: "DEBUG"
            value: "*,-babel,-mongo:*,mongo:queries,-http-proxy-agent,-https-proxy-agent,-proxy-agent,-superagent,-superagent-proxy,-sinek*,-kafka*"
          - name: "ENV"
            value: "production"
          - name: "NODE_ENV"
            value: "production"
          - name: "SERVICE"
            value: "consumer"
        volumeMounts:
          - name: certs
            mountPath: /etc/secrets
            readOnly: true
      volumes:
        - name: certs
          secret:
            secretName: certs
            items:
            - key: certificate
              path: certificate
            - key: key
              path: key

1 Ответ

0 голосов
/ 27 мая 2020

Похоже, капсула не устанавливает секреты в нужное место. Убедитесь, что .spe c .volumeMounts.mountPath указывает на правильный путь для образа контейнера.

...