در مقالات قبلی، نهادهای داخلی که خدمات سازمانی را در مرکز توسعه‌دهنده Red Hat ارائه می‌کنند بررسی شد و یک نصب ساده نیز ایجاد گردید. در این مطلب به پیکربندی و پلاگین‌های ارائه‌شده توسط Developer Hub می‌پردازیم تا فرایند وارد کردن قالب‌ها و استفاده از یک سازمان GitHub برای کاربران و گروه‌ها را خودکار کنیم 😊.

پیکربندی یک نمونه بالادستی Backstage معمولاً پیچیدگی‌هایی دارد، اما Red Hat Developer Hub مجموعه‌ای از ادغام‌های آماده را برای تسهیل استفاده از سرویس‌های موجود شما ارائه می‌دهد. در این مقاله روش فعال‌سازی افزونه‌های پویا (dynamic plugins) در Developer Hub و ادغام با GitHub برای همگام‌سازی کاربران، گروه‌ها و کاتالوگ‌ها را نشان می‌دهیم تا تیم‌ها به جای تنظیمات فنی روی سازمان خود تمرکز کنند 🚀.

وارد کردن کاتالوگ‌های ایستا: در مقالات قبلی توضیح داده شد که Developer Hub از Backstage software catalog برای مدل‌سازی نرم‌افزار و موجودیت‌های آن استفاده می‌کند. برای اینکه این موجودیت‌ها توسط Developer Hub کشف شوند، باید در یک مکان قابل دسترس مانند یک سیستم کنترل نسخه قرار گیرند. یک مخزن نمونه ساده نشان می‌دهد چگونه یک repo قالب راه‌اندازی شود. فایل template.yaml به‌عنوان یک متغیر سطح‌بالا برای Developer Hub عمل می‌کند.

Template.yaml
---apiVersion: backstage.io/v1alpha1
نوع: مکان
ابرداده:
  نام: rhdh-skillz
  توضیحات: مجموعه نمونه قالب‌های نرم افزار برای مرکز توسعه دهندگان Red Hat
مشخصات:
  نوع: url
  اهداف:
    - templates/quarkus-on-openshift/template.yaml
    - templates/argo-onboard/template.yaml

نوع موجودیت “Location” برای Developer Hub شناخته شده و به آن می‌گوید موجودیت‌ها را از URLهای مشخص‌شده بارگیری کند. این اهداف می‌توانند تقریباً هر موجودیتی در Backstage catalog را وارد کنند؛ در این مثال دو قالب نمونه به‌عنوان کاتالوگ ایستا وارد می‌شوند. باید پیکربندی برنامه Developer Hub را برای افزودن این مکان کاتالوگ به‌روزرسانی کنید.

app-config.yaml
kind: ConfigMap
apiVersion: v1
ابرداده:
  نام: app-config-rhdh
  فضای نام: rhdh-operator
داده ها:
  app-config.yaml: |
    برنامه:
      عنوان: نمونه مرکز توسعه‌دهنده کلاه قرمزی من
    اعتبار:
      محیط زیست: توسعه
      ارائه دهندگان:
        مهمان:
          خطرناکlyAllowOutsideDevelopment: درست است
    کاتالوگ:
      مکان ها:
        - نوع: url
          هدف: https://github.com/rhdh-beginners-guide/rhdh-templates/blob/main/templates.yaml
          قوانین:
            - مجاز است: [Template]

پس از اعمال این پیکربندی، Developer Hub راه‌اندازی مجدد می‌شود و پس از چند دقیقه کاربر مهمان می‌تواند به کاتالوگ‌های سلف‌سرویس جدید دسترسی پیدا کند. برای ورود به صفحه سلف‌سرویس دکمه + را در بالای رابط فشار دهید.

در رابط Self Service باید دو الگوی واردشده از GitHub را ببینید؛ این مخزن عمومی است و نیاز به احراز هویت ندارد، اما می‌توان با افزونه‌های مناسب آن را به منابع احراز هویت متصل کرد.

نکتهٔ مهم: واردات استاتیک تنها یکی از روش‌هاست؛ افزونه‌هایی وجود دارند که می‌توانند موجودیت‌ها را مستقیماً از منابعی مانند GitHub کشف کنند و تجربه‌ای پویاتر ارائه دهند.

ادغام با GitHub: در مقاله‌ای پیشین نحوه ادغام با GitHub با استفاده از نصب Helm شرح داده شد. در روش نصب اپراتور تفاوت اصلی این است که پیکربندی برنامه در یک ConfigMap قرار می‌گیرد؛ همچنین کشف مخازن (repository discovery) فعال خواهد شد.

توجه: اگر قصد ایجاد مخازن جدید را دارید، ممکن است به مجوزهای بیشتری در GitHub نیاز داشته باشید؛ برای جزئیات بیشتر به مستندات GitHub Backstage مراجعه کنید.

پیش‌نیازها: راه‌اندازی یک سازمان و GitHub app با مجوزهای مناسب برای Developer Hub همان‌طور که در مقاله پیشین توضیح داده شد.

ایجاد رازها (Secrets) در OpenShift برای GitHub: مقادیر حساسِ مورد نیاز برای ادغام با GitHub باید به‌صورت Secret ذخیره شوند. این Secret در مانیفست Backstage ارجاع خواهد شد و کلیدها در فایل پیکربندی برنامه استفاده می‌شوند.

نوع: راز
apiVersion: v1
ابرداده:
  نام: github-secrets
  فضای نام: rhdh-operator
