Назад | Перейти на главную страницу

Как использовать AWS EKS с плагином Jenkins Kubernetes Cloud?

Я не нашел практически никакой документации о том, как использовать Плагин Jenkins Kubernetes с Amazon EKS. В документация упоминает aws-iam-Authenticator и настройку java для изменения тайм-аута кеша, но не объясняет, как что-либо настроить.

Если я помещаю URL-адрес API для своего кластера EKS в поле «URL-адрес Kubernetes» и нажимаю кнопку «Проверить соединение», я получаю сообщение об ошибке относительно пути сертификации:

Error testing connection https://XXX.gr7.us-west-2.eks.amazonaws.com: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Если я затем поставлю флажок «Отключить проверку сертификата https», я получу сообщение об ошибке о том, что пользователь «система: анонимный» не имеет необходимых разрешений:

Error testing connection https://XXX.gr7.us-west-2.eks.amazonaws.com: Failure executing: GET at: https://XXX.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/default/pods. Message: pods is forbidden: User "system:anonymous" cannot list resource "pods" in API group "" in the namespace "default". Received status: Status(apiVersion=v1, code=403, details=StatusDetails(causes=[], group=null, kind=pods, name=null, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=pods is forbidden: User "system:anonymous" cannot list resource "pods" in API group "" in the namespace "default", metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=Forbidden, status=Failure, additionalProperties={}).

Экземпляр EC2, на котором работает мастер jenkins, имеет роль IAM с полными разрешениями eks: *. Если я настроил учетные данные с ролью IAM, они не отображаются в раскрывающемся списке учетных данных. Учетные данные с доступом к AWS и секретным ключом также не отображаются в раскрывающемся списке Учетные данные.

Был там и решил это.

Если вы настроили kubeconfig для использования aws eks get-token .., а затем убедитесь, что ваш Jenkins Master имеет AWS CLI версии 1.16.300 и выше, который поддерживает получение токена с помощью aws-cli.

Если вы настроили kubeconfig для использования aws-iam-authenticator, затем убедитесь, что вы установили AWS IAM Authenticator на главном сервере Jenkins и что jenkins пользователь может использовать двоичный файл (настройки пути).

Это должно избавить вас от ошибки «система: анонимно» во время тестирования соединения.

И, наконец, если вы столкнулись с ошибкой в ​​строках Unauthorized! Token may have expired! Please log-in again. Unauthorized., то вам нужно убедиться в двух вещах:

  1. Убедитесь, что версия плагина для kubernetes-plugin как минимум 1.23.2. Для этого потребуется версия Jenkins как минимум 2.190.1. Эта версия требуется для следующего шага.
  2. Этот параметр java установлен в параметрах Java Jenkins, как упоминалось Вот: JAVA_ARGS="-Dorg.csanchez.jenkins.plugins.kubernetes.clients.cacheExpiration=60". По умолчанию это 24 часа, тогда как токены EKS истекают каждые 15 минут. Этот параметр для 60 очищает токен каждые 60 секунд. `