3

I´m trying create a Python client to connect and exec a command in a pod on AKS Cluster, however when try connect i get message error from my client 401 Unauthorized.Has anyone experienced this problem in the API?

API EXCEPTION MESSAGE:

kubernetes.client.rest.ApiException: (401)
Reason: Unauthorized
HTTP response headers: HTTPHeaderDict({'Audit-Id': 'ba23c2b3-d65b-4200-b802-161300119860', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'Date': 'Mon, 21 Sep 2020 18:21:59 GMT', 'Content-Length': '129'})
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}

Python Client API Kubernetes

    from __future__ import print_function
import time
import kubernetes.client
import os
from kubernetes.stream import stream
from kubernetes.client.rest import ApiException
from pprint import pprint


name = input("Insira o POD name cadastrado")
namespace = input("namespace do POD cadastrado")
NomeAtuador = input("Insira o nome do atuador a ser gerado o arquivo de configuração")


configuration = kubernetes.client.Configuration()
#configuration.verify_ssl=False
#configuration.assert_hostname = False
configuration.api_key_prefix['authorization'] = 'Bearer'
configuration.api_key['authorization'] = 'MYTOKEN'
configuration.ssl_ca_cert= 'PATH TO CA.CRT'
configuration.host = "HOST_IP:443"

api_instance = kubernetes.client.CoreV1Api(
    kubernetes.client.ApiClient(configuration))


exec_command = [
            '/etc/openvpn/setup/newClientCert.sh',
            (NomeAtuador), 
            'xxxxxxx']

resp = stream(api_instance.connect_post_namespaced_pod_exec(
    (name), (namespace), command=exec_command,
              stderr=True, stdin=True,
              stdout=True, tty=True))
print("Response: " + resp)

I´m using a Python 3.8.2 and Kubernetes 1.16.13

3
  • Did you add correct token? You can retrieve it by using config.load_kube_config() and then kubernetes.client.configuration.Configuration._default.api_key Commented Sep 22, 2020 at 14:19
  • Hi @MariuszK.! sorry for the delay. The token is right, probably some RBAC rule are dropping the request. To Work Arround the problem, i needed add the following configuration to cluster config. kubectl create clusterrolebinding serviceaccounts-cluster-admin \ --clusterrole=cluster-admin \ --group=system:serviceaccounts Commented Oct 1, 2020 at 18:51
  • Please consider posting your solution as an answer- it might be helpful for others who encounter similar issue. Commented Oct 2, 2020 at 9:40

1 Answer 1

2

To solve my problem i add the following configuration to cluster config.

kubectl create clusterrolebinding serviceaccounts-cluster-admin \   --clusterrole=cluster-admin \   --group=system:serviceaccounts
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.