Terraform 0.11

google_container_cluster




terraform

google_container_cluster

Google कुबेरनेट इंजन (GKE) क्लस्टर बनाता है। अधिक जानकारी के लिए आधिकारिक दस्तावेज और API

उदाहरण उपयोग

resource "google_container_cluster" "primary" {
  name               = "marcellus-wallace"
  zone               = "us-central1-a"
  initial_node_count = 3

  additional_zones = [
    "us-central1-b",
    "us-central1-c",
  ]

  master_auth {
    username = "mr.yoda"
    password = "adoy.rm"
  }

  node_config {
    oauth_scopes = [
      "https://www.googleapis.com/auth/compute",
      "https://www.googleapis.com/auth/devstorage.read_only",
      "https://www.googleapis.com/auth/logging.write",
      "https://www.googleapis.com/auth/monitoring",
    ]

    labels {
      foo = "bar"
    }

    tags = ["foo", "bar"]
  }
}

# The following outputs allow authentication and connectivity to the GKE Cluster.
output "client_certificate" {
  value = "${google_container_cluster.primary.master_auth.0.client_certificate}"
}

output "client_key" {
  value = "${google_container_cluster.primary.master_auth.0.client_key}"
}

output "cluster_ca_certificate" {
  value = "${google_container_cluster.primary.master_auth.0.cluster_ca_certificate}"
}

