"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Kubernetes क्लाइंट-गो में Kubectl संदर्भ कैसे निर्दिष्ट करें?

Kubernetes क्लाइंट-गो में Kubectl संदर्भ कैसे निर्दिष्ट करें?

2024-11-07 को प्रकाशित
ब्राउज़ करें:713

How to Specify a Kubectl Context in Kubernetes Client-Go?

कुबेरनेट्स क्लाइंट-गो में कुबेक्टल संदर्भ का उपयोग करना

कुबेरनेट्स क्लाइंट-गो लाइब्रेरी कुबेरनेट्स क्लस्टर के साथ बातचीत करने का एक सुविधाजनक तरीका प्रदान करती है कोड जाओ. प्रमाणीकरण और प्राधिकरण के लिए, क्लाइंट-गो लाइब्रेरी आमतौर पर kubeconfig फ़ाइल (~/.kube/config) का उपयोग करती है। हालाँकि, उपयोग करने के लिए एक विशिष्ट kubectl संदर्भ निर्दिष्ट करना संभव है। संदर्भ:

आयात ( "एफएमटी" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" ) // GetKubeClient किसी दिए गए kubeconfig संदर्भ के लिए Kubernetes कॉन्फ़िगरेशन और क्लाइंट बनाता है। func GetKubeClient(संदर्भ स्ट्रिंग) (*rest.Config, kubernetes.Interface, त्रुटि) { कॉन्फिग, त्रुटि := configForContext(संदर्भ) यदि त्रुटि !=शून्य { वापसी शून्य, शून्य, त्रुटि } क्लाइंट, त्रुटि := kubernetes.NewForConfig(config) यदि त्रुटि !=शून्य { वापसी शून्य, शून्य, fmt.Errorf ("कुबेरनेट्स क्लाइंट नहीं मिल सका: %s", त्रुटि) } रिटर्न कॉन्फिग, क्लाइंट, शून्य }

configForContext Function

import (
    "fmt"

    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/rest"
    "k8s.io/client-go/tools/clientcmd"
)

// GetKubeClient creates a Kubernetes config and client for a given kubeconfig context.
func GetKubeClient(context string) (*rest.Config, kubernetes.Interface, error) {
    config, err := configForContext(context)
    if err != nil {
        return nil, nil, err
    }
    client, err := kubernetes.NewForConfig(config)
    if err != nil {
        return nil, nil, fmt.Errorf("could not get Kubernetes client: %s", err)
    }
    return config, client, nil
}

func configForContext(संदर्भ स्ट्रिंग) (*रेस्ट.कॉन्फिग, त्रुटि) { कॉन्फ़िगरेशन, त्रुटि := getConfig(संदर्भ).ClientConfig() यदि त्रुटि !=शून्य { वापसी शून्य, fmt.Errorf ("संदर्भ %q के लिए Kubernetes कॉन्फिगरेशन नहीं मिल सका: %s", संदर्भ, त्रुटि) } वापसी कॉन्फिग, शून्य }

getConfig Function

func configForContext(context string) (*rest.Config, error) {
    config, err := getConfig(context).ClientConfig()
    if err != nil {
        return nil, fmt.Errorf("could not get Kubernetes config for context %q: %s", context, err)
    }
    return config, nil
}

func getConfig(context string) clientcmd .क्लाइंट कॉन्फिग { नियम := clientcmd.NewDefaultClientConfigLoadingRules() var configOverrides *clientcmd.ConfigOverrides यदि संदर्भ != "" { configOverrides = &clientcmd.ConfigOverrides{ ClusterDefaults: clientcmd.ClusterDefaults, वर्तमान संदर्भ: संदर्भ, } } क्लाइंट लौटाएँcmd.NewNonInteractiveDeferredLoadingClientConfig(नियम, configOverrides) }

उदाहरण उपयोग

func getConfig(context string) clientcmd.ClientConfig {
    rules := clientcmd.NewDefaultClientConfigLoadingRules()

    var configOverrides *clientcmd.ConfigOverrides
    if context != "" {
        configOverrides = &clientcmd.ConfigOverrides{
            ClusterDefaults: clientcmd.ClusterDefaults,
            CurrentContext:  context,
        }
    }

    return clientcmd.NewNonInteractiveDeferredLoadingClientConfig(rules, configOverrides)
}

आयात ( "प्रसंग" "एफएमटी" "k8s.io/client-go/kubernetes" kubeInitializer "k8s.io/client-go/tools/clientcmd/api" ) func मुख्य() { // kubeconfig फ़ाइल लोड करें। kubeconfig := "/path/to/my/.kube/config" कॉन्फिग, त्रुटि := clientcmd.LoadFromFile(kubeconfig) यदि त्रुटि !=शून्य { fmt.Println('kubeconfig लोड करने में त्रुटि:', त्रुटि) वापस करना } // निर्दिष्ट संदर्भ के लिए एक कुबेरनेट्स कॉन्फ़िगरेशन बनाएं। clientConfig, err := configForContext(config, "संदर्भ-नाम") यदि त्रुटि !=शून्य { fmt.Println('कुबेरनेट्स कॉन्फ़िगरेशन बनाने में त्रुटि:', गलती) वापस करना } // एक कुबेरनेट्स क्लाइंट बनाएं। क्लाइंट, त्रुटि := Kubernetes.NewForConfig(clientConfig) यदि त्रुटि !=शून्य { fmt.Println('कुबेरनेट्स क्लाइंट बनाने में त्रुटि:', त्रुटि) वापस करना } // कुबेरनेट्स क्लाइंट का उपयोग करके संचालन करें। ctx := context.Background() नोड्स, त्रुटि := client.CoreV1().Nodes().List(ctx, Metav1.ListOptions{}) यदि त्रुटि !=शून्य { fmt.Println('नोड्स सूचीबद्ध करने में त्रुटि:', त्रुटि) वापस करना } fmt.Println('नोड्स:', नोड्स) }

इस उदाहरण में, निर्दिष्ट kubeconfig फ़ाइल से संदर्भ-नाम संदर्भ का उपयोग Kubernetes क्लस्टर से कनेक्ट करने के लिए किया जाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3