stringData:
  GITHUB_APP_APP_ID:
  GITHUB_APP_CLIENT_ID:
  GITHUB_APP_CLIENT_SECRET:
  GITHUB_APP_PRIVATE_KEY:
  GITHUB_APP_WEBHOOK_SECRET:
  GITHUB_APP_WEBHOOK_URL:
  GITHUB_ORG:
نوع: افزونه‌های Opaque

نصب پلاگین‌های GitHub: پس از ایجاد Secret مربوط به GitHub، باید آن را به‌کار بگیرید و پیکربندی برنامه را با تنظیمات GitHub به‌روزرسانی کنید. ابتدا افزونه‌های پویا مناسب را در Developer Hub فعال کنید. این کار از طریق یک ConfigMap دیگر که به Backstage CR متصل می‌شود انجام می‌گیرد؛ این ConfigMap لیستی از پلاگین‌ها و وضعیت فعال/غیرفعال بودن آن‌ها را نگهداری می‌کند.

نوع: ConfigMap
apiVersion: v1
ابرداده:
  نام: dynamic-plugins-rhdh
  فضای نام: rhdh-operator
داده ها:
  dynamic-plugins.yaml: |
    شامل:
      - dynamic-plugins.default.yaml
    پلاگین ها:
      - بسته: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
        غیرفعال: نادرست
      - بسته: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic
        غیرفعال: نادرست
      - بسته: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-github-dynamic
        غیرفعال: false

پیکربندی app-config باید با اعتبارهای جدید و ادغام‌های GitHub به‌روزرسانی شود تا Developer Hub بتواند از GitHub به‌عنوان ارائه‌دهندهٔ احراز هویت استفاده کند و کاربران را از سازمان فهرست‌شده در Secret بیرون‌کِشد. به متغیرهای محیطی مانند ${GITHUB_ORG} که از Secretها تأمین می‌شوند دقت کنید.

ConfigMap
apiVersion: v1
ابرداده:
  نام: app-config-rhdh
  فضای نام: rhdh-operator
داده ها:
  app-config.yaml: |
    برنامه:
      عنوان: نمونه مرکز توسعه‌دهنده کلاه قرمزی من
    کاتالوگ:
      ارائه دهندگان:
        githubOrg:
          شناسه: تولید
          githubUrl: "https://github.com"
          سازمان‌ها: [ "${GITHUB_ORG}" ]
          برنامه زمانی:
            تاخیر اولیه: { دقیقه: 2 }
            فرکانس: { ساعت: 1 }
            تایم اوت: { دقیقه: 50 }
      مکان ها:
        - نوع: آدرس اینترنتی
          هدف: https://github.com/rhdh-beginners-guide/rhdh-templates/blob/main/templates.yaml
          قوانین:
            - اجازه می دهد: [Template]
    ادغام ها:
      github:
        - میزبان: github.com
          برنامه ها:
            - شناسه برنامه: ${GITHUB_APP_APP_ID}
              شناسه مشتری: ${GITHUB_APP_CLIENT_ID}
              clientSecret: ${GITHUB_APP_CLIENT_SECRET}
              webhookUrl: ${GITHUB_APP_WEBHOOK_URL}
              webhookSecret: ${GITHUB_APP_WEBHOOK_SECRET}
              privateKey: |
                ${GITHUB_APP_PRIVATE_KEY}
    اعتبار:
      محیط زیست: تولید
      ارائه دهندگان:
        github:
          تولید:
            شناسه مشتری: ${GITHUB_APP_CLIENT_ID}
            clientSecret: ${GITHUB_APP_CLIENT_SECRET}
    signInPage: github

برای افزودن Secret به Backstage، CR را با .spec.application.extraEnvs.secrets به‌روزرسانی کنید تا هنگام راه‌اندازی Developer Hub، Secretها به‌عنوان متغیرهای محیطی بارگذاری شوند.

---apiVersion: rhdh.redhat.com/v1alpha3
نوع: پشت صحنه
ابرداده:
  نام: Developer-Hub
  برچسب ها:
    app.kubernetes.io/name: پشت صحنه
  فضای نام: rhdh-operator
مشخصات:
  کاربرد:
    appConfig:
      configMaps:
        - نام: app-config-rhdh
      mountPath: /opt/app-root/src
    dynamicPluginsConfigMapName: dynamic-plugins-rhdh
    extraEnvs:
      اسرار:
        - نام: github-secrets
    فایل های اضافی:
      mountPath: /opt/app-root/src
    کپی: 1
    مسیر:
      فعال: درست است
  پایگاه داده:
    enableLocalDb: true

پس از راه‌اندازی مجدد Developer Hub، به‌صورت دوره‌ای کاربران و گروه‌ها را از GitHub همگام‌سازی می‌کند. این رفتار را می‌توان با گزینه‌های ارائه‌دهنده githubOrg تنظیم کرد. در نتیجه، کاربران سازمان GitHub قادر خواهند بود وارد Developer Hub شوند و حساب‌هایشان همگام‌سازی شوند ✅.

خلاصه: این مقاله نشان داد چگونه کاتالوگ‌های ایستا را وارد کنیم، افزونه‌های پویا را پیکربندی نماییم و ادغام با GitHub را برای کشف مخزن و وارد کردن کاربر/گروه فعال کنیم. این تنها بخش کوچکی از امکانات ادغام با Developer Hub و مجموعه غنی پلاگین‌ها است. در مقاله بعدی یک افزونه دیگر را بررسی می‌کنیم که ادغام با Red Hat OpenShift GitOps (بر پایه ArgoCD) را ممکن می‌سازد — تا آن زمان، امکانات داخلی Red Hat Developer Hub و ادغام‌های مرتبط با کسب‌وکار خود را کاوش کنید 🔍.

به گزارش از وبسایت redhat