तर्क संदर्भ

  • name - (आवश्यक) परियोजना और क्षेत्र के भीतर, क्लस्टर का नाम।
  • zone - (वैकल्पिक) वह ज़ोन जिसमें मास्टर और नोड्स की संख्या initial_node_count में निर्दिष्ट की जानी चाहिए। zone और region से केवल एक सेट किया जा सकता है। यदि न तो ज़ोन और न ही क्षेत्र सेट किए जाते हैं, तो प्रदाता ज़ोन का उपयोग किया जाता है।

  • region (वैकल्पिक, Beta ) क्षेत्रीय क्लस्टर के लिए क्लस्टर बनाने के लिए क्षेत्र।

  • additional_zones - (वैकल्पिक) अतिरिक्त Google कंप्यूट इंजन स्थानों की सूची जिसमें क्लस्टर के नोड्स स्थित होने चाहिए। यदि अतिरिक्त ज़ोन कॉन्फ़िगर किए गए हैं, तो initial_node_count में निर्दिष्ट नोड्स की संख्या सभी निर्दिष्ट ज़ोन में बनाई गई है।

  • addons_config - (वैकल्पिक) GKE द्वारा समर्थित addons_config लिए कॉन्फ़िगरेशन। संरचना नीचे प्रलेखित है।

  • cluster_ipv4_cidr - (वैकल्पिक) इस क्लस्टर में कुबेरनेट्स पॉड्स का आईपी एड्रेस रेंज। डिफ़ॉल्ट स्वचालित रूप से असाइन किया गया CIDR है।

  • description - (वैकल्पिक) क्लस्टर का विवरण।

  • enable_kubernetes_alpha - (वैकल्पिक) इस क्लस्टर के लिए कुबेरनेट्स अल्फा सुविधाओं को सक्षम करना है या नहीं। ध्यान दें कि जब यह विकल्प सक्षम होता है, तो क्लस्टर को अपग्रेड नहीं किया जा सकता है और 30 दिनों के बाद स्वचालित रूप से हटा दिया जाएगा।

  • enable_legacy_abac - (वैकल्पिक) क्या ABAC enable_legacy_abac इस क्लस्टर के लिए सक्षम है। सक्षम होने पर, सिस्टम में पहचान, जिसमें सेवा खाते, नोड्स और नियंत्रक शामिल हैं, को आरबीएसी कॉन्फ़िगरेशन या आईएएम द्वारा प्रदान किए गए उन लोगों से परे सांख्यिकीय रूप से अनुमति दी जाएगी। false अवहेलना करता false

  • initial_node_count - (वैकल्पिक) इस क्लस्टर में बनाने के लिए नोड्स की संख्या (कुबेरनेट मास्टर सहित नहीं)। अगर node_pool सेट नहीं है तो सेट किया जाना चाहिए।

  • ip_allocation_policy - (वैकल्पिक) क्लस्टर IP आवंटन के लिए कॉन्फ़िगरेशन। अब तक, केवल पूर्व-आवंटित सबनेटवर्क (द्वितीयक श्रेणी के साथ कस्टम प्रकार) समर्थित हैं। यह आईपी एलियनों को सक्रिय करेगा। देखें आधिकारिक दस्तावेज संरचना नीचे प्रलेखित है।

  • logging_service - (वैकल्पिक) लॉगिंग सेवा जो क्लस्टर को लॉग लिखना चाहिए। उपलब्ध विकल्पों में logging.googleapis.com , logging.googleapis.com/kubernetes (beta), और none । Logging.googleapis.com पर डिफ़ॉल्ट

  • maintenance_policy - (वैकल्पिक) क्लस्टर के लिए उपयोग करने के लिए रखरखाव नीति। संरचना नीचे प्रलेखित है।

  • master_auth - (वैकल्पिक) Kubernetes मास्टर तक पहुँचने के लिए प्रमाणीकरण जानकारी। संरचना नीचे प्रलेखित है।

  • master_authorized_networks_config - (वैकल्पिक) मास्टर अधिकृत नेटवर्क के लिए वांछित कॉन्फ़िगरेशन विकल्प। बाहरी पहुँच को cidr_blocks करने के लिए नेस्टेड cidr_blocks विशेषता को cidr_blocks (क्लस्टर नोड cidr_blocks को छोड़कर, जो GKE स्वचालित रूप से श्वेतसूची में होता है)।

  • master_ipv4_cidr_block - (वैकल्पिक, Beta ) मास्टर की VPC के लिए एक निजी RFC1918 ब्लॉक निर्दिष्ट करता है। मास्टर रेंज को आपके क्लस्टर के VPC में किसी भी सबनेट के साथ ओवरलैप नहीं करना चाहिए। मास्टर और आपके क्लस्टर VPC peering का उपयोग करें। CIDR संकेतन में निर्दिष्ट होना चाहिए और /28 सबनेट होना चाहिए।

  • min_master_version - (वैकल्पिक) मास्टर का न्यूनतम संस्करण। GKE मास्टर को नए संस्करणों में ऑटो-अपडेट करेगा, इसलिए यह वर्तमान मास्टर संस्करण की गारंटी नहीं देता है - इसे प्राप्त करने के लिए केवल-पढ़ने के लिए master_version फ़ील्ड का उपयोग करें। यदि परेशान नहीं है, तो क्लस्टर का संस्करण जीकेके द्वारा सबसे हालिया आधिकारिक रिलीज के संस्करण में सेट किया जाएगा (जो जरूरी नहीं कि नवीनतम संस्करण है)।

  • monitoring_service - (वैकल्पिक) वह निगरानी सेवा जिसे क्लस्टर को मेट्रिक्स लिखना चाहिए। क्लस्टर में फली से स्वचालित रूप से Google क्लाउड मॉनिटरिंग एपीआई को मीट्रिक भेजें। VM मेट्रिक्स को Google कंप्यूट इंजन द्वारा एकत्रित किया जाएगा, इस सेटिंग की परवाह किए बिना उपलब्ध विकल्पों में शामिल हैं। monitoring.googleapis.com , monitoring.googleapis.com/kubernetes (बीटा) और nonemonitoring.googleapis.com लिए चूक

  • network - (वैकल्पिक) Google कंप्यूट इंजन नेटवर्क का नाम या स्वयं_लिंक जिससे क्लस्टर जुड़ा है। साझा VPC के लिए, इसे साझा नेटवर्क के स्वयं लिंक पर सेट करें।

  • network_policy - (वैकल्पिक) NetworkPolicy सुविधा के लिए कॉन्फ़िगरेशन विकल्प। संरचना नीचे प्रलेखित है।

  • node_config - (वैकल्पिक) क्लस्टर के नोड्स बनाने में उपयोग किए जाने वाले पैरामीटर। संरचना नीचे प्रलेखित है।

  • node_pool - (वैकल्पिक) इस क्लस्टर से जुड़े नोड पूल की सूची। स्कीमा के लिए google_container_node_pool देखें।

  • node_version - (वैकल्पिक) नोड्स पर कुबेरनेट्स संस्करण। या तो min_master_version होना चाहिए या बनाने के लिए min_master_version के समान मान पर सेट होना चाहिए। डिफ़ॉल्ट रूप से GKE द्वारा निर्धारित संस्करण की कमी जो जरूरी नवीनतम संस्करण नहीं है।

  • pod_security_policy_config - (वैकल्पिक, Beta ) PodSecurityPolicy सुविधा के लिए कॉन्फ़िगरेशन। संरचना नीचे प्रलेखित है।

  • private_cluster - (वैकल्पिक, Beta ) यदि सही है, तो एक निजी क्लस्टर बनाया जाएगा, जो मास्टर को सार्वजनिक इंटरनेट से अप्राप्य बनाता है और नोड्स को सार्वजनिक आईपी पते भी नहीं मिलते हैं। इस विकल्प के साथ master_ipv4_cidr_block और ip_allocation_policy निर्दिष्ट करना अनिवार्य है।

  • project - (वैकल्पिक) उस परियोजना की आईडी जिसमें संसाधन है। यदि यह प्रदान नहीं किया जाता है, तो प्रदाता परियोजना का उपयोग किया जाता है।

  • remove_default_node_pool - (वैकल्पिक) यदि सही है, तो क्लस्टर निर्माण पर डिफ़ॉल्ट नोड पूल को हटा देता है।

  • subnetwork - (वैकल्पिक) Google कंप्यूट इंजन सबनेटवर्क का नाम या self_link जिसमें क्लस्टर के इंस्टेंस लॉन्च किए जाते हैं।

