2017-09-19 2 views
2

Ich versuche, Kubernetes als Cloud zu Jenkins Server mit der entsprechenden Kubernetes URL und andere Details hinzuzufügen. Wenn ich die Details hinzufügen und testen Sie die Verbindung bekomme ich folgende FehlerKubernetes Plugin mit Jenkins schlägt fehl

Fehler zu https://192.168.X.XX:6443 Anschluss: Fehler Ausführung: GET an: https://192.168.X.XX:6443/api/v1/namespaces/default/pods. Nachricht: User "System: anonym" kann nicht auflisten Schoten im Namensraum "default" ..“

Ich habe versucht, curl auszuführen mit --insecure Option, aber der gleiche folgende Fehler protokolliert wird

. Nachricht: User „System: anonym“ kann nicht auflisten Schoten im Namensraum „default“ ..“

ich habe versucht, jenkins und die Benutzerinformationen hinzufügen, um jenkins als clusteradminrole mit dem folgenden Befehl kubectl

anmelden namespace = default

Aber immer noch den gleichen Fehler - jenkins-admin-Bindung --clusterrole = admin --user = jenkins

kubectl create rolebinding.

Alles fehlt?

EDIT 1: Haben Sie versucht, wie die folgenden zu tun vorgeschlagen

openssl genrsa -out jenkins.key 2048

openssl req -new -Taste jenkins.key -out jenkins.csr -subj "/CN = jenkins/O = admin_jenkins“

Openssl x509 -req -in jenkins.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out jenkins.crt -days 500

kubectl konfig Set-Berechtigungsnachweise Jenkins --client-Zertifikat =/root/Hülsen/admin_jenkins/.certs/jenkins.crt --client-key =/root/Hülsen/admin_jenkins/.certs/jenkins.key

kubectl Config SET- Kontext jenkins-Kontext --cluster = Kubernetes --namespace = default --user = jenkins

-f role.yaml (Role-Datei wie beschrieben)

kubectl erstellen kubectl erstellen -f Rollen binding.yaml

auch nach dieser

kubectl --context=jenkins-context get deployments 
gives the following error 
"Error from server (Forbidden): User "jenkins" cannot list deployments.extensions in the namespace "default". (get deployments.extensions)" 

Update 2:

after following above steps 
"kubectl --context=jenkins-context get deployments" was successful. 

i did the whole exercise after doing a kubeadm reset and it worked 

Aber das Problem bleibt noch K8 mit Jenkins zu integrieren, wenn ich es als eine Wolke mit seinem Plugin hinzufügen versuchen.

Antwort

1

Haben Sie die Rolle admin definiert? Wenn nicht, definieren Sie die Administratorrolle. unten dokumentieren Sie es.

https://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/

Update: 1. Sie Datei role.yaml wie diese und erstellen Rolle erstellen können. läuft dann kubectl apply -f role.yaml

kind: Role 
    apiVersion: rbac.authorization.k8s.io/v1beta1 
    metadata: 
    namespace: default 
    name: admin 
    rules: 
    - apiGroups: ["", "extensions", "apps"] 
    resources: ["deployments", "replicasets", "pods"] 
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # You can also use ["*"] 

Sie das Client-Zertifikat mit dieser Rolle übergeben müssen authentifizieren.

von Ihrer zweiten Frage versuchen Sie, dieses Konto zu verwenden, um jenkin Anwendung Benutzer zu authentifizieren. Ich bin mir nicht sicher, ob diese Methode für Sie funktioniert.

Update auf 9/25/17

Username: admin 
Group: jenkins 


openssl genrsa -out admin.key 2048 
openssl req -new -key admin.key -out admin.csr -subj "/CN=admin/O=jenkins" 

#Run this as root user in master node 
openssl x509 -req -in admin.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out admin.crt -days 500 

mkdir .certs/ 
mv admin.* .certs/ 
kubectl config set-credentials admin --client-certificate=/home/jenkin/.certs/admin.crt --client-key=/home/jenkin/.certs/admin.key 
kubectl config set-context admin-context --cluster=kubernetes --namespace=jenkins --user=admin 

speichern diese in der Datei und erstellen Rolle

kind: Role 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
    namespace: jenkins 
    name: deployment-manager 
rules: 
- apiGroups: ["", "extensions", "apps"] 
    resources: ["deployments", "replicasets", "pods"] 
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # You can also use ["*"] 
--- 
kind: RoleBinding 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
    name: deployment-manager-binding 
    namespace: jenkins 
subjects: 
- kind: User 
    name: admin 
    apiGroup: "" 
roleRef: 
    kind: Role 
    name: deployment-manager 
    apiGroup: "" 

Führen Sie die get Schoten Befehl

kubectl --context=admin-context get pods 
+0

Nein, ich habe keine bestimmte Administratorrolle definiert. Aber ich habe versucht, den Benutzer hinzuzufügen, wie oben mit dem Befehl kubectl gesehen werden kann. Soll eine separate Pod-Datei mit RBAC-Richtlinien für diesen Zweck geschrieben werden? – Prat

+0

Auch mein k8-Cluster und der jenkins-Master laufen auf demselben Host (VM). Muss das Zertifikat dafür noch generiert werden? Jenkins hätte ein eigenes Zertifikat erstellt, auf das andere Benutzer zugreifen können. Können wir das benutzen? (Entschuldigung, wenn es ein bisschen noobish Q). Wollte das nur klären – Prat

+0

Hi - ich habe meine Frage mit dem was ich nach deinem Vorschlag versucht habe modifiziert. Es ist immer noch das gleiche Problem – Prat

Verwandte Themen