تكوين الوحدات النمطية Terraform

الموارد الضرورية لهذا الحل محددة في وحدات Terraform

قبل البدء

قبل بدء تكوين الوحدات النمطية Terraform، أكمل الخطوات التالية:

  1. تعرف على أساسيات Terraform.

    على الحد الأدنى، اطلع على مقدمة في وثائق نموذج Terrraform.

  2. اجعل المعلومات التالية جاهزة:
    • Ocd للأرض المستأجرة الخاصة بك.

      يمكنك العثور على OCID الخاص بالأرض المستأجرة في وحدة تحكم ويب Oracle Cloud Infrastructure. حدد الإدارة من قائمة الخدمات ثم انقر تفاصيل الأرض المستأجرة.

    • OCID الخاص بالمستخدم الذي تريد استخدام Terraform للتصديق في Oracle Cloud Infrastructure.

      للعثور على Ocd للمستخدم، حدد هوية من قائمة الخدمات، ثم حدد المستخدمون. حدد موقع اسم المستخدم في القائمة، وانسخ Ocd الخاص به.

    • معرف Ocd للمقارنة التي تريد تكوين الموارد بها.

      للعثور على OCID بمقارنة، حدد هوية من قائمة الخدمات، ثم حدد مقارنات. حدد موقع المقارنة الذي تحتاجه في القائمة وانسخ Ocd الخاص به.

    • معرف المنطقة التي تريد تكوين الموارد فيها.

      على سبيل المثال، معرف المنطقة الشرقية للولايات المتحدة (Ashburn) هو us-ashburn-1.

      راجع المناطق ونطاقات الإتاحة.

  3. حدد ما يلي:
    • Ocds الخاصة بالصور التي تريد استخدامها لمضيفين الأساس والإدارة.
      الصورة الافتراضية المعرفة في تكوين Terraform لمضيف الأساسي هي صورة Oracle Autonomous Linux. إذا كنت تريد استخدام صورة مختلفة، فقم بتعريف OCID للصورة التي تحتاج إليها.
      • للعثور على OCID لصورة مخصصة، سجل الدخول إلى وحدة تحكم ويب Oracle Cloud Infrastructure، حدد Compute من قائمة الخدمة، ثم حدد صور مخصصة.
      • للعثور على Ocd لصورة مقيدة بـ Oracle، أكمل الخطوات التالية:
        1. انتقل إلى صور Oracle Cloud.
        2. في جزء الاستكشاف على اليمين، حدد مجموعة صور (على سبيل المثال، Oracle Linux 7.x).
        3. في الصفحة الناتجة، قم بالتمرير لأسفل إلى إصدار الصورة الذي تريد استخدامه، ثم انقر عليها (على سبيل المثال،Oracle- inux - 7.7-2019.09.25-0).
        4. في الصفحة الناتجة، قم بالتمرير لأسفل وصولاً إلى قسم OCIDs للصورة.
        5. انسخ OCID المطابق للمنطقة التي تريد تكوين مضيف قاعدة بيانات بها.

          يشتمل OCID للصورة على معرف المنطقة التي يمكن استخدام الصورة بها. على سبيل المثال، يمكن أن تكون صيغة OCIDs الخاصة بالصور في المنطقة المركزية لألمانيا (Frankfurt) بالصيغة ocid1.image.oc1.eu-frankfurt-1.aaaaaaaaxxx… تحقق من نسخ OCID للصورة الخاصة بالمنطقة التي تريد تكوين الموارد بها.

    • المنطقة الزمنية لاستضافة الاستعداد والإدارة.

      في أنظمة التشغيل unix، يمكنك الحصول على قائمة بالمناطق الزمنية عن طريق تشغيل الأمر: timedatectl list-timezones

    • شكل الحساب المطلوب استخدامه لمضيف قاعدة البيانات ومضيف المسئول ونقاط توصيل عامل Kubernetes.

      يرجى الاطلاع على حساب الأشكال.

  4. استكمل المتطلبات الأساسية لتكوين مجموعات Kubernetes في Oracle Cloud Infrastructure. يرجى الاطلاع على إعداد مشغل الحاوية لـ Kubernetes.
  5. (اختياري) تعد هذه الخطوة مطلوبة إذا كنت تنوي سحب صور التطبيقات المحفوظة في حاوية من مخزن خاص في Oracle Cloud Infrastructure Registry.
    1. إنشاء مقطع تصديق لاسم المستخدم الذي يجب استخدامه لسحب الصور من Oracle Cloud Infrastructure Registry. راجع إحضار مقطع تصديق.
    2. تخزين مقطع التصديق الذي قمت بإنشائه كمساحة سرية في Oracle Cloud Infrastructure Vault. يرجى الاطلاع على إدارة الأقسام.

