Я не нашел практически никакой документации о том, как использовать Плагин 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.
, то вам нужно убедиться в двух вещах:
JAVA_ARGS="-Dorg.csanchez.jenkins.plugins.kubernetes.clients.cacheExpiration=60"
. По умолчанию это 24 часа, тогда как токены EKS истекают каждые 15 минут. Этот параметр для 60 очищает токен каждые 60 секунд. `