Rumah >pembangunan bahagian belakang >Tutorial Python >Dapatkan data Openshift ConfigMap menggunakan python

Dapatkan data Openshift ConfigMap menggunakan python

王林
王林ke hadapan
2024-02-22 12:31:11566semak imbas

使用 python 获取 Openshift ConfigMap 数据

Kandungan soalan

Saya cuba menggunakan perpustakaan python openshift untuk mendapatkan data peta konfigurasi dalam projek. Saya berjaya mendapatkan nama peta konfigurasi tetapi saya boleh mencari fungsi atau contoh dalam dokumentasi untuk mengekstrak data. Adakah sesiapa yang menghadapi masalah ini atau tahu bagaimana untuk melakukannya?

Ini adalah kod yang saya gunakan untuk mendapatkan nama cm (mengembalikan kamus):

import openshift as oc

if __name__ == '__main__':
    project_selector = oc.selector('projects')
    projects = project_selector.objects()
    number_of_projects = len(projects)
    for project in projects:
        name = project.model.metadata.name
        oc.invoke('project', name)
        tokens = oc.invoke('get', ['configmaps']).actions()[0].as_dict()['out'].replace('\n', ' ').split(' ')
        configmap_data = [x for x in tokens if len(x) > 0 and not x.isupper()]
        print(configmap_data)

Saya telah mencuba menggunakan oc.selector 并使用 with oc.selector(project_name): untuk mencuba dan mendapatkan beberapa data tetapi tidak dapat mencari cara untuk mendapatkannya.

Sila ambil perhatian bahawa saya tidak perlu menggunakan arahan oc cmd, saya perlu menggunakan python. Buat masa ini saya hanya memerlukan data dan lihat bagaimana untuk menukarnya kemudian.

Terima kasih.


Jawapan betul


Jika anda menggunakan oc.invoke, anda perlu lulus hujah baris arahan yang sesuai. Pertimbangkan perkara yang akan berlaku jika anda menjalankan arahan yang sama secara manual:

$ oc get configmaps
name                                                   data   age
coredns                                                1      54d
extension-apiserver-authentication                     6      54d
kube-apiserver-legacy-service-account-token-tracking   1      54d
kube-proxy                                             2      54d
kube-root-ca.crt                                       1      54d
kubeadm-config                                         1      54d
kubelet-config                                         1      54d

Anda mendapat nama, tetapi bukan kandungannya. Jika anda mahukan kandungan, anda perlu memilih format output yang lebih sesuai, seperti -o json:

$ oc get configmaps kubelet-config -o json
{
    "apiversion": "v1",
    "data": {
        ...
    },
    "kind": "configmap",
    "metadata": {
        "name": "kubelet-config",
        "namespace": "kube-system",
    }
}

Anda perlu memasukkan parameter yang sama dalam panggilan ke oc.invoke. Sesuatu seperti ini menunjukkan cara sesuatu berfungsi:

import openshift as oc
import json

project_selector = oc.selector('projects')
projects = project_selector.objects()
for project in projects:
    # get a list of configmap names
    configmaps = oc.invoke('get', ['-n', project.name(), '-o', 'name', 'configmaps'])

    # for each configmap, get the content
    for cm in configmaps.out().splitlines():
        out = oc.invoke('get', ['-n', project.name(), '-o', 'json', cm])
        manifest = json.loads(out.out())
        data = manifest['data']
        print(data)

Ini berfungsi, tetapi jangan lakukannya.

Jelas sekali anda sudah tahu cara menggunakan pemilih kerana itulah cara anda mengulangi item anda. Anda harus menggunakan teknik yang sama untuk mengulang peta konfigurasi:

import openshift as oc

projects = oc.selector('projects')
for project in projects.objects():
    with oc.project(project.name()):
        configmaps = oc.selector('configmaps')
        for cm in configmaps.objects():
            data = cm.as_dict()['data']
            print(data)

Ini banyak berdasarkan contoh terus dari dokumentasi. Lelaran configmaps.objects() untuk mendapatkan objek api bagi setiap peta konfigurasi. Anda boleh mengakses nama dan kandungan.

Atas ialah kandungan terperinci Dapatkan data Openshift ConfigMap menggunakan python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Polar mengira persentilArtikel seterusnya:Polar mengira persentil