خطوات الاستخدام
الخطوة 1: انسخ محتوى YAML الخاص بموارد Crossplane التي تريد عدها. يجب أن يكون المحتوى بصيغة YAML صالحة، ويمكن أن يحتوي على عدة مستندات مفصولة بـ `---`. تأكد من أن كل مورد يبدأ بـ `apiVersion:` في سطر منفصل، حيث أن هذه هي السمة التي تستخدمها الحاسبة لتحديد الموارد.
الخطوة 2: الصق المحتوى في حقل الإدخال المخصص. الحاسبة ستقوم بتحليل النص والبحث عن كل سطر يبدأ بـ `apiVersion:` (مع تجاهل المسافات البيضاء البادئة). كل سطر من هذا القبيل يمثل بداية مورد جديد، حتى إذا كان المورد يحتوي على حقول متداخلة أخرى.
الخطوة 3: اضغط على زر "احسب" أو "Count". ستقوم الحاسبة بحساب عدد الأسطر التي تطابق النمط وإظهار النتيجة. النتيجة تمثل العدد الإجمالي للموارد المعرفة في YAML المدخل.
الخطوة 4: تفسير النتيجة. الرقم الناتج هو عدد موارد Crossplane في YAML الخاص بك. إذا كنت تستخدم ملفًا يحتوي على تعريفات متعددة (مثل Composition و XRD و ProviderConfig)، فسيتم عد كل منها على حدة. يمكنك استخدام هذه المعلومات لمراجعة عدد الموارد في ملفات التكوين أو لأغراض التوثيق.
أمثلة محلولة
تطبيقات عملية على عداد موارد Crossplane بخطوات الحل كاملة.
الحل
لنفترض أن لدينا ملف YAML التالي:
```yaml
apiVersion: pkg.crossplane.io/v1
kind: ProviderConfig
metadata:
name: example-provider
spec:
credentials:
source: Secret
secretRef:
name: aws-creds
namespace: crossplane-system
---
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: example-composition
spec:
compositeTypeRef:
apiVersion: example.com/v1alpha1
kind: XExample
resources:
- name: bucket
base:
apiVersion: s3.aws.upbound.io/v1beta1
kind: Bucket
spec:
forProvider:
region: us-east-1
```
هذا الملف يحتوي على مستندين مفصولين بـ `---`. الحاسبة ستجد سطرين يبدآن بـ `apiVersion:` (واحد لكل مستند). لذلك النتيجة ستكون 2. لاحظ أن داخل Composition هناك apiVersion فرعي داخل `resources`، ولكن الحاسبة تحسب فقط الأسطر التي تبدأ بـ apiVersion في بداية السطر (بعد إزالة المسافات البيضاء)، وليس تلك المتداخلة داخل الكائنات. لذلك النتيجة الصحيحة هي 2.
الحل
خذ الملف التالي:
```yaml
apiVersion: pkg.crossplane.io/v1
kind: ProviderConfig
metadata:
name: example-provider
spec: {}
---
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: xpostgresqlinstances.example.org
spec:
group: example.org
names:
kind: XPostgreSQLInstance
plural: xpostgresqlinstances
versions:
- name: v1alpha1
served: true
referenceable: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
storageGB:
type: integer
---
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: example-composition
spec:
compositeTypeRef:
apiVersion: example.org/v1alpha1
kind: XPostgreSQLInstance
resources:
- name: rds
base:
apiVersion: rds.aws.upbound.io/v1beta1
kind: Instance
spec:
forProvider:
region: us-east-1
dbInstanceClass: db.t3.small
allocatedStorage: 20
engine: PostgreSQL
engineVersion: "14"
masterUsername: admin
masterUserPasswordSecretRef:
name: db-password
namespace: crossplane-system
skipFinalSnapshot: true
---
apiVersion: rds.aws.upbound.io/v1beta1
kind: Instance
metadata:
name: example-rds
spec:
forProvider:
region: us-east-1
dbInstanceClass: db.t3.small
allocatedStorage: 20
engine: PostgreSQL
engineVersion: "14"
masterUsername: admin
masterUserPasswordSecretRef:
name: db-password
namespace: crossplane-system
skipFinalSnapshot: true
```
في هذا الملف، لدينا 4 مستندات مفصولة بـ `---`، لكن المستند الثالث (Composition) يحتوي على apiVersion داخلي داخل `resources`. لكن هذا apiVersion الداخلي ليس في بداية السطر (هو متداخل في مسافة بادئة)، لذا لن تحتسبه الحاسبة. السطور التي تبدأ بـ apiVersion في بداية السطر: الأول، الثاني، الثالث (بداية Composition)، والرابع. إذن العدد هو 4. لكن لاحظ أن المستند الثالث (Composition) يحتوي على apiVersion في سطره الأول، لذا يحتسب. النتيجة النهائية: 4 موارد.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة عداد موارد Crossplane.
مرجع — ProviderConfig + Composition
- ملف YAML
- apiVersion: pkg.crossplane.io/v1 kind: ProviderConfig metadata: name: aws --- apiVersion: apiextensions.crossplane.io/v1 kind: Composition metadata: name: vpc
مرجع — XRD مع موردين مُدارين
- ملف YAML
- apiVersion: apiextensions.crossplane.io/v1 kind: CompositeResourceDefinition --- apiVersion: ec2.managed.aws.crossplane.io/v1beta1 kind: VPC --- apiVersion: ec2.managed.aws.crossplane.io/v1beta1 kind: Subnet
مرجع — مورد مُدار واحد
- ملف YAML
- apiVersion: cache.managed.gcp.crossplane.io/v1 kind: Instance