Аутентификация клиента Kubernetes API(NodeJS) с использованием сертификата не удалась

Я развернул кластер Kubernetes в облаке Google и пытаюсь получить к нему доступ, используя Kubernetes NodeJS API, клиент Kubernetes.

Для этого нам нужно пройти аутентификацию с кластером. Я пытался использовать только имя пользователя и пароль. Я получаю следующую ошибку:

{ [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }

Затем я попробовал аутентификацию с использованием CAcert, ClientCert и ClientKey. Я в основном жестко закодировал ключи вместо того, чтобы импортировать их из файлов. Я вызываю этот API из функции Lambda, где я не могу хранить сертификаты в файлах. При этом я получаю следующую ошибку:

[Error: error:0906D06C:PEM routines:PEM_read_bio:no start line]

Моя интуиция в аутентификации возможна только с ключами. Но я думаю, что делаю что-то не так с сертификатами. Нужно ли создавать какие-то другие сертификаты из этого или метод использования сертификатов является неправильным?

Ответ:

Смотрите комментарий Роберта Бэйли. Я скучал по Base64. Добавив это, я мог бы успешно пройти аутентификацию в кластере kubernetes, отображать и развертывать новые модули и т. Д.,

1 ответ

Решение

Для этого нам нужно пройти аутентификацию с кластером. Я пытался использовать только имя пользователя и пароль. Я получаю следующую ошибку:

Глядя на клиента NodeJS, я не вижу способа предоставить сертификат CA кластера вместе с именем пользователя и паролем, поэтому, если вы не установите strictSSL в false это сообщение об ошибке кажется обоснованным (ваша система говорит, что она не доверяет сертификату, представленному сервером, что является правильным, поскольку это самозаверяющий центр сертификации). Возможно, вам удастся обойти эту проблему, установив сертификат кластерного ЦС в корневое хранилище сертификатов системы, но использование другого метода аутентификации (и отправка сообщения об ошибке клиенту NodeJS) представляется предпочтительным.

Затем я попробовал аутентификацию с использованием CAcert, ClientCert и ClientKey. Я в основном жестко закодировал ключи вместо того, чтобы импортировать их из файлов.

Вы также пытались импортировать файлы (для сравнения)? Похоже, что это ошибка синтаксического анализа при указании блоков PEM, и библиотеки могут лучше выполнять чтение блоков из файлов вместо встроенных данных.

Моя интуиция в аутентификации возможна только с ключами. Но я думаю, что делаю что-то не так с сертификатами. Нужно ли создавать какие-то другие сертификаты из этого или метод использования сертификатов является неправильным?

Аутентификация должна быть возможна с помощью имени пользователя / пароля или клиентских ключей. Библиотека NodeJS также позволяет указывать на kubeconfig файл, который должен позволять вам указывать имя пользователя / пароль вместе с сертификатом CA кластера, чтобы вы могли безопасно подключаться к конечной точке API, если вы хотите использовать базовые учетные данные аутентификации.

Другие вопросы по тегам