How to configure permissions on jenkins kubernetes plugin to access remote GKE Cluster

10/16/2019

I have Jenkins set up on GCE and from there I am trying to access k8s cluster on GKE. I get unauthorized when I try to test a connection on the plugin.

I have enabled GKE API access, created a service account on GKE, created role and role binding.

Installed kubernetes plugin on Jenkins and configured it by providing kubernetes url, certificate and token. I still get following exception -

Expected is - Connection to Kubernetes cluster succeeds.

Actual is - Error testing connection https://35.193.108.106: java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Empty input (With Disabled Https)

AND

With (Disable https certificate check enabled) Error testing connection https://35.193.108.106: Failure executing: GET at: https://35.193.108.106/api/v1/namespaces/default/pods. Message: Unauthorized. Received status: Status(apiVersion=v1, code=401, details=null, kind=Status, message=Unauthorized, metadata=ListMeta(_continue=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=Unauthorized, status=Failure, additionalProperties={}).

-- user1957753
google-kubernetes-engine
jenkins-kubernetes
jenkins-plugins

1 Answer

10/16/2019

Check gcp network rules settings and check connection with kubectl from jenkins vm. I use "Secret text" type credentials to store token. I use jenkins vm in same gcp network to skip such issues. Service account creation in namespace jenkins with "admin" permissions

kubectl create namespace jenkins && kubectl create serviceaccount jenkins --namespace=jenkins && kubectl describe secret $(kubectl describe serviceaccount jenkins --namespace=jenkins | grep Token | awk '{print $2}') --namespace=jenkins && kubectl create rolebinding jenkins-admin-binding --clusterrole=admin --serviceaccount=jenkins:jenkins --namespace=jenkins
-- Vasiliy Ratanov
Source: StackOverflow