> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# GitLab Senkronizasyonu

> Kubernetes dağıtımında kullanıcıların projelerini GitLab.com veya kendi yönettiğiniz bir GitLab üzerindeki depolarla senkronize etmesini sağlayın.

GitLab Senkronizasyonu, her Ayakaleaf Pro pod'unun **web** hizmetinde (`gitlab-sync` modülü) çalışır. [Git entegrasyonu](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/kubernetes/integrations/git-integration.md) gerektirir. OAuth uygulamasını oluşturmak ve her ayarın ne işe yaradığını öğrenmek için [GitLab Senkronizasyonu](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/overleaf-toolkit/integrations/gitlab-synchronisation.md) sayfasına bakın; bu sayfa bunu Kubernetes'e uygular.

| | |
| - | - |
| Hizmet | web (`gitlab-sync` modülü), her Ayakaleaf Pro pod'unda; web başlarken okunur |
| Pod → GitLab | Bir kullanıcı hesap bağladığında, içe aktardığında, dışa aktardığında veya senkronize ettiğinde `GITLAB_SYNC_URL` REST API'si (varsayılan `https://gitlab.com/api/v4`) |
| Tarayıcı → GitLab | Hesap bağlamak için `${GITLAB_SYNC_URL}/oauth/authorize`, ardından `${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback` adresine geri dönüş |
| GitLab → Overleaf | yok: webhook yoktur, örneğin GitLab'dan erişilebilir olması gerekmez |
| Depolanan veriler | kullanıcının GitLab erişim ve yenileme token'ları, şifrelenmiş olarak MongoDB'de |
| Periyodik işler | yok: senkronizasyon kullanıcı tıkladığında gerçekleşir |

### Yapılandırma

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" theme={null}
  GITLAB_SYNC_ENABLED: "true"
  GITLAB_SYNC_CLIENT_ID: <client ID>
  # self-managed GitLab: its web address
  # GITLAB_SYNC_URL: https://gitlab.example.com
  # optional: send the module's requests to GitLab through an HTTP proxy
  # GITLAB_SYNC_PROXY_URL: http://proxy.example.com:3128
```

`GIT_BRIDGE_ENABLED: "true"` ve [Git entegrasyonu](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/kubernetes/integrations/git-integration.md) sayfasındaki git-bridge StatefulSet'i mevcut olmalıdır: bunlar olmadan hesap ayarları ve düzenleyici GitLab Senkronizasyonunu gizler.

**2. Secret**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge -p '{"stringData":{
  "GITLAB_SYNC_CLIENT_SECRET":"<client secret>",
  "GITLAB_TOKEN_CIPHER_PASSWORD":"'"$(openssl rand -hex 32)"'"}}'
```

`GITLAB_TOKEN_CIPHER_PASSWORD`, kullanıcıların GitLab erişim ve yenileme token'larını MongoDB'de şifreler. Her replika aynı değeri kullanmalıdır; bu değeri daha sonra değiştirmek, her kullanıcının GitLab'ı yeniden bağlamasını gerektirir.

**3. Özel CA (isteğe bağlı)**

GitLab'ınız kendi CA'nızdan alınmış bir sertifika kullanıyorsa, CA'yı `/var/lib/overleaf/certs` konumuna bağlanan `overleaf-certs` Secret'ına ekleyin (bkz. [Sertifikalar ve diğer dosyalar](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/kubernetes#sertifikalar-ve-diğer-dosyalar)) ve ConfigMap'te `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem` değerini ayarlayın.

**4. Uygulayın, yeniden başlatın ve kontrol edin**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
for p in $(kubectl -n overleaf get pod -l app=overleaf -o name); do   # app=overleaf-ha for several replicas
  kubectl -n overleaf exec "$p" -- curl -sS -o /dev/null -w "$p %{http_code}\n" https://gitlab.com/api/v4/version
done
```

Herhangi bir HTTP durum kodu, GitLab'a o pod'dan erişilebildiği anlamına gelir; `000` erişilemediği anlamına gelir.

### Birden fazla replika

Paylaşılan `GITLAB_TOKEN_CIPHER_PASSWORD` dışında ek bir şey gerekmez. Bir senkronizasyon, diğer Git senkronizasyonlarıyla paylaşılan bir Redis kilidi alır; böylece iki replika hiçbir zaman aynı projeyi aynı anda senkronize etmez. Bir kullanıcının GitLab token'ını yenilemek de bir Redis kilidi alır; böylece iki replika onu aynı anda yenilemez.

### Kubernetes üzerinde test edildi

`GITLAB_SYNC_URL` adresindeki kendi yönetilen bir GitLab taklidine karşı (`overleaf-certs` içinden `NODE_EXTRA_CA_CERTS` aracılığıyla güvenilen), tek replikalı ve Git entegrasyonu açık Kubernetes 1.37 üzerinde, GitLab Senkronizasyonu için uçtan uca testlerimiz başarılı oldu (40 vaka): hesabı bağlama ve bağlantısını kaldırma, süresi dolmak üzere olan bir erişim token'ını yenileme ve iptal edilmiş token'lar, yeni bir özel veya grup projesine dışa aktarma, bir depoyu içe aktarma, çekme ve gönderme, birleştirmeler, çakışmalar, silinmiş ve zorla gönderilmiş dallar, ikili dosyalar, yeniden adlandırmalar ve silmeler ve sahiplerin, düzenleyicilerin ve görüntüleyicilerin neler yapabileceği.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.