> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gorbit.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# EKS

> نشر Gorbit على AWS EKS

<Warning>
  قامت EKS بتحديث عملية إنشاء المجموعة ومجموعات العقد مؤخرًا. محتويات هذا الدليل لا تزال ذات صلة،
  لكن التدفق قد تغير قليلاً.

  تحديثات هذا الدليل قادمة قريبًا!
</Warning>

## الدليل

<Steps>
  <Step title="تثبيت المتطلبات">
    تتطلب EKS واجهة سطر أوامر AWS و kubectl CLI.

    * حمّل وثبّت [AWS CLI](https://aws.amazon.com/cli/)
    * حمّل وثبّت [kubectl CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/)
  </Step>

  <Step title="إنشاء المجموعة">
    لهذا الدليل، سنستخدم الإعدادات القياسية مع مشغل EBS CSI.

    * انتقل إلى Elastic Kubernetes Service (EKS) وأنشئ مجموعة جديدة
    * لـ **Cluster service role**، أنشئ دور IAM جديد باسم وصفي مثل `gorbit-eks-cluster-role`

    <Note>
      إذا لم تر الدور المنشأ حديثًا في القائمة المنسدلة، انقر على زر التحديث في الواجهة.
    </Note>

    * لـ **Kubernetes version**، اختر إصدارًا مع الدعم القياسي
    * اختر سياسة الترقية **Standard**
    * أضف إضافة **Amazon EBS CSI Driver** لمطالبات `Persistent Volume Claims` الخاصة بـ Gorbit
    * ابقِ على الإضافات الافتراضية الأخرى مفعّلة
    * راجع وانقر **Create**

    قد تستغرق المجموعة عدة دقائق لتصبح جاهزة

    <img className="rounded-image" src="https://mintcdn.com/gorbit/qYeWoSrsnkRPFQDm/assets/deployment/eks_cluster_create.png?fit=max&auto=format&n=qYeWoSrsnkRPFQDm&q=85&s=0aba86dc0c33db12b86e63d315395d2b" alt="EKS Cluster Creation" width="1658" height="1724" data-path="assets/deployment/eks_cluster_create.png" />
  </Step>

  <Step title="إضافة العقد">
    بمجرد أن تصبح المجموعة نشطة، أضف عقد العمال حيث ستعمل خدمات Gorbit.

    * في صفحة **Cluster**، اختر تبويب **Compute** وانقر **Add node group**
    * أدخل **Name** للمجموعة (مثلاً، `gorbit-node-group`)
    * لـ **Node IAM role**، إما اختر دورًا موجودًا تستخدمه مؤسستك أو أنشئ
      واحدًا جديدًا.

    <Note>
      تأكد من أن الدور لديه `AmazonEBSCSIDriverPolicy` مرفقًا حتى يمكن تلبية PVCs. إذا كنت تنشئ دورًا،
      أضف هذه السياسة بالإضافة إلى السياسات الافتراضية.
    </Note>

    * استبدل **Instance types** بأجهزة `c5.2xlarge` (أو `c5.4xlarge` إذا كنت تخطط للتوسع إلى أكثر من 100 ألف مستند)
    * اضبط **Volume size** في نطاق 200 جيجابايت - 800 جيجابايت حسب عدد مستنداتك

    <Tip>
      راجع [دليل الموارد](/deployment/getting_started/resourcing) لمزيد من التفاصيل حول متطلبات التخزين.
    </Tip>

    * لمعظم الإعدادات، اضبط **Desired size** و **Minimum size** على 1. يمكنك زيادة
      هذه لاحقًا للتوسع.
    * يمكن لـ **Maximum unavailable** البقاء على الافتراضي
    * ابقِ على تكوين الشبكة الافتراضي وانقر **Create**

    قد يستغرق ظهور عقد الحوسبة عبر الإنترنت ما يصل إلى 15 دقيقة.
  </Step>

  <Step title="إنشاء مستخدم وربطه">
    ستحتاج إلى مستخدم IAM مع وصول CLI لإدارة AWS والمجموعة.

    * انتقل إلى [لوحة IAM](https://console.aws.amazon.com/iam/)، اختر **Users** في الشريط الجانبي الأيسر، وانقر **Create user**

    * أعطِ المستخدم اسمًا وصفياً (مثلاً، `gorbit-eks-user`)

    * تحت الأذونات، انقر **Attach policies directly** وأرفق:

    * `AmazonEKSClusterPolicy`

    * `AmazonEKSServicePolicy`

    * انقر **Create user**

    * في صفحة المستخدم، انقر **Create access key** واتبع التعليمات.

    * اختر خيار **Command Line Interface (CLI)** أثناء الإنشاء.

    <Tip>
      احفظ **Access key** و **Secret access key** للاستخدام لاحقًا!
    </Tip>

    * عُد إلى مجموعة EKS واختر **Access** ثم **Create access entry**
    * في **IAM principal**، اختر IAM ARN الذي أنشأناه للتو، ثم انقر **Next**
    * لسياسات الوصول، اضبط **Policy name** على `AmazonEKSClusterAdminPolicy`، ثم انقر **Next** و **Create**
  </Step>

  <Step title="جلب kubeconfig">
    سجّل الدخول إلى AWS CLI وقدم مفتاح الوصول والمفتاح السري من مستخدم IAM الذي أنشأناه للتو:

    ```bash theme={null}
    aws configure
    ```

    قم بتكوين kubeconfig للاتصال بالمجموعة عن طريق ملء `region-code` و `cluster-name`:

    ```bash theme={null}
    aws eks update-kubeconfig --region region-code --name cluster-name
    ```

    <Info>
      راجع [وثائق AWS EKS kubeconfig](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html).
    </Info>
  </Step>

  <Step title="تثبيت خدمات Gorbit">
    حزمة Gorbit Helm تجمع جميع الخدمات المطلوبة (API، web، PostgreSQL، Vespa، إلخ) في نشر واحد.
    بشكل افتراضي، سيتم إنشاء وحدات تخزين دائمة للخدمات ذات الحالة.

    أولاً، تأكد من تعيين فئة التخزين `gp2` كفئة التخزين الافتراضية (مطلوب لـ PVCs):

    ```bash theme={null}
    kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    ```

    أضف مستودع Gorbit Helm:

    ```bash theme={null}
    helm repo add gorbit https://gorbit-dot-app.github.io/gorbit/
    helm repo update
    helm search repo gorbit
    ```

    أنشئ مساحة اسم مخصصة وثبّت Gorbit:

    ```bash theme={null}
    kubectl create namespace gorbit
    helm install gorbit gorbit/gorbit -n gorbit
    ```

    سيقوم هذا بسحب أحدث حزمة Gorbit ونشر جميع التبعيات.
  </Step>

  <Step title="التحقق من التثبيت">
    ```bash theme={null}
    helm list -n gorbit
    kubectl get pods -n gorbit
    ```

    انتظر حتى تكون جميع Pods في حالة `Running` قبل الوصول إلى Gorbit.

    لفحص سجلات خادم API (غالبًا آخر من يصبح جاهزًا):

    ```bash theme={null}
    kubectl -n gorbit get pods | grep api-server | awk '{print $1}' | xargs -I {} kubectl -n gorbit logs {} -f
    ```
  </Step>

  <Step title="الوصول إلى Gorbit">
    للاختبار المحلي، استخدم port-forward:

    ```bash theme={null}
    kubectl -n gorbit port-forward service/gorbit-nginx 8080:80
    ```

    ثم افتح [http://localhost:8080](http://localhost:8080).
  </Step>
</Steps>

## الترقية

لترقية خدمات Gorbit، حدّث مستودع Helm أولاً:

```bash theme={null}
helm repo update
helm upgrade gorbit gorbit/gorbit -n gorbit
```

للترقية إلى إصدار محدد، استخدم:

```bash theme={null}
helm upgrade gorbit gorbit/gorbit -n gorbit --version <VERSION>
```

## إلغاء التثبيت

لإزالة خدمات Gorbit:

```bash theme={null}
helm uninstall gorbit -n gorbit
```

Vespa و Postgres و MinIO يتركون خلفهم PVCs. لحذفها:

```bash theme={null}
kubectl -n gorbit get pvc
kubectl -n gorbit delete pvc vespa-storage-da-vespa-0
kubectl -n gorbit delete pvc gorbit-minio
kubectl -n gorbit delete pvc data-gorbit-postgresql-0
```

## Next Steps

<CardGroup cols={2}>
  <Card title="Configure Authentication" icon="shield-check" href="/deployment/authentication/basic">
    Set up authentication for your Gorbit deployment with OAuth, OIDC, or SAML.
  </Card>

  <Card title="More Gorbit Configuration Options" icon="gear" href="/deployment/configuration/configuration">
    Learn about all available configuration options for your Gorbit deployment.
  </Card>
</CardGroup>
