Terraform 0.11

kubernetes_service




terraform

kubernetes_service

एक सेवा एक अमूर्त है जो पॉड्स के एक तार्किक सेट और एक नीति को परिभाषित करती है जिसके द्वारा उन्हें एक्सेस किया जाता है - जिसे कभी-कभी माइक्रो-सर्विस भी कहा जाता है।

उदाहरण उपयोग

resource "kubernetes_service" "example" {
  metadata {
    name = "terraform-example"
  }
  spec {
    selector {
      app = "${kubernetes_pod.example.metadata.0.labels.app}"
    }
    session_affinity = "ClientIP"
    port {
      port = 8080
      target_port = 80
    }

    type = "LoadBalancer"
  }
}

resource "kubernetes_pod" "example" {
  metadata {
    name = "terraform-example"
    labels {
      app = "MyApp"
    }
  }

  spec {
    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

तर्क संदर्भ

निम्नलिखित तर्क समर्थित हैं:

नेस्टेड ब्लॉक

metadata

तर्क

  • annotations - (वैकल्पिक) मनमाने मेटाडेटा को संग्रहीत करने के लिए उपयोग की जा सकने वाली सेवा के साथ संग्रहित एक असंरक्षित कुंजी मान मानचित्र। अधिक जानकारी: http://kubernetes.io/docs/user-guide/annotations
  • generate_name - (वैकल्पिक) प्रीफ़िक्स, सर्वर द्वारा उपयोग किया जाता है, केवल एक अद्वितीय नाम उत्पन्न करने के लिए यदि name फ़ील्ड प्रदान नहीं किया गया है। इस मूल्य को एक अद्वितीय प्रत्यय के साथ भी जोड़ा जाएगा। और पढ़ें: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#idempotency
  • labels - (वैकल्पिक) स्ट्रिंग कुंजियों और मूल्यों का मानचित्र जिसे सेवा को व्यवस्थित और वर्गीकृत करने (गुंजाइश और चयन) के लिए इस्तेमाल किया जा सकता है। प्रतिकृति नियंत्रकों और सेवाओं के चयनकर्ताओं का मिलान कर सकते हैं। अधिक जानकारी: http://kubernetes.io/docs/user-guide/labels
  • name - (वैकल्पिक) सेवा का नाम, अद्वितीय होना चाहिए। अपडेट नहीं किया जा सकता। अधिक जानकारी: http://kubernetes.io/docs/user-guide/identifiers#names
  • namespace - (वैकल्पिक) नाम स्थान अंतरिक्ष को परिभाषित करता है जिसके भीतर सेवा का नाम अद्वितीय होना चाहिए।

गुण

  • generation - एक अनुक्रम संख्या जो वांछित राज्य की एक विशिष्ट पीढ़ी का प्रतिनिधित्व करती है।
  • resource_version - एक अपारदर्शी मूल्य जो इस सेवा के आंतरिक संस्करण का प्रतिनिधित्व करता है जिसका उपयोग क्लाइंट द्वारा यह निर्धारित करने के लिए किया जा सकता है कि सेवा कब बदल गई है। और पढ़ें: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#concurrency-control-and-consistency
  • self_link - इस सेवा का प्रतिनिधित्व करने वाला URL।
  • uid - इस सेवा के लिए समय और अंतरिक्ष मूल्य में अद्वितीय। अधिक जानकारी: http://kubernetes.io/docs/user-guide/identifiers#uids

spec

तर्क

  • cluster_ip - (वैकल्पिक) सेवा का आईपी पता। यह आमतौर पर मास्टर द्वारा यादृच्छिक रूप से सौंपा जाता है। यदि कोई पता मैन्युअल रूप से निर्दिष्ट किया गया है और दूसरों द्वारा उपयोग में नहीं है, तो यह सेवा को आवंटित किया जाएगा; अन्यथा, सेवा का निर्माण विफल हो जाएगा। जब प्रॉक्सी की आवश्यकता न हो तो हेडलेस सेवाओं के लिए None भी निर्दिष्ट None जा सकता है। यदि टाइप किया जाता है तो अनदेखा किया जाता है। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
  • external_ips - (वैकल्पिक) आईपी पतों की एक सूची जिसके लिए क्लस्टर में नोड्स भी इस सेवा के लिए ट्रैफ़िक स्वीकार करेंगे। ये IP Kubernetes द्वारा प्रबंधित नहीं हैं। उपयोगकर्ता यह सुनिश्चित करने के लिए ज़िम्मेदार है कि ट्रैफ़िक इस आईपी के साथ नोड पर आता है। एक सामान्य उदाहरण बाहरी लोड-बैलेन्सर्स हैं जो कुबेरनेट्स प्रणाली का हिस्सा नहीं हैं।
  • external_name - (वैकल्पिक) बाहरी संदर्भ जो kubedns या समकक्ष इस सेवा के लिए CNAME रिकॉर्ड के रूप में वापस आएगा। कोई भी सम्‍मिलित नहीं होगा। एक मान्य DNS नाम होना चाहिए और ExternalName नाम type करना होगा।
  • load_balancer_ip - (वैकल्पिक) केवल type = LoadBalancer पर लागू होता है। LoadBalancer इस क्षेत्र में निर्दिष्ट IP के साथ बनाया जाएगा। यह सुविधा इस बात पर निर्भर करती है कि लोड बैलेंसर बनाते समय अंतर्निहित क्लाउड-प्रदाता इस फ़ील्ड को निर्दिष्ट करने का समर्थन करता है या नहीं। यदि क्लाउड-प्रदाता सुविधा का समर्थन नहीं करता है तो इस फ़ील्ड को अनदेखा कर दिया जाएगा।
  • load_balancer_source_ranges - (वैकल्पिक) यदि प्लेटफ़ॉर्म द्वारा निर्दिष्ट और समर्थित है, तो यह क्लाउड-प्रदाता लोड-बैलेंसर के माध्यम से ट्रैफ़िक को प्रतिबंधित करेगा और निर्दिष्ट क्लाइंट IP पर प्रतिबंधित होगा। यदि क्लाउड-प्रदाता सुविधा का समर्थन नहीं करता है तो इस फ़ील्ड को अनदेखा कर दिया जाएगा। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services-firewalls
  • port - (आवश्यक) इस सेवा द्वारा उजागर होने वाले बंदरगाहों की सूची। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
  • selector - (वैकल्पिक) इस चयनकर्ता से मेल खाते कुंजी और मान के साथ पॉड्स के लिए ट्रैफ़िक सेवा ट्रैफ़िक। केवल ClusterIP , NodePort और LoadBalancer प्रकारों पर लागू होता है। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services#overview
  • session_affinity - (वैकल्पिक) सत्र आत्मीयता बनाए रखने के लिए प्रयुक्त। ClientIP और None का समर्थन करता है। किसी के लिए चूक। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
  • type - (वैकल्पिक) यह निर्धारित करता है कि सेवा कैसे उजागर हुई है। ClusterIP लिए चूक। वैध विकल्प ExternalName , NodePort , LoadBalancer और LoadBalancer । निर्दिष्ट external_name लिए ExternalName मानचित्र। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services#overview

port

तर्क

  • name - (वैकल्पिक) सेवा के भीतर इस बंदरगाह का नाम। सेवा के सभी बंदरगाहों में अद्वितीय नाम होने चाहिए। वैकल्पिक यदि केवल एक ServicePort इस सेवा पर परिभाषित किया गया है।
  • node_port - (वैकल्पिक) प्रत्येक नोड पर पोर्ट, जिस पर यह सेवा तब उजागर होती है जब type NodePort या LoadBalancer । आमतौर पर सिस्टम द्वारा सौंपा गया। यदि निर्दिष्ट किया जाता है, तो यह सेवा को आवंटित किया जाएगा यदि अप्रयुक्त या सेवा का निर्माण विफल हो जाएगा। यदि इस सेवा के type में किसी एक की आवश्यकता होती है, तो डिफ़ॉल्ट पोर्ट को ऑटो-आवंटित करना है। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services#type--nodeport
  • port - (आवश्यक) वह पोर्ट जो इस सेवा द्वारा उजागर किया जाएगा।
  • protocol - (वैकल्पिक) इस बंदरगाह के लिए आईपी प्रोटोकॉल। TCP और UDP का समर्थन करता है। डिफ़ॉल्ट TCP
  • target_port - (आवश्यक) सेवा द्वारा लक्षित पॉड्स तक पहुंचने के लिए पोर्ट का नंबर या नाम। संख्या 1 से 65535 तक होनी चाहिए। यह फ़ील्ड cluster_ip = "None" साथ सेवाओं के लिए अनदेखा है। अधिक जानकारी: http://kubernetes.io/docs/user-guide/services#defining-a-service

गुण

  • load_balancer_ingress - एक सूची जिसमें लोड-बैलेंसर के लिए अंक load_balancer_ingress (केवल यदि type = "LoadBalancer" तो मान्य है type = "LoadBalancer" )

load_balancer_ingress

गुण

  • ip - आईपी जो लोड-बैलेंसर इनग्रेन्स पॉइंट्स के लिए सेट किया गया है, जो कि आईपी आधारित हैं (आमतौर पर जीसीई या ओपनस्टैक लोड-बैलेंसर्स)
  • hostname - होस्टनाम जो लोड-बैलेंसर इंग्रेस बिंदुओं के लिए निर्धारित है जो DNS आधारित हैं (आमतौर पर AWS लोड-बैलेंसर)

आयात

सेवा को इसके नामस्थान और नाम, जैसे का उपयोग करके आयात किया जा सकता है

$ terraform import kubernetes_service.example default/terraform-name