Essayez d'utiliser Kubernetes Client -Python-

Préface

Je viens d'énumérer ce que j'ai fait de même. Je n'ai pas tellement touché Python, alors j'ai essayé de l'utiliser pour étudier. Je ne sais pas si cela vous sera utile, mais si vous voulez l'utiliser de la même manière, vous voudrez peut-être le suivre.

environnement

L'environnement utilisé est le suivant.

De plus, Kubernetes utilise IBM Cloud Kubernetes Service (IKS), mais je me demande s'il peut être utilisé n'importe où.

Introduction et utilisation du client python

Introduction / exemple d'implémentation de code

Suivez git. Client présenté avec pip.

pip install kubernetes

Exemple de code (Reportez-vous à tous les pods)

from kubernetes import client, config

# Configs can be set in Configuration class directly or using helper utility
config.load_kube_config()

v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
    print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

Ce code accède au cluster en fonction de la variable d'environnement KUBECONGIG. Par conséquent, il est nécessaire d'obtenir la configuration du cluster IKS.

Obtention de KUBECONFIG

Utilisez l'interface de ligne de commande IBM Cloud pour obtenir le KUBECONFIG.

Après vous être connecté au compte cible, exécutez la commande suivante.

$ ibmcloud ks cluster config --cluster mycluster
Kubernetes version 1.16 has removed deprecated APIs. For more information, see <http://ibm.biz/k8s-1-16-apis>

avertissement: The behavior of this command in your current CLI version is deprecated, and becomes unsupported when CLI version 1.0 is released in March 2020. To use the new behavior now, set the '{{.BetaVar}}' environment variable. In {{.Shell}}, run '{{.Command}}'.
Note: Changing the beta version can include other breaking changes.Pour plus d'informations, http://ibm.biz/iks-cli-Voir v1

OK
La configuration mycluster a été téléchargée avec succès.

Exportez les variables d'environnement et commencez à utiliser Kubernetes.

export KUBECONFIG=/Users/<user_name>/.bluemix/plugins/kubernetes-service/clusters/..../zzzz.yml

Exemple d'exécution de code

$ python kubeapi.py Listing pods with their IPs:
10.76.68.235    kube-system     calico-kube-controllers-7ddc977c56-ccrkh
10.76.68.235    kube-system     calico-node-7b88g
・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・

J'ai une liste de pods.

Connexion à un cluster distant

En tant que méthode de connexion qui n'utilise pas kube-config, il existe une méthode de connexion qui utilise un jeton ou un certificat TLS. Simplement ceci. → https://github.com/kubernetes-client/python/blob/master/examples/remote_cluster.py

Ce que je voulais faire, c'était créer un ServiceAccount et utiliser l'API Kubernetes en fonction de ces informations d'identification. C'était ça.

J'étudie toujours autour du compte de service, je voudrais donc vous présenter uniquement ce que j'ai fait.

  1. Créer un compte de service (personnes qui utilisent l'API Kubernetes)
  2. Créer un rôle de cluster (rôle sur le cluster Kubernetes et règles d'API autorisées)
  3. Créez ClusterRoleBinding (Association de compte de service et ClusterRole. Apprenez le rôle et les règles à ceux qui utilisent l'API.)
  4. Obtenez les informations de configuration du compte de service (Secret est-il terminé? Il devrait l'être, alors apportez-le à partir de là.)
  5. Créez un fichier ca.cert à partir des informations de configuration obtenues.

Les informations utilisées à partir des informations Secret of Config sont token, ca.crt. Bese64 décode et utilise.

Le fichier ca.cart créé a ce format. Si vous le décodez, il devrait déjà être dans cet état, alors collez-le tel quel.

-----BEGIN CERTIFICATE-----
Chaîne de caractères Chaîne de caractères Chaîne de caractères Chaîne de caractères Caractère caractère Mojimo jimo ...
-----END CERTIFICATE-----

Dans le code Python, la partie correspondant à la config.load_kube_config () ci-dessus est la suivante.

  # Configs can be set in Configuration class directly or using helper utility
  configuration = client.Configuration()
  configuration.verify_ssl = True
  configuration.host = 'https://xxx.xxx.xx.xx.xx.:yyy'
  #Insérez le jeton acquis tel quel.
  configuration.api_key['authorization'] = '<token>'
  configuration.api_key_prefix['authorization'] = 'Bearer'
  #ca.Le chemin vers cert. Il ne bouge pas même s'il est poussé tel quel.
  configuration.ssl_ca_cert = './ca.cert'
  namespace = 'default'

  v1 = client.CoreV1Api(client.ApiClient(configuration))

Vous pouvez maintenant utiliser l'API! Devrait être! Je pense que vous avez pris diverses mesures difficiles, mais veuillez l'ajuster vous-même. Surtout autour de l'autorité.

Si vous allez au-delà de cela, cela fonctionnera presque selon Samples.

Il s'agit d'écrire des notes, mais c'est tout.

Recommended Posts

Essayez d'utiliser Kubernetes Client -Python-
Essayez d'utiliser Tweepy [Python2.7]
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez Python
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser LevelDB avec Python (plyvel)
Essayez d'utiliser l'API d'action de Python argparse
Essayez d'utiliser le module Python Cmd
Essayez d'utiliser LeapMotion avec Python
Essayez d'utiliser Amazon DynamoDB à partir de Python
Essayez d'utiliser Tkinter
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser docker-py
Essayez une formule utilisant Σ avec python
Essayez d'utiliser l'API Kraken avec Python
Essayez d'utiliser PDFMiner
Dialogflow (anciennement: API.AI) Essayez d'utiliser le SDK Python #dialogflow
Commencez à utiliser Python
Essayez d'utiliser des géopandas
Essayez d'utiliser Python avec Google Cloud Functions
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Python> essayez: / sauf:
Essayez d'utiliser le script de validation Python # 2 On-box de Junos
Essayez d'utiliser Excel en utilisant Python (Xlwings)
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser le script d'opération Python # 1 On-box de Junos
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Scraping à l'aide de Python
Développer et déployer des API Python à l'aide de Kubernetes et Docker
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Essayez d'utiliser le framework Web Python Tornado Partie 1
Essayez d'utiliser le module de collections (ChainMap) de python3
Essayez d'utiliser tensorflow ① Créez un environnement python et introduisez tensorflow
Essayez d'utiliser le framework Web Python Tornado Partie 2
Essayez d'utiliser l'API ChatWork et l'API Qiita en Python
Essayez d'utiliser l'API DropBox Core avec Python
Essayez de gratter avec Python.
Configuration du client Python StatsD
Séquence de Fibonacci utilisant Python
Essayez d'utiliser virtualenv (virtualenvwrapper)
Utiliser le client LiquidTap Python ③
Nettoyage des données à l'aide de Python
[Azure] Essayez d'utiliser Azure Functions
Essayez Debian + Python 3.4 + django1.7 ……
Utilisation des packages Python #external
Essayez d'utiliser virtualenv maintenant
Câblage Communication Pi-SPI avec Python
Essayez gRPC en Python
Essayez d'utiliser W & B
Calcul de l'âge à l'aide de python
Essayez d'utiliser Django templates.html
Utiliser le client LiquidTap Python ②
[Kaggle] Essayez d'utiliser LGBM
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python