تحميل رمز المنطقة

رمز المنطقة لهذا الحل متاح على GitHub.

  1. في جزء الاستكشاف على اليمين، انقر على تنزيل رمز.
  2. انقر على Git Repo.
  3. استنساخ المخزن أو تنزيله إلى جهاز الكمبيوتر المحلي.

حول رمز المنطقة

تم تنظيم رمز المنطقة لهذا الحل إلى وحدات قابلة لإعادة الاستخدام، ويحتوي كل منها على الموارد الخاصة بمكون معين من المنظومة الهدف.

يتيح ترميز موارد السحابة في ملفات تكوين Terraform توفير المنظومة بشكل سريع وإدارة الموارد بكفاءة.

تحتوي التعليمات البرمجية Terraform على الأدلة والملفات التالية عند المستوى الأعلى:
  • الدليل docs و*.adoc: وثائق الرمز. يتم تضمين كل المعلومات والإرشادات التي تحتاج إليها في الوثائق التي تقرأ الآن. لن تحتاج إلى الرجوع إلى الوثائق المضمنة في الرمز.
  • *.tf: ملفات تكوين Terraform التي يستخدمها الحل. لا تقم بتحرير هذه الملفات.
  • terraform.tfvars.example: قالب سيتم استخدامه لتكوين ملف متغيرات Terraform. لا تقم بتحرير النموذج أو إزالته. نسخ إلى terraform.tfvars
  • modules: الأدلة التي تحتوي على تكوينات Terraform الأساسية للموارد التي تقوم بتكوينها باستخدام هذا الحل. لا تقم بتحريرها.
  • .github الدليل و.gitignore: ملفات تكوين Github الداخلية. لا تقم بتحريرها.

تعيين متغيرات المنطقة

