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.
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ù.
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.
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
/ plugins / kubernetes-service
→ ⭕️ / plugins / container-service
, mais je me demande s'il y a lieu de s'inquiéter à ce sujet.$ 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.
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.
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