Versuchen Sie es mit Kubernetes Client -Python-

Vorwort

Ich habe nur aufgelistet, was ich genauso gemacht habe. Ich habe Python nicht so sehr berührt, also habe ich versucht, es zum Lernen zu verwenden. Ich weiß nicht, ob es hilfreich sein wird, aber wenn Sie es auf die gleiche Weise verwenden möchten, möchten Sie es möglicherweise befolgen.

Umgebung

Die verwendete Umgebung ist wie folgt.

Kubernetes verwendet auch den IBM Cloud Kubernetes Service (IKS), aber ich frage mich, ob er überall verwendet werden kann.

Einführung und Verwendung des Python-Clients

Einführung / Implementierung von Beispielcode

Folgen Sie git. Client mit pip eingeführt.

pip install kubernetes

Beispielcode (Siehe alle 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))

Dieser Code greift basierend auf der Umgebungsvariablen KUBECONGIG auf den Cluster zu. Daher ist es notwendig, die Konfiguration des IKS-Clusters abzurufen.

KUBECONFIG

Verwenden Sie die IBM Cloud CLI, um die KUBECONFIG abzurufen.

Führen Sie nach dem Anmelden beim Zielkonto den folgenden Befehl aus.

$ 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>

Warnung: 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.Weitere Informationen finden Sie unter http://ibm.biz/iks-cli-Siehe v1

OK
Die mycluster-Konfiguration wurde erfolgreich heruntergeladen.

Exportieren Sie die Umgebungsvariablen und verwenden Sie Kubernetes.

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

Beispielcodeausführung

$ 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
・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・

Ich habe eine Liste von Hülsen.

Verbindung zum Remote-Cluster

Als Verbindungsmethode, die keine kube-config verwendet, gibt es eine Verbindungsmethode, die ein Token oder ein TLS-Zertifikat verwendet. Einfach das. → https://github.com/kubernetes-client/python/blob/master/examples/remote_cluster.py

Ich wollte ein ServiceAccount erstellen und die Kubernetes-API basierend auf diesen Anmeldeinformationen verwenden. Es war das.

Ich lerne immer noch rund um Service Account, daher möchte ich nur das vorstellen, was ich getan habe.

  1. Dienstkonto erstellen (Personen, die die Kubernetes-API verwenden)
  2. Erstellen Sie eine Clusterrolle (Rolle in Kubernetes Cluster und zulässige API-Regeln)
  3. Erstellen Sie ClusterRoleBinding (Zuordnung von ServiceAccount und ClusterRole. Unterrichten von Rollen und Regeln für diejenigen, die API verwenden.)
  4. Holen Sie sich die Konfigurationsinformationen des Dienstkontos (Ist das Geheimnis erledigt? Es sollte so sein, bringen Sie es von dort mit.)
  5. Erstellen Sie aus den erhaltenen Konfigurationsinformationen eine ca.cert-Datei.

Die von Secret of Config verwendeten Informationen sind Token, ca.crt. Bese64 dekodieren und verwenden.

Die erstellte ca.cart-Datei hat dieses Format. Wenn Sie es dekodieren, sollte es sich bereits in diesem Zustand befinden. Fügen Sie es also so ein, wie es ist.

-----BEGIN CERTIFICATE-----
Zeichenkette Zeichenkette Zeichenkette Zeichenkette Zeichenkette Mojimo jimo ...
-----END CERTIFICATE-----

Im Python-Code lautet der Teil, der der obigen config.load_kube_config () entspricht, wie folgt.

  # 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'
  #Fügen Sie den erworbenen Token unverändert ein.
  configuration.api_key['authorization'] = '<token>'
  configuration.api_key_prefix['authorization'] = 'Bearer'
  #ca.Der Weg zu cert. Es bewegt sich nicht, selbst wenn es so geschoben wird, wie es ist.
  configuration.ssl_ca_cert = './ca.cert'
  namespace = 'default'

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

Jetzt können Sie die API verwenden! Sollte sein! Ich denke, dass Sie verschiedene mühsame Schritte unternommen haben, aber bitte passen Sie sie selbst an. Besonders um Autorität.

Wenn Sie darüber hinausgehen, funktioniert es fast wie Samples.

Es geht darum, Notizen zu schreiben, aber das war's.

Recommended Posts

Versuchen Sie es mit Kubernetes Client -Python-
Versuchen Sie es mit Tweepy [Python2.7]
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Versuchen Sie Python
Versuchen Sie es mit der Pleasant-API (Python / FastAPI).
Versuchen Sie es mit LevelDB mit Python (plyvel)
Versuchen Sie es mit der Aktions-API von Python argparse
Versuchen Sie es mit dem Python Cmd-Modul
Versuchen Sie es mit LeapMotion mit Python
Versuchen Sie es mit Amazon DynamoDB von Python
Versuchen Sie es mit Tkinter
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie es mit Docker-Py
Versuchen Sie eine Formel mit Σ mit Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Versuchen Sie es mit PDFMiner
Dialogflow (früher: API.AI) Verwenden Sie das Python SDK #dialogflow
Starten Sie Python
Versuchen Sie es mit Geopandas
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Versuchen Sie es mit Selen
Versuchen Sie es mit scipy
Python> try: / außer:
Versuchen Sie es mit Junos 'On-Box Python # 2 Commit Script
Versuchen Sie, Excel mit Python (Xlwings) zu betreiben.
Versuchen Sie es mit pandas.DataFrame
Versuchen Sie es mit Junos 'On-Box Python # 1 Op Script
Versuchen Sie es mit Django-Swiftbrowser
Versuchen Sie es mit matplotlib
Versuchen Sie es mit tf.metrics
Versuchen Sie es mit PyODE
Scraping mit Python
Entwickeln und Bereitstellen von Python-APIs mit Kubernetes und Docker
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Python: Versuchen Sie, die Benutzeroberfläche von Pythonista 3 auf dem iPad zu verwenden
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Versuchen Sie es mit Tensorflow. ① Erstellen Sie eine Python-Umgebung und führen Sie Tensorflow ein
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Versuchen Sie es mit Python.
Python StatsD-Clientkonfiguration
Fibonacci-Sequenz mit Python
Versuchen Sie es mit virtualenv (virtualenvwrapper)
Verwenden Sie LiquidTap Python Client ③
Datenbereinigung mit Python
[Azure] Versuchen Sie, Azure-Funktionen zu verwenden
Versuchen Sie Debian + Python 3.4 + django1.7 ……
Verwenden von Python # externen Paketen
Versuchen Sie es jetzt mit virtualenv
WiringPi-SPI-Kommunikation mit Python
Versuchen Sie gRPC in Python
Versuchen Sie es mit W & B.
Altersberechnung mit Python
Versuchen Sie es mit Django templates.html
Verwenden Sie LiquidTap Python Client ②
[Kaggle] Versuchen Sie es mit LGBM
Versuchen Sie es mit dem Feed-Parser von Python.
Versuchen Sie es mit Pythons Tkinter