حدد المعلمات المطلوبة لـ Terraform للاتصال بـ Oracle Cloud Infrastructure tenancy. أيضًا حدد معلمات الشبكة وسمات مضيف البنية الأساسية ومضيف الإدارة وإعدادات Kubernetes.

  1. في دليل المستوى العلوي للرمز الذي قمت بتنزيله أو نسخه، قم بتكوين ملف نص عادي باسم provider.tf، والذي يحتوي على الرمز التالي:
    provider "oci" {
      tenancy_ocid         = var.tenancy_id
      user_ocid            = var.user_id
      fingerprint          = var.api_fingerprint
      private_key_path     = var.api_private_key_path
      region               = var.region
      disable_auto_retries = var.disable_auto_retries
    }
  2. حدد موقع ملف terraform.tfvars.example في دليل المستوى العلوي للرمز الذي قمت بتنزيله أو نسخه إلى terraform.tfvars

    ملاحظة:

    لإدارة الموارد في العديد من الأراضي المستأجرة، الاحتفاظ بملف terraform.tfvars منفصل لكل أرض مستأجرة.
  3. تأكد من إتمام المتطلبات المسبقة الموضحة مسبقًا. يرجى الاطلاع على قبل البدء.
  4. افتح terraform.tfvars في محرر النص العادي، وقم بتعيين قيم للمتغيرات كما يلي:
    متغير الوصف
    api_fingerprint (مطلوب) بصمة مفتاح توقيع API الذي قمت بتحميله.
    api_private_key_path (مطلوب) المسار الكامل واسم الملف الذي يحتوي على مفتاح توقيع API الخاص بك.
    compartment_id (مطلوب) معرف Ocd للمقارنة التي تريد تكوين الموارد بها.
    tenancy_id (مطلوب) Ocd للأرض المستأجرة الخاصة بك.
    user_id (مطلوب) OCID الخاص بالمستخدم الذي تريد استخدام Terraform للتصديق في Oracle Cloud Infrastructure.
    ssh_private_key_path المسار الكامل واسم الملف الذي يحتوي على مفتاح SSH الخاص المطابق للمفتاح العام الذي تريد توفيره لمضيف البنية الأساسية.

    تستخدم هذه القيمة لإنشاء الأمر ssh الذي يمكنك استخدامه للوصول إلى مضيف الأساس. يتم عرض الأمر ssh في المخرجات عند تطبيق تكوين Terraform. لاحظ أن Terraform لا يقرأ أو ينسخ المفتاح الخاص.

    ssh_public_key_path المسار الكامل واسم الملف الذي يحتوي على مفتاح SSH العام الذي تريد توفيره لمضيف البنية الأساسية.
    label_prefix المعرف المختصر الذي تريد استخدامه كبادئة في أسماء الموارد.

    استخدم سلسلة تساعدك على تحديد الغرض أو طبيعة الموارد من خلال البحث عن اسمها. على سبيل المثال، إذا كنت ترغب في استخدام تكوين Terraform لإعداد بيئة اختبار أو تجهيز، فافكر في استخدام البادئة test أو staging.

    region معرف المنطقة التي تريد تكوين الموارد فيها.

    على سبيل المثال، معرف المنطقة الشرقية للولايات المتحدة (Ashburn) هو us-ashburn-1.

    nat_gateway_enabled حدد true لتكوين جيت واي nam لـ VCN.

    تكون جيت واي NAT مطلوبة إذا كان أحد طبعات الحساب الخاص (مثل مضيف المسئول أو نقاط توصيل عامل Kubernetes) بحاجة إلى الوصول إلى مضيفين على الإنترنت العام.

    newbits وnetnum عند تطبيق التكوين، يقوم Terraform بتمرير قيم newbits وnetnum كوسائط إلى دالة Terraform cidrsubnet(). تقوم هذه الدالة بحساب بادئات CIDR للتخطيطات الفرعية لمضيف الأساس ومضيف الإدارة ونقاط توصيل رصيد التحميل ونقاط توصيل عامل Kubernetes.
    • newbits تستخدم لتحديد حجم الشبكة الفرعية. يمثل الفرق بين قناع شبكة الاتصال VCN وقناع الشبكة netmask الذي تحتاجه للشبكة الفرعية للبناء.

      على سبيل المثال ، لتكوين شبكة فرعية وقناع الصافي /29 في/16 VCN ، حدد 13 كقيمة 10 بت (أي 29 ناقص 16 ).

      ينتج عن قيمة newbits الأقل صافي فرعي بمسافة عنوان أكبر.

    • netnum تستخدم لتحديد حدود الشبكة الفرعية. إنه الفهرس المستند إلى الصفر للشبكة الفرعية عند إخفاء الشبكة بـ newbits.

      مع المثال السابق، إذا قمت بتحديد newbits=13 وnetnum=0، فإن الدالة cidrsubnet() تُرجع بادئة subnet CIDR هي مساحة العنوان 10.0.0.0/29، وهي مساحة العنوان /29 الأولى في 10.0.0.0/16.

    القيم الافتراضية:
    netnum = {
      admin   = 33
      bastion = 32
      int_lb  = 16
      pub_lb  = 17
      workers = 1
    }
    
    newbits = {
      admin   = 13
      bastion = 13
      lb      = 11
      workers = 2
    }
    إذا تركت هذه المتغيرات في القيم الافتراضية وقمت بتحديد 10.0.0.0/16 على أنه نطاق CIDR لـ VCN، فإن دالة Terraform cidrsubnet() تحسب بادئات CIDR التالية للتصفية الفرعية. تظهر العناوين المتاحة بين أقواس. لاحظ أن أول عنوانين وآخر عنوان في شبكة فرعية تم حجزه بواسطة خدمة الشبكات.
    • شبكة الأساس الفرعية: 10.0.1.0/29 (العناوين المتاحة: 10.0.1.2 إلى 10.0.1.6، أي 5 مضيفات)
    • الشبكة الفرعية للإدارة: 10.0.1.8/29 (10.0.1.10 إلى 10.0.1.14؛ 5 مضيف)
    • الشبكة الفرعية لموازن التحميل الداخلي: 10.0.2.0/27 (10.0.2.2 إلى 10.0.2.30; 29 نقطة توصيل)
    • الشبكة الفرعية لموازن التحميل العام: 10.0.2.32/27 (10.0.2.34 إلى 10.0.2.62; 29 نقطة توصيل)
    • الشبكة الفرعية لنقاط توصيل Kubernetes Worker: 10.0.64.0/18 (10.0.64.2 to 10.0.127.254; 16381 nodes)

    إذا كنت بحاجة إلى عناوين أو أحجام فرعية مختلفة عن الإعدادات الافتراضية، فيجب تحديد القيم المناسبة لـ newbits وnetnum. وللقيام بذلك، يجب أن يكون لديك معرفة أساسية حول عناوين IP دون فئات. يرجى الاطلاع على وثائق Terraform الخاصة بدالة cidrsubnet().

    تأكد من أن كتل CIDR التي قمت بتحديدها هنا لا تتداخل مع قطعة CIDR التي تحددها من أجل Kubernetes pods (pods_cidr).

    service_gateway_enabled حدد true لتكوين جيت واي خدمة لـ VCN.

    يلزم توفير جيت واي خدمة إذا كانت طبعات الحساب في VCN تحتاج للوصول إلى خدمات Oracle أخرى مثل Oracle Cloud Infrastructure Object Storage.

    vcn_cidr كتلة IPv4 CIDR من اختيارك لـ VCN.

    القيمة الافتراضية هي 10.0.0.0/16. النطاق المسموح به هو /16 إلى /30

    تأكد من أن كتلة CIDR التي تحددها هنا لا تتداخل مع كتلة CIDR التي تحددها لخدمات Kubernetes (services_cidr).

    vcn_dns_label بادئة الاسم لاسم DNS الداخلي الخاص بـ VCN.

    يكون الاسم الذي تقوم بتحديده هنا مسبوقًا بـ oraclevcn.com لتكوين اسم نطاق DNS الخاص بـ VCN. على سبيل المثال، إذا قمت بتحديد oke كبادئة، فسيكون اسم نطاق DNS الخاص بـ VCN هو oke.oraclevcn.com

    vcn_name اسم مورد Vvcn.
    bastion_access نطاق عناوين IP (في مجموعة رموز CIDR) التي يجب أن يتم من خلالها السماح بوصول SSH إلى الأساس.

    للسماح بوصول SSH من أي مضيف (أي 0.0.0.0/0)، اترك المتغير على قيمته الافتراضية، ANYWHERE.

    bastion_enabled حدد true لتكوين مضيف قاعدة بيانات.
    bastion_image_id معرف Ocd للصورة المطلوب استخدامها لتكوين مضيف قاعدة البيانات.

    إذا تركت هذا المتغير في القيمة الافتراضية، NONE، فسيتم استخدام صورة Oracle Autonomous Linux.

    bastion_notification_enabled يمكنك استخدام خدمة إشعار Oracle Cloud Infrastructure لاستلام رسائل الحالة من مضيف الأساسي عند تطبيق التحديثات أو عند اكتشاف محاولة توسيع معروفة بواسطة Oracle Ksplice.
    حدد true لتمكين إرسال إشعارات إلى مضيف قاعدة البيانات.

    ملاحظة:

    يقوم رمز Terraform في هذا الحل بتكوين إشعارات لمضيف الأساسي فقط عند استخدام صورة Oracle Autonomous Linux الافتراضية.
    bastion_notification_endpoint عنوان البريد الإلكتروني الذي يجب إرسال التبليغات إليه. وهذا المتغير ضروري إذا قمت بتعيين bastion_notification_enabled إلى true.
    bastion_notification_protocol قم بتعيين هذا المتغير إلى EMAIL.
    bastion_notification_topic اسم موضوع التبليغ المطلوب تكوينه. وهذا المتغير ضروري إذا قمت بتعيين bastion_notification_enabled إلى true.
    bastion_package_upgrade حدد true إذا كنت تريد ترقية حزم التأمين الخاصة بمضيف الأساسي للمرة الأولى التي تتم فيها ترقية رموز المضيف.

    لاحظ أنه عند تعيين هذا المتغير إلى true، وبعد تزويد مضيف الأساسي، فلن يكون متاحًا لفترة قصيرة أثناء ترقية حزم التأمين. لكن مع تمكين هذه الترقية يؤدي إلى تقليل إمكانات مضيف الإعداد.

    bastion_shape شكل الحساب الذي تريد استخدامه لمضيف قاعدة البيانات.
    bastion_timezone المنطقة الزمنية اللازمة لتكوين مضيف قاعدة البيانات، بصيغة المنطقة الزمنية IANA (على سبيل المثال، America/Los_Angeles).
    admin_enabled حدد true لتكوين مضيف مسئول.
    admin_image_id معرف Ocd للصورة المطلوب استخدامها لتكوين مضيف قاعدة البيانات.

    وفي حالة ترك هذا المتغير بالقيمة الافتراضية، NONE، يتم استخدام صورة نظام Linux مدمجة بواسطة Oracle.

    admin_instance_principal حدد true إذا أردت تمكين مضيف المسئول من إدارة كل الموارد في المقارنة التي تحددها.
    استخدم هذه السمة إذا كنت تنوي تشغيل أوامر CLI أو إجراء استدعاءات API من مضيف المسئول لإدارة الموارد في المنظومة.

    ملاحظة:

    يقوم أي مستخدم يمكنه الاتصال بطبعة حساب باستخدام SSH باكتساب امتيازات طباعة الطبعة الممنوحة للطبعة. ضع في اعتبارك ذلك عند تحديد ما إذا كان سيتم تعيين مضيف المسئول كعملية رئيسية للطبعة. يمكنك إيقاف تشغيل هذه الميزة أو تشغيلها في أي وقت دون أي تأثير على مضيف المسئول.

    في حالة تعيين هذا المتغير إلى true، فسيكون مضيف المسئول عضوًا في مجموعة ديناميكية ويتم تكوين جملة نظام للسماح للمجموعة الديناميكية بإدارة كل الموارد في الأقسام.

    admin_notification_enabled

    admin_notification_endpoint

    admin_notification_protocol

    admin_notification_topic

    اترك هذه المتغيرات في القيم الافتراضية. تمكين الإشعارات لمضيف المسئول غير مدعوم حاليًا في رمز Terraform.
    admin_package_upgrade حدد true إذا كنت تريد ترقية حزم التأمين الخاصة بمضيف المسئول للمرة الأولى التي تتم فيها ترقية رموز المضيف.

    لاحظ أنه عند تعيين هذا المتغير إلى true، وبعد توفير مضيف المسئول، فلن يكون متاحًا لفترة قصيرة أثناء ترقية حزم التأمين. لكن مع تمكين هذه الترقية يؤدي إلى تقليل قدرات المسعفة لمضيف المسئول.

    admin_shape شكل الحساب الذي تريد استخدامه لمضيف المسئول.
    admin_timezone المنطقة الزمنية اللازمة لتكوين مضيف المسئول، بصيغة المنطقة الزمنية IANA (على سبيل المثال، America/Los_Angeles).
    availability_domains نطاق الإتاحة الذي تريد إعداد مضيفي الإدارة والأساس به.

    على سبيل المثال، لتزويد مضيف قاعدة البيانات في نطاق التوفر الثاني، قم بتعيين bastion = 2.

    إذا كانت المنطقة التي حددتها تحتوي على نطاق إتاحة واحد فقط، فيجب ترك هذا المتغير بالقيمة الافتراضية، 1.

    tagging حدد العلامات التي تريد تعيينها للموارد الحسابية والشبكات.
    allow_node_port_access حدد true إذا أردت السماح لحركة مرور TCP لنقاط توصيل عامل Kubernetes عند نشرها في الوضع العام.
    allow_worker_ssh_access حدد true إذا كنت تريد السماح باتصالات SSH بنقاط توصيل عامل Kubernetes من خلال مضيف قاعدة البيانات.

    لاحظ أنه حتى في حالة نشر نقاط توصيل العامل في الوضع العام، يجب أن يتم إرسال اتصالات SSH من خلال مضيف قاعدة البيانات.

    إذا قمت بتعيين هذا المتغير إلى true، فيجب عليك أيضًا تعيين bastion_enabled = true.

    cluster_name اسم مجموعة Kubernetes.
    dashboard_enabled حدد true إذا أردت تكوين لوحة تحكم Kubernetes الافتراضية.
    kubernetes_version إصدار Kubernetes المطلوب استخدامه لنقاط توصيل العامل.

    في حالة ترك هذا المتغير بالقيمة الافتراضية، LATEST، يتم تحديد أحدث إصدار مدعوم. لاستخدام إصدار معين، حدد ذلك الإصدار.

    node_pools عدد مجمعات نقاط التوصيل المطلوب تكوينها وحجم كل مجمع وشكل الحساب المطلوب استخدامه لنقاط توصيل العامل بالصيغة التالية:
    node_pools = {
      "np1" = ["computeShape", numberOfNodes]
      "np2" = ["computeShape", numberOfNodes]
      "np3" = ["computeShape", numberOfNodes]
      ...
    }
    • np1 وnp2 وnp3 هما أسماء إجبارية تمثل مجمعات نقاط التوصيل الفردية.
    • computeShape هو شكل الحساب المطلوب استخدامه لنقاط توصيل العامل في المجمع.
    • numberOfNodes هو عدد نقاط توصيل عامل Kubernetes المطلوب تكوينها في المجمع. يتم تكوين ثلاث نقاط توصيل كحد أدنى في كل مجمع، حتى في حالة تحديد قيمة أدنى.
    فيما يلي المثال لمجموعة تتألف من المجموعتين، كل منها باستخدام شكل حساب مختلف ويشتمل على عدد مختلف من نقاط توصيل Kubernetes للعامل:
    node_pools = {
      "np1" = ["VM.Standard2.1", 3]
      "np2" = ["VM.Standard2.2", 5]
    }
    node_pool_name_prefix بادئة الاسم لمجمعات نقاط التوصيل.

    ويتم إنشاء أسماء مجمعات نقاط التوصيل عن طريق ربط قيم label_prefix وnode_pool_name_prefix ورقم مجمع نقاط التوصيل. على سبيل المثال، إذا قمت بتحديد label_prefix = "prod" وnode_pool_name_prefix = "np"، فستكون الأسماء المنشأة لمجمعات نقاط التوصيل هي prod-np-1 وprod-np-2 وprod-np-3، وما إلى ذلك.

    node_pool_image_id Ocd للصورة المطلوب استخدامها لنقاط توصيل عامل Kubernetes.

    إذا تركت هذا المتغير بالقيمة الافتراضية، NONE، عندئذ يتم استخدام صورة تطابق القيم التي تحددها من أجل node_pool_os وnode_pool_os_version.

    node_pool_os نظام التشغيل الذي يجب استخدامه لنقاط توصيل عامل Kubernetes (على سبيل المثال، "Oracle Linux").

    يتم اعتبار هذا الإعداد في حالة تعيين node_pool_image_id = "NONE"

    node_pool_os_version إصدار نظام التشغيل الذي يجب استخدامه لنقاط توصيل عامل Kubernetes (على سبيل المثال، "7.7").

    يتم اعتبار هذا الإعداد في حالة تعيين node_pool_image_id = "NONE"

    pods_cidr كتلة IPv4 CIDR من اختيارك لأجل Kubernetes pod.

    تأكد من أن كتلة CIDR التي تحددها هنا لا تتداخل مع كتلة CIDR التي تحددها لـ VCN (vcn_cidr).

    services_cidr كتلة IPv4 CIDR من اختيارك لأجل Kubernetes pod.

    تأكد من أن كتلة CIDR التي تحددها هنا لا تتداخل مع كتلة CIDR التي تحددها لـ VCN (vcn_cidr).

    worker_mode حدد public إذا كان يجب الوصول إلى نقاط توصيل العامل من الإنترنت العام. وإلا، قم بتعيين هذا المتغير إلى private.

    إذا قمت بتعيين worker_mode = "private"، فقم بتعيين nat_gateway_enabled = true

    lb_subnet_type وpreferred_lb_subnets تحدد القيم التي تحددها لـ lb_subnet_type وpreferred_lb_subnets نوع صافي القيم الفرعية التي يجب استخدامها لأية نقاط توصيل رصيد تحميل يتم توزيعها باستخدام خدمة Kubernetes من نوع LoadBalancer.

    تحتوي توازن التحميل العام على عناوين IP عامة يكون لموازن التحميل الداخلي عناوين IP خاصة فقط ولا يمكن الوصول إليها من الإنترنت العام

    • إذا كنت تنوي استخدام رصيد تحميل عمومي، فقم بتعيين preferred_lb_subnet = "public" وsubnet_type إلى "both" أو "public"
    • إذا كنت تنوي استخدام رصيد تحميل داخلي، فقم بتعيين preferred_lb_subnet = "internal" وsubnet_type إلى "both" أو "internal"

      حتى في حالة تعيين صافي رصيد التحميل الفرعي على أنه داخلي، يجب تعيين التعليقات التوضيحية المناسبة (مثل service.beta.kubernetes.io/oci-load-balancer-internal: "true") عند تكوين خدمات رصيد تحميل داخلية. لا يكفي إعداد المقاييس الفرعية على القيمة خاص

      للحصول على معلومات حول تكوين رصيد تحميل داخلي، راجع وثائق Oracle Cloud Infrastructure.

    secret_id معرف كلمة السر في خدمة Oracle Cloud Infrastructure Vault، حيث يتم تخزين مقطع التصديق المطلوب استخدامه لسحب صور التطبيق من Oracle Cloud Infrastructure Registry.
    يجب إعداد ما يلي أيضًا:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    email_address عنوان البريد الإلكتروني المراد استخدامه عند إنشاء البيانات السرية لـ Docker. يجب إدخال عنوان بريد إلكتروني، ولكن لا يهم ما تحدده.

    يكون هذا المتغير مطلوبًا إذا قمت بتحديد secret_id.

    tenancy_name مساحة اسم Oracle Cloud Infrastructure Object Storage الخاصة بالأرض المستأجرة التي تحتوي على السجل الذي يجب سحب الصور منه للتوزيع إلى مجموعة Kubernetes.

    يكون هذا المتغير مطلوبًا إذا قمت بتحديد secret_id.

    اسم المستخدم اسم المستخدم الذي قمت بإنشاء مقطع التصديق المخزن له في secret_id.

    يكون هذا المتغير مطلوبًا إذا قمت بتحديد secret_id.

    install_helm حدد true إذا أردت تثبيت Helm.

    هلي مدير حزمة لـ Kubernetes.

    لتثبيت هلي، يجب تعيين admin_instance_principal = true أيضًا.

    helm_version إصدار عميل Helm المراد تثبيته.

    تمت ترقية Tiller (الجزء المقابل على الخادم من Helm) تلقائيًا.

    install_calico حدد true إذا أردت تثبيت Calico.

    يمكن استخدام Calico لتنفيذ سياسات الشبكة الخاصة بحمولات عمل الحاويات الموزعة على مجموعات Kubernetes.

    في حالة تعيين install_calico = true، يجب عليك أيضًا تعيين ما يلي:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    calico_version إصدار Calico المراد تثبيته.
    install_metricserver حدد true إذا أردت تثبيت Kubernetes Metrics Server.

    بشكل افتراضي، يتم تثبيت أحدث إصدار في مساحة الاسم kube-system. يقوم Kubernetes Metrics Server بتجميع بيانات استخدام المورد عبر مجموعة.

    في حالة تعيين install_metricserver = true، يجب عليك أيضًا تعيين ما يلي:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    use_encryption إذا أردت استخدام خدمة Oracle Cloud Infrastructure Vault لتشفير Kubernetes secrets، فقم بتعيين هذا المتغير إلى true.
    في حالة تعيين use_encryption = true، يجب عليك أيضًا تعيين ما يلي:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    existing_key_id تم تكوين OCID لمفتاح موجود في خدمة Oracle Cloud Infrastructure Vault.

    وهذا المتغير ضروري إذا قمت بتعيين use_encryption إلى true.

    create_service_account إذا كنت تريد إجراء عمليات وأدوات خارجية (مثل توجيه CI/CD) للوصول إلى المجموعة، فقم بتعيين هذا المتغير إلى true. يتم تكوين حساب خدمة بمقطع التصديق الخاص به.
    في حالة تعيين create_service_account = true، يجب عليك أيضًا تعيين ما يلي:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    service_account_name اسم حساب الخدمة المطلوب تكوينه.
    service_account_namespace مساحة اسم Kubernetes التي يجب تكوين الحساب بها.
    service_account_cluster_role_binding اسم ربط دور المجموعة لحساب الخدمة.

    فيما يلي مثال لملف terraform.tfvars المكتمل.

    # Identity and access parameters
    
    api_fingerprint = "d4:dc:...(truncated)"
    
    api_private_key_path = "/home/joe/.oci/oci_api_key.pem"
    
    compartment_id = "ocid1.compartment.oc1..aaaaaaaaxxx... (truncated)"
    
    tenancy_id = "ocid1.tenancy.oc1..aaaaaaaaxxx... (truncated)"
    
    user_id = "ocid1.user.oc1..aaaaaaaaxxx... (truncated)"
    
    ssh_private_key_path = "/home/joe/.ssh/id_rsa"
    
    ssh_public_key_path = "/home/joe/.ssh/id_rsa.pub"
    
    # general oci parameters
    label_prefix = "prod"
    
    region = "us-phoenix-1"
    
    # networking
    
    nat_gateway_enabled = true
    
    netnum = {
      admin   = 33
      bastion = 32
      int_lb  = 16
      pub_lb  = 17
      workers = 1
    }
    
    newbits = {
      admin   = 13
      bastion = 13
      lb      = 11
      workers = 2
    }
    
    service_gateway_enabled = true
    
    vcn_cidr = "10.0.0.0/16"
    
    vcn_dns_label = "oke"
    
    vcn_name = "oke vcn"
    
    # bastion
    
    bastion_access = "ANYWHERE"
    
    bastion_enabled = true
    
    bastion_image_id = "NONE"
    
    bastion_notification_enabled = true
    
    bastion_notification_endpoint = "joe@example.com"
    
    bastion_notification_protocol = "EMAIL"
    
    bastion_notification_topic = "bastion_server_notification"
    
    bastion_package_upgrade = true
    
    bastion_shape = "VM.Standard.E2.1"
    
    bastion_timezone = "America/Los_Angeles"
    
    admin_enabled = true
    
    admin_image_id = "NONE"
    
    admin_instance_principal = true
    
    admin_notification_enabled = false
    
    admin_notification_endpoint = "joe@example.com"
    
    admin_notification_protocol = "EMAIL"
    
    admin_notification_topic = "admin_server_notification"
    
    admin_package_upgrade = true
    
    admin_shape = "VM.Standard.E2.1"
    
    admin_timezone = "America/Los_Angeles"
    
    # availability_domains
    
    availability_domains = {
      bastion = 1
      admin   = 1
    }
    
    tagging = {
      computetag = {"Environment" = "dev" }
      networktag = { "Name" = "network" }
    }
    
    # oke
    
    allow_node_port_access = false
    
    allow_worker_ssh_access = false
    
    cluster_name = "oke"
    
    dashboard_enabled = true
    
    kubernetes_version = "LATEST"
    
    node_pools = {
      np1 = ["VM.Standard2.1", 3]
      #np2 = ["VM.Standard2.8", 4]
      #np3 = ["VM.Standard1.4", 5]
    }
    
    node_pool_name_prefix = "np"
    
    node_pool_image_id = "NONE"
    
    node_pool_os = "Oracle Linux"
    
    node_pool_os_version = "7.7"
    
    pods_cidr = "10.244.0.0/16"
    
    services_cidr = "10.96.0.0/16"
    
    worker_mode = "private"
    
    # oke load balancers
    
    lb_subnet_type = "public"
    
    preferred_lb_subnets = "public"
    
    # ocir
    
    secret_ocid = "ocid1.key.oc1..aaaaaaaaxxx... (truncated)"
    
    email_address = "joe@example.com"
    
    tenancy_name = "mytenancy"
    
    username = "joe_k8s_admin"
    
    # helm
    
    helm_version = "3.0.0"
    
    install_helm = false
    
    # calico
    
    calico_version = "3.9"
    
    install_calico = false
    
    # metrics server
    
    install_metricserver = false
    
    use_encryption = false
    
    existing_key_id = ""
    
    # service accountcreate_service_account = true
    service_account_name = "kubeconfigsa"
    service_account_namespace = "kube-system"
    service_account_cluster_role_binding = "myapps-manage-binding"
  5. قم بحفظ وإغلاق terraform.tfvars.