addons_config ब्लॉक का समर्थन करता है:

  • horizontal_pod_autoscaling - (वैकल्पिक) क्षैतिज पॉड ऑटोकैसलिंग एडऑन की स्थिति, जो प्रतिकृति पॉड्स की संख्या में वृद्धि या घट जाती है एक प्रतिकृति नियंत्रक मौजूदा पॉड्स के संसाधन उपयोग के आधार पर होता है। यह सुनिश्चित करता है कि क्लस्टर में एक हैपस्टर पॉड चल रहा है, जिसका उपयोग क्लाउड मॉनिटरिंग सेवा द्वारा भी किया जाता है। इसे बाई दिफ़ौल्ट मर्थकृत किया गया है; disabled = true सेट करें disabled = true अक्षम करने के लिए disabled = true है।
  • http_load_balancing - (वैकल्पिक) HTTP (L7) लोड बैलेंस कंट्रोलर एडऑन की स्थिति, जिससे क्लस्टर में सेवाओं के लिए HTTP लोड बैलेंसर्स सेट करना आसान हो जाता है। इसे बाई दिफ़ौल्ट मर्थकृत किया गया है; disabled = true सेट करें disabled = true अक्षम करने के लिए disabled = true है।
  • kubernetes_dashboard - (वैकल्पिक) Kubernetes डैशबोर्ड की स्थिति ऐड-ऑन, जो यह नियंत्रित करती है कि इस क्लस्टर के लिए Kubernetes डैशबोर्ड सक्षम है या नहीं। इसे बाई दिफ़ौल्ट मर्थकृत किया गया है; disabled = true सेट करें disabled = true अक्षम करने के लिए disabled = true है।
  • network_policy_config - (वैकल्पिक) क्या हमें मास्टर के लिए नेटवर्क नीति एडऑन को सक्षम करना चाहिए। नोड्स के लिए नेटवर्क नीति को सक्षम करने के लिए इसे सक्षम किया जाना चाहिए। इसे केवल तभी अक्षम किया जा सकता है जब नोड्स में पहले से नेटवर्क नीतियां सक्षम न हों। अक्षम करने के लिए disabled = true सेट करें।

यह उदाहरण addons_config दो addons को निष्क्रिय करता है:

addons_config {
  http_load_balancing {
    disabled = true
  }
  horizontal_pod_autoscaling {
    disabled = true
  }
}

maintenance_policy ब्लॉक का समर्थन करता है:

  • daily_maintenance_window - (आवश्यक) दैनिक रखरखाव कार्यों के लिए निर्दिष्ट समय खिड़की। RFC3339 प्रारूप "HH: MM" में RFC3339 निर्दिष्ट करें, जहां HH: [00-23] और MM: [00-59] GMT। उदाहरण के लिए:
maintenance_policy {
  daily_maintenance_window {
    start_time = "03:00"
  }
}

ip_allocation_policy ब्लॉक का समर्थन करता है:

  • cluster_secondary_range_name - (वैकल्पिक) क्लस्टर CIDR ब्लॉक के लिए उपयोग की जाने वाली द्वितीय श्रेणी का नाम। पॉड आईपी एड्रेस के लिए सेकेंडरी रेंज का इस्तेमाल किया जाएगा। यह क्लस्टर उप-नेटवर्क से जुड़ी एक मौजूदा द्वितीयक श्रेणी होनी चाहिए।

  • services_secondary_range_name - (वैकल्पिक) CIDR ब्लॉक सेवाओं के लिए उपयोग की जाने वाली द्वितीयक श्रेणी का नाम है। द्वितीयक श्रेणी का उपयोग सेवा क्लस्टर के लिए किया जाएगा। यह क्लस्टर उप-नेटवर्क से जुड़ी एक मौजूदा द्वितीयक श्रेणी होनी चाहिए।

master_auth ब्लॉक का समर्थन करता है:

  • password - (आवश्यक) कुबेरनेट्स मास्टर एंडपॉइंट तक पहुंचते समय HTTP बेसिक प्रमाणीकरण के लिए उपयोग किया जाने वाला पासवर्ड

  • username - (आवश्यक) Kubernetes मास्टर समापन बिंदु तक पहुँचते समय HTTP मूल प्रमाणीकरण के लिए उपयोग करने वाला उपयोगकर्ता नाम

  • client_certificate_config - (वैकल्पिक) क्या क्लाइंट प्रमाणपत्र प्रमाणीकरण इस क्लस्टर के लिए सक्षम है। उदाहरण के लिए:

master_auth {
  client_certificate_config {
    issue_client_certificate = false
  }
}

यदि यह ब्लॉक प्रदान किया गया है और username और password दोनों खाली हैं, तो मूल प्रमाणीकरण अक्षम हो जाएगा। इस ब्लॉक में कई संगणित विशेषताएँ भी शामिल हैं, जिन्हें नीचे दर्ज़ किया गया है। यदि यह ब्लॉक प्रदान नहीं किया जाता है, तो GKE आपके लिए उपयोगकर्ता नाम admin साथ एक पासवर्ड उत्पन्न करेगा।

master_authorized_networks_config ब्लॉक समर्थन करता है:

  • cidr_blocks - (वैकल्पिक) 10 बाहरी नेटवर्क तक परिभाषित करता है जो HTTPS के माध्यम से कुबेरनेट्स मास्टर तक पहुंच सकता है।

master_authorized_networks_config.cidr_blocks ब्लॉक समर्थन करता है:

  • cidr_block - (वैकल्पिक) बाहरी नेटवर्क जो HTTPS के माध्यम से Kubernetes मास्टर तक पहुंच सकता है। CIDR संकेतन में निर्दिष्ट होना चाहिए।

  • display_name - (वैकल्पिक) उपयोगकर्ताओं को सीआईडीआर ब्लॉकों की पहचान करने के लिए फ़ील्ड।

network_policy ब्लॉक का समर्थन करता है:

  • provider - (वैकल्पिक) चयनित नेटवर्क नीति प्रदाता। PROVIDER_UNSPECIFIED की कमी।

  • enabled - (वैकल्पिक) क्या नेटवर्क नीति क्लस्टर पर सक्षम है। झूठे की अवहेलना करता है।

node_config ब्लॉक समर्थन करता है:

  • disk_size_gb - (वैकल्पिक) GB में निर्दिष्ट प्रत्येक नोड से जुड़े डिस्क का आकार। सबसे छोटी अनुमत डिस्क का आकार 10GB है। 100GB करने के लिए चूक।

  • guest_accelerator - (वैकल्पिक) उदाहरण के लिए एक्सीलरेटर कार्ड के प्रकार और गिनती की सूची। नीचे दिए गए दस्तावेज़।

  • image_type - (वैकल्पिक) इस नोड के लिए उपयोग करने के लिए छवि प्रकार।

  • labels - (वैकल्पिक) कुबेरनेट्स लेबल (कुंजी / मूल्य जोड़े) को प्रत्येक नोड पर लागू किया जाना है।

  • local_ssd_count - (वैकल्पिक) स्थानीय SSD डिस्क की मात्रा जो प्रत्येक क्लस्टर नोड से जुड़ी होगी। चूक ०।

  • machine_type - (वैकल्पिक) एक Google कंप्यूट इंजन मशीन प्रकार का नाम। n1-standard-1 लिए डिफ़ॉल्ट। कस्टम मशीन प्रकार बनाने के लिए, मान को here निर्दिष्ट किया जाना चाहिए।

  • metadata - (वैकल्पिक) क्लस्टर में उदाहरण के लिए सौंपी गई मेटाडेटा कुंजी / मान जोड़े।

  • min_cpu_platform - (वैकल्पिक) न्यूनतम सीपीयू मंच इस उदाहरण द्वारा उपयोग किया जाना है। उदाहरण निर्दिष्ट या नए CPU प्लेटफ़ॉर्म पर शेड्यूल किया जा सकता है। लागू मूल्य CPU प्लेटफ़ॉर्म के अनुकूल नाम हैं, जैसे Intel Haswell । अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें।

  • oauth_scopes - (वैकल्पिक) "डिफ़ॉल्ट" सेवा खाते के तहत सभी नोड वीएम पर Google एपीआई स्कोप का सेट उपलब्ध कराया जाना है। ये या तो FQDNs हो सकते हैं, या स्कोप एलियन्स। क्लस्टर के सही कामकाज को सुनिश्चित करने के लिए निम्नलिखित स्कोप आवश्यक हैं:

    • compute-rw ( https://www.googleapis.com/auth/compute )
    • storage-ro ( https://www.googleapis.com/auth/devstorage.read_only )
    • logging-write ( https://www.googleapis.com/auth/logging.write ), अगर logging_service Google को इंगित करता है
    • monitoring ( https://www.googleapis.com/auth/monitoring ), अगर monitoring_service सर्विस Google को इंगित करती है
  • preemptible - (ऑप्शनल) एक बूलियन जो यह दर्शाता है कि अंतर्निहित नोड वीएम प्रीमेप्टेबल हैं या नहीं। अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें। झूठे की अवहेलना करता है।

  • service_account - (वैकल्पिक) नोड वीएम द्वारा उपयोग किया जाने वाला सेवा खाता। यदि निर्दिष्ट नहीं है, तो "डिफ़ॉल्ट" सेवा खाता उपयोग किया जाता है।

  • tags - (वैकल्पिक) सभी नोड्स पर लागू उदाहरण टैग की सूची। टैग का उपयोग नेटवर्क फ़ायरवॉल के लिए वैध स्रोतों या लक्ष्यों की पहचान करने के लिए किया जाता है।

  • taint - (वैकल्पिक, Beta ) प्रत्येक नोड पर लागू करने के लिए kubernetes taints की सूची। संरचना नीचे प्रलेखित है।

  • workload_metadata_config पर कार्यभार को बेनकाब करने के लिए workload_metadata_config - (ऑप्शनल) मेटाडेटा कॉन्फ़िगरेशन। संरचना नीचे प्रलेखित है।

guest_accelerator ब्लॉक का समर्थन करता है:

  • type (आवश्यक) - इस उदाहरण को उजागर करने के लिए त्वरक प्रकार संसाधन। उदा nvidia-tesla-k80

  • count (आवश्यक) - इस उदाहरण के सामने आने वाले अतिथि त्वरक कार्ड की संख्या।

pod_security_policy_config ब्लॉक समर्थन करता है:

  • enabled (आवश्यक) - इस क्लस्टर के लिए PodSecurityPolicy नियंत्रक सक्षम करें। यदि सक्षम किया गया है, तो पॉड्स को एक पॉडसेक्रिटी के तहत वैध होना चाहिए।

taint ब्लॉक का समर्थन करता है:

  • key (आवश्यक) टेंट के लिए कुंजी।

  • value (आवश्यक) टेंट के लिए मूल्य।

  • effect (आवश्यक) दागी के लिए प्रभाव। स्वीकृत मान NO_SCHEDULE , PREFER_NO_SCHEDULE और NO_EXECUTE

workload_metadata_config ब्लॉक सपोर्ट करता है:

  • node_metadata (आवश्यक) नोड पर चल रहे कार्यभार में नोड मेटाडेटा को कैसे उजागर करें। स्वीकृत मूल्य हैं:
    • UNSPECIFIED: सेट नहीं
    • सुरक्षित: कुछ वीएम मेटाडेटा, विशेष रूप से क्यूब-एनवी, जिसमें क्यूबलेट क्रेडेंशियल्स और उदाहरण पहचान टोकन शामिल हैं, तक पहुँचने से hostNetwork में कार्यभार को रोकें नहीं। मेटाडेटा कंसॉलिडेशन प्रलेखन देखें।
    • विस्तार: सभी वीएम मेटाडेटा को पॉड्स से बाहर करें।

संदर्भ संदर्भित करता है

ऊपर सूचीबद्ध तर्कों के अलावा, निम्नलिखित गणना की गई विशेषताएँ निर्यात की जाती हैं:

  • endpoint - इस क्लस्टर के कुबेरनेट्स मास्टर का आईपी पता।

  • instance_group_urls - उदाहरण समूह URL की सूची जो क्लस्टर को सौंपी गई है।

  • maintenance_policy.0.daily_maintenance_window.0.duration - दिए गए परिदृश्य में सबसे छोटी संभव होने के लिए स्वचालित रूप से चुनी गई समय विंडो की अवधि। अवधि RFC3339 प्रारूप "PTnHnMnS" में होगी।

  • master_auth.0.client_certificate - Base64 ग्राहकों द्वारा क्लस्टर समापन बिंदु को प्रमाणित करने के लिए उपयोग किए गए सार्वजनिक प्रमाणपत्र को एन्कोड किया गया।

  • master_auth.0.client_key - Base64 ग्राहकों द्वारा क्लस्टर समापन बिंदु को प्रमाणित करने के लिए उपयोग की गई निजी कुंजी को एन्कोड किया गया है।

  • master_auth.0.cluster_ca_certificate - Base64 सार्वजनिक प्रमाणपत्र को एन्कोड किया गया जो क्लस्टर के लिए विश्वास का मूल है।

  • master_version - क्लस्टर में मास्टर का वर्तमान संस्करण। यदि यह GKE द्वारा अद्यतन किया गया है, तो यह config में min_master_version सेट से भिन्न हो सकता है।

समय समाप्ति

google_container_cluster निम्नलिखित Timeouts कॉन्फ़िगरेशन विकल्प प्रदान करता है:

  • create - (डिफ़ॉल्ट 30 minutes ) समूहों के लिए इस्तेमाल किया
  • update - (डिफ़ॉल्ट 10 minutes ) समूहों के अपडेट के लिए प्रयुक्त
  • delete - (डिफ़ॉल्ट 10 minutes ) समूहों को नष्ट करने के लिए प्रयुक्त।

आयात

GKE क्लस्टर को project , zone या region और name का उपयोग करके आयात किया जा सकता है। यदि परियोजना को छोड़ दिया जाता है, तो डिफ़ॉल्ट प्रदाता मूल्य का उपयोग किया जाएगा। उदाहरण:

$ terraform import google_container_cluster.mycluster my-gcp-project/us-east1-a/my-cluster

$ terraform import google_container_cluster.mycluster us-east1-a/my-cluster