İçeriğe atla

Kendiniz Barındırılan Önbellek

Tuist önbelleği, yapıtları birbirine çoğaltan bir düğüm ağı olarak çalışır. Önbelleğin geliştiricilerinizin ve CI sistemlerinizin yanında konumlanması için kendi önbellek düğümlerinizi altyapınızda çalıştırabilir; bu sayede, önbellekleme hızının azalmasına neden olacak ağ mesafesini kısaltmış olursunuz.

Kendiniz barındırılan bir düğüm, yapıtları yerel diske depolayan tek bir kapsayıcıdır (ghcr.io/tuist/kura) ve bir eş ağa katıldığında, dahili eş bağlantı noktası üzerinden ağın geri kalanıyla iletişim kurar. Tuist, kontrol düzlemi olarak hareket eder: trafiği kimlik doğrular, yönetilen önbellek kapasitesini sağlar ve kullanımı ölçer. Düğümlerinize asla doğrudan erişmez.

Note

Önbellek düğümlerini kendiniz barındırmak için bir Enterprise planı gerekir.

Düğümler, ya barındırılan Tuist sunucusuna (https://tuist.dev) ya da kendiniz barındırdığınız bir Tuist sunucusuna bağlanır. Tuist sunucusunu kendiniz barındırmak ayrı bir sunucu lisansı gerektirir. Sunucu kendiniz barındırma kılavuzuna bakın.

İki topoloji#

Kendiniz barındırılan düğümleri çalıştırmanın iki yolu vardır ve hangisini kullanacağınız tamamen hesabınızın aynı zamanda bir Tuist tarafından yönetilen önbellek bölgesi çalıştırıp çalıştırmadığına bağlıdır.

Köprülenmiş: Tuist tarafından barındırılan ağ + sizin düğümleriniz#

Hesabınız en az bir Tuist tarafından yönetilen önbellek bölgesi çalıştırır ve kendiniz barındırdığınız düğümler bu ağa katılır. Düğümlerinize yapılan yazma işlemleri sürekli olarak yönetilen ağa yayılır ve bir düğüm katıldığında, yönetilen ağın mevcut önbelleğinden ısınır. Bu durum, düşük gecikmeli bir önbelleği çalışanlarınızın (yazma işlemlerinin çoğunu bunlar yapar) yanına yerleştirirken, yazma işlemleri paylaşılan önbelleğe beslenir. Bir düğüm katıldıktan sonra yönetilen ağın başka yerlerinde yazılan yeni yapıtların henüz sürekli olarak o düğüme geri yayılmadığını unutmayın; bu planlanan bir geliştirmedir.

Paylaşılan, her zaman açık yönetilen önbellekten vazgeçmeden şirket içi bir önbelleğin hızını istediğinizde bu doğru seçimdir.

Bağımsız: yalnızca sizin düğümleriniz#

Hesabınız hiçbir yönetilen önbellek bölgesi çalıştırmaz. Düğümleriniz altyapınızda kendi izole ağınızı oluşturur. Tuist yine de düğümlerinizin var olduğunu bilir (böylece kullanım ölçülür), ancak böyle bir ağ olmadığı için Tuist tarafından yönetilen hiçbir ağla veri alışverişi yapılmaz. Eş üyeliği ve çoğaltma tamamen kendi düğümleriniz içinde gerçekleşir.

graph LR
  subgraph Bridged
    direction LR
    M[Tuist-managed mesh] <-->|replicate| N1[Your node]
  end
  subgraph Standalone
    direction LR
    N2[Your node] <-->|replicate| N3[Your node]
  end

Yapılandırmadaki temel fark, köprülenmiş topolojinin, düğümün önyüklemede anahtar çiftini oluşturduğu ve Tuist'in ağ sertifikasını verdiği kayıt işlemini kullanmasıdır; oysa bağımsız topolojide Tuist tarafından verilen bir ağ sertifikası yoktur. Tek bir bağımsız düğüm, eş TLS'si devre dışı bırakılmış şekilde çalışabilir; çok düğümlü bağımsız bir ağ ise sizin sağladığınız eş TLS malzemesini kullanır.

CLI uç noktasını yapılandırın#

Tuist’in yönetilen önbelleği https://<account>.cache.tuist.dev kullanır. Kendiniz barındırdığınız bir Tuist sunucusuyla, CLI önbellek URL’sini sunucunun TUIST_CACHE_ENDPOINTS ayarından alır. Bunu ana önbellek sunucunuzun veya yük dengeleyicinizin URL’sine ayarlayın. Birden fazla URL içeriyorsa ilk olanı kullanılır.

Özel/özel önbellek düğümlerini barındırılan Tuist sunucusuna bağlarken, geliştirici kabuklarında ve CI’da açık bir uç nokta yapılandırın:

bash
export TUIST_CACHE_ENDPOINT=https://cache.example.com

Bu geçersiz kılma, her iki sunucu türünde de önceliklidir ve kendiniz barındırdığınız bir Tuist sunucusu için isteğe bağlıdır. Xcode önbellek arka plan programı için, LaunchAgent’in güncellenmiş ortamı alması amacıyla bunu ayarladıktan sonra tuist setup cache komutunu yeniden çalıştırın. Birden fazla düğüm için yük dengeleyicinizi veya DNS yönlendirme adınızı kullanın.

Önkoşullar#

  • Docker ve Docker Compose (veya herhangi bir kapsayıcı çalışma zamanı)
  • Çalışan bir Tuist sunucusu (barındırılan veya kendiniz barındırdığınız)
  • Önbellek için disk alanı. Köprülenmiş bir düğüm, ilk katılımda hesabın tüm ağını çeker, bu nedenle veri biriminizi buna göre boyutlandırın.

Bir kontrol düzlemi istemcisi sağlayın#

Bir düğüm, önbellek isteklerini kimlik doğrulamak (token introspection), panoya rapor vermek ve kullanım verilerini iletmek için bir kontrol düzlemi istemci kimlik bilgisi kullanır. Bu, istemcilerin kendi kendine barındırılan bir Tuist sunucusunda düğümlerinize nasıl yönlendirildiği değildir (bkz. İstemciler düğümlerinize nasıl ulaşır).

Tamamen kendiniz barındırdığınız bir dağıtım için bir UUID istemci kimliği ve rastgele bir gizli dizi oluşturun, ardından aynı çifti Tuist sunucusunda ve her Kura düğümünde yapılandırın:

bash
KURA_CONTROL_PLANE_CLIENT_ID="$(uuidgen | tr '[:upper:]' '[:lower:]')"
KURA_CONTROL_PLANE_CLIENT_SECRET="$(openssl rand -base64 32)"

Bu değerleri Tuist sunucu ortamında KURA_CONTROL_PLANE_CLIENT_ID ve KURA_CONTROL_PLANE_CLIENT_SECRET olarak ayarlayın, ardından aşağıdaki Kura yapılandırmasında aynı değerleri kullanın. Kayıt kalp atışları, hesabın kalıcı önbellek kimliği olan KURA_TENANT_ID bilgisini içerir, böylece sunucu hesap yeniden adlandırıldıktan sonra bile düğümü doğru hesaba ekleyebilir.

Warning

İstemci kimliği, kura_ ön eki olmadan bir UUID olmalıdır. UUID olmayan kimlikler, her iki hizmette de kimlik bilgileri eşleşse bile token introspeksiyonunun HTTP 400 hatasıyla başarısız olmasına neden olur.

Barındırılan tuist.dev sunucusuna bağlanıyorsanız veya UI’dan döndürülebilen hesap başına bir kimlik bilgisi istiyorsanız, hesabın Önbellek sayfasını açın, Kimlik bilgisi oluştur seçeneğini belirleyin ve client_id ile tek seferlik secret bilgisini kopyalayın. Barındırılan sunucuda, kendiniz barındırılan düğüm kimlik bilgisi oluşturmak için Enterprise planı gerekir.

Kalıcı kiracıyı seçin#

KURA_TENANT_ID, kalıcı depolama ve eş kimliğidir ve başlangıçta hesabın orijinal kullanıcı adından türetilir. Hiçbir zaman yeniden adlandırılmamış bir hesap için geçerli kullanıcı adıyla eşleşir. Hesap yeniden adlandırıldıktan sonra orijinal değerini koruyun; bu, yedek düğümler eklerken veya aynı ağa başka bir düğüm eklerken de geçerlidir. Örneğin, original adını renamed olarak değiştirmek, her düğümde KURA_TENANT_ID=original bırakır. Bunu değiştirmek farklı bir nesne-anahtarı ad alanı seçer; hesabı yeniden adlandırmak depolanan yapıtları veya eş kimliğini taşımaz.

Aşağıdaki örneklerdeki <permanent-kura-tenant> ifadesini bu değerle değiştirin. Mevcut doğru yapılandırılmış bir düğümden kiracıyı yeniden kullanın veya kayıt işlemi tarafından döndürülen tenant_id değerini kullanın. Kendiniz barındırdığınız bir Tuist sunucusunun operatörü, hesabın kura_tenant_id veritabanı alanını inceleyebilir. Değeri yeniden adlandırılmış bir hesabın URL’sinden tahmin etmeyin.

Geçerli bir dağıtım düzeyinde kontrol düzlemi kimlik bilgisiyle, düğüm kalıcı kiracısından farklı bir geçerli veya saklanmış kullanıcı adı sağlarsa kayıt ve eş keşfi 409 Çakışma yanıtını error: "tenant_mismatch" ve expected_tenant_id ile döndürür. Düğümü kaydetmezler veya sessizce farklı bir depolama kimliğiyle değiştirmezler. Geçersiz kimlik bilgileri ve bilinmeyen kiracılar, bir kiracıyı ifşa etmeden yine de 401 Yetkisiz yanıtını döndürür. Bir düğüm zaten farklı bir kiracıyla veri yazdıysa, bunu değiştirmeden önce yapılandırmasını ve depolama geçmişini gözden geçirin; hata yanıtı bir depolama taşıması gerçekleştirmez.

İstemciler düğümlerinize nasıl ulaşır#

Geliştirici makinelerinin ve CI’nın düğümlerinize ulaşabilmesi için önbellek URL’sini yukarıda yapılandırın. Her düğümün adresini ve hazır durumunu panoda bildirmek için düğümde KURA_REGISTRATION_URL ve KURA_ADVERTISED_HTTP_URL ayarlarını yapın.

Köprülenmiş kurulum#

Düğüm önyüklemede kayıt olur: yerel olarak bir anahtar çifti oluşturur (özel anahtar altyapınızdan asla ayrılmaz), bir sertifika imzalama isteği gönderir ve imzalı sertifikasını, hesap CA’sını ve yönetilen ağın ağ geçidi adresini alır. Herhangi bir TLS materyali sağlamazsınız. Kayıt işlemi bunu monte edilen birime yazar.

yaml
# docker-compose.yml
services:
kura:
image: ghcr.io/tuist/kura:<version>
restart: unless-stopped
ports:
- "4000:4000" # HTTP cache: your developers and CI point here
- "7443:7443" # mesh peer port
environment:
# Enroll and join the managed mesh
KURA_ENROLL_ON_BOOT: "1"
KURA_CONTROL_PLANE_URL: "https://tuist.dev"
KURA_CONTROL_PLANE_CLIENT_ID: "<client_id>"
KURA_CONTROL_PLANE_CLIENT_SECRET: "<secret>"
KURA_TENANT_ID: "<permanent-kura-tenant>"
# Report the node’s address and readiness to the dashboard
KURA_REGISTRATION_URL: "https://tuist.dev/_internal/kura/mesh/registrations"
KURA_ADVERTISED_HTTP_URL: "https://kura.acme.internal" # where your CLI/CI reach the cache
KURA_NODE_URL: "https://kura.acme.internal:7443" # this node's peer identity on your network
KURA_REGION: "office"
# Ports and storage. KURA_PORT serves both the HTTP cache API and REAPI
# gRPC (h2c) on one listener. Enrollment writes the TLS files into
# KURA_INTERNAL_TLS_* on first boot.
KURA_PORT: "4000"
KURA_INTERNAL_PORT: "7443"
KURA_INTERNAL_TLS_CA_CERT_PATH: "/tls/ca.pem"
KURA_INTERNAL_TLS_CERT_PATH: "/tls/tls.crt"
KURA_INTERNAL_TLS_KEY_PATH: "/tls/tls.key"
KURA_DATA_DIR: "/var/cache/kura"
KURA_TMP_DIR: "/var/cache/kura/tmp"
KURA_OTEL_SERVICE_NAME: "kura-acme"
KURA_OTEL_DEPLOYMENT_ENVIRONMENT: "onprem"
# Authenticate the HTTP cache API. The Tuist hook ships in the image at
# this path; it introspects each token against the control plane using the
# control-plane client above, so only valid Tuist tokens for this account
# can read or write. No JWT verifier secret is involved.
KURA_AUTH_ENABLED: "1"
KURA_AUTH_TUIST_URL: "https://tuist.dev"
volumes:
- kura-tls:/tls # empty; enrollment populates it
- kura-data:/var/cache/kura
volumes:
kura-tls: {}
kura-data: {}

Sizin sağladıklarınız: kontrol düzlemi istemcisi, ağınız üzerindeki iki adres (KURA_NODE_URL, KURA_ADVERTISED_HTTP_URL) ve iki boş yazılabilir birim. Diğer her şey (anahtar çifti, sertifika, hesap CA’sı ve yönetilen ağın adresi) önyüklemede otomatik olarak sağlanır.

Bağımsız kurulum#

Yönetilen bir bölge olmadığında Tuist tarafından verilen bir ağ CA’sı yoktur, bu nedenle kayıt uygulanmaz (kayıt uç noktası 503 ca_unavailable döndürür). Düğüm, token kimlik doğrulaması, pano kayıt kalp atışları ve kullanım raporlaması için Tuist sunucunuzu kullanır.

yaml
# docker-compose.yml for a single node connected to a self-hosted Tuist server
services:
kura:
image: ghcr.io/tuist/kura:<version>
restart: unless-stopped
ports:
- "4000:4000"
- "7443:7443"
environment:
KURA_TENANT_ID: "<permanent-kura-tenant>"
KURA_NODE_URL: "http://kura-1.acme.internal:7443"
KURA_PEERS: "" # single node: disable static peer discovery
KURA_REGION: "office"
# Authenticate cache requests against the self-hosted Tuist server.
# Use the same values configured on the Tuist server, or a per-account
# credential from the Cache page.
KURA_CONTROL_PLANE_CLIENT_ID: "<client_id>"
KURA_CONTROL_PLANE_CLIENT_SECRET: "<secret>"
KURA_AUTH_ENABLED: "1"
KURA_AUTH_TUIST_URL: "https://tuist.acme.internal"
# Register the client-facing cache URL with the Tuist server.
KURA_REGISTRATION_URL: "https://tuist.acme.internal/_internal/kura/mesh/registrations"
KURA_ADVERTISED_HTTP_URL: "https://kura.acme.internal"
KURA_PORT: "4000"
KURA_INTERNAL_PORT: "7443"
KURA_DATA_DIR: "/var/cache/kura"
KURA_TMP_DIR: "/var/cache/kura/tmp"
KURA_OTEL_SERVICE_NAME: "kura-acme"
KURA_OTEL_DEPLOYMENT_ENVIRONMENT: "onprem"
volumes:
- kura-data:/var/cache/kura
volumes:
kura-data: {}

Tek bir düğüm için eş TLS’yi ayarlamayın ve KURA_PEERS değerini boş bir dize olarak ayarlayın. KURA_PEERS ayarlanmadığında Kura, statik eş keşfini KURA_NODE_URL üzerinden başlatır ve periyodik olarak o URL’nin /_internal/status uç noktasını kontrol eder. Eş TLS devre dışıyken, düğüm özel bir ağ adı üzerinden erişilebilir olsa bile KURA_NODE_URLhttp:// şemasını kullanmalıdır.

Bu örnekte KURA_CONTROL_PLANE_URL gerekli değildir çünkü yetkilendirme ve kullanım raporlayıcısı ikisi de Tuist temel URL’si olarak KURA_AUTH_TUIST_URL kullanır. KURA_ADVERTISED_HTTP_URL, düğümün panodaki istemciye yönelik adresini tanımlar. CLI’nın önbellek istekleri için bu adresi kullanması için Tuist sunucusunda TUIST_CACHE_ENDPOINTS=https://kura.acme.internal ayarını yapın.

Helm ile Kubernetes#

Kendiniz barındırdığınız Tuist sunucusu Kubernetes üzerinde çalışıyorsa, Kura’yı bağımsız Kura chart’ı ile yükleyin ve aynı kontrol düzlemi ayarlarını extraEnv üzerinden iletin. Tuist sunucu chart’ı bu Kura chart’ını alt chart olarak yüklemez.

Önce, Tuist sunucu chart’ını dağıtım düzeyindeki Kura kimlik bilgisiyle yapılandırın:

yaml
# tuist-values.yaml
server:
extraEnv:
- name: KURA_CONTROL_PLANE_CLIENT_ID
valueFrom:
secretKeyRef:
name: kura-control-plane
key: client-id
- name: KURA_CONTROL_PLANE_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: kura-control-plane
key: client-secret

Ardından Kura’yı aynı ad alanında aynı Secret ile yükleyin:

yaml
# kura-values.yaml
replicaCount: 1
config:
tenantId: "<permanent-kura-tenant>"
region: "office"
ingress:
enabled: true
className: nginx
hosts:
- host: kura.acme.internal
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- kura.acme.internal
secretName: kura-tls
extraEnv:
- name: KURA_CONTROL_PLANE_CLIENT_ID
valueFrom:
secretKeyRef:
name: kura-control-plane
key: client-id
- name: KURA_CONTROL_PLANE_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: kura-control-plane
key: client-secret
- name: KURA_AUTH_ENABLED
value: "1"
- name: KURA_AUTH_TUIST_URL
value: "https://tuist.acme.internal"
- name: KURA_REGISTRATION_URL
value: "https://tuist.acme.internal/_internal/kura/mesh/registrations"
- name: KURA_ADVERTISED_HTTP_URL
value: "https://kura.acme.internal"
bash
kubectl create namespace tuist
kubectl -n tuist create secret generic kura-control-plane \
--from-literal=client-id="<client_id>" \
--from-literal=client-secret="<secret>"
helm upgrade --install kura oci://ghcr.io/tuist/charts/kura \
--namespace tuist \
-f kura-values.yaml

Kura, Tuist sunucusundan farklı bir ad alanında çalışıyorsa, kura-control-plane Secret’ını her iki ad alanına da oluşturun veya senkronize edin.

Görüntüden gelen paketli Tuist hook’unu kullanırken extension.enabled ayarını boş bırakın; bu chart değeri, bir ConfigMap’ten özel bir hook bağlamak içindir. Chart sizin için KURA_NODE_URL, KURA_PEERS, headless hizmeti, kalıcılığı ve prob’ları oluşturur. replicaCount: 1 ile oluşturulan eş URL’si pod’un kendi kararlı DNS adıdır, bu nedenle küme içinde erişilebilir kalır ve yukarıda açıklanan tek düğüm uyarısını üretmez. Birden fazla kopya için chart, StatefulSet DNS’inden eş listesini oluşturur; iç eş düzleminde mTLS istediğinizde peerTls seçeneğini etkinleştirin ve bir TLS Secret sağlayın.

Birden fazla bağımsız düğüm çalıştırmak için, /tls konumuna monte edilen kendi eş TLS’nizi ekleyin (düğümlerin birbirine güvenmesi için ortak bir CA paylaşan, düğüm başına bir CA artı bir leaf sertifika ve anahtar), KURA_NODE_URL değerini https://...:<KURA_INTERNAL_PORT> olarak değiştirin ve KURA_PEERS ekleyin:

yaml
environment:
KURA_NODE_URL: "https://kura-1.acme.internal:7443"
KURA_PEERS: "https://kura-2.acme.internal:7443,https://kura-3.acme.internal:7443"
KURA_INTERNAL_TLS_CA_CERT_PATH: "/tls/ca.pem"
KURA_INTERNAL_TLS_CERT_PATH: "/tls/tls.crt"
KURA_INTERNAL_TLS_KEY_PATH: "/tls/tls.key"
volumes:
- ./tls:/tls:ro

Her topolojinin gerektirdikleri#

Sizin sağladıklarınızKöprülenmişBağımsız
Kontrol düzlemi istemcisi (client_id / secret)EvetEvet
KURA_NODE_URLEvetEvet
KURA_ADVERTISED_HTTP_URLEvetPano kaydı için; yönlendirme ayrıdır (aşağıya bakın)
CLI’ya yönlendirmeOtomatik (kayıt)Hazır kayıt kalp atışlarından otomatik
Veri + geçici birimEvetEvet
KURA_ENROLL_ON_BOOTEvetHayır (ca_unavailable döndürür)
Eş TLS’si (/tls CA + leaf)Hayır, kayıt bunu yazarYalnızca çok düğümlü bir ağ için
KURA_PEERS (eş listesi)Hayır, kayıt ağ geçidini tohumlarTek düğüm için boş; birden fazla düğüm için eş URL’leri

Gerekli yapılandırma#

Bu değişkenler topolojiden bağımsız olarak her düğümü yapılandırır (eş TLS aşağıda belirtilen istisnadır):

DeğişkenAçıklama
KURA_TENANT_IDHesabınızın kalıcı Kura kiracısı. Hesabı yeniden adlandırdıktan sonra orijinal değerini koruyun; bkz. Kalıcı kiracıyı seçin.
KURA_NODE_URLBu düğümün ağınız üzerindeki eş URL’si.
KURA_PEERSStatik eş keşif listesi. Tek bir bağımsız düğüm için boş bir dize olarak ayarlayın; çok düğümlü bir ağ için erişilebilir eş URL’lerini ayarlayın.
KURA_REGIONSerbest biçimli bir bölge etiketi (ör. office, ci).
KURA_PORT / KURA_INTERNAL_PORTÖnbellek bağlantı noktası (HTTP önbellek API’si ve REAPI gRPC tek bir dinleyicide birlikte barındırılır) ve ağ eş bağlantı noktası (4000 / 7443).
KURA_DATA_DIR / KURA_TMP_DIRDisk üzerindeki yapıt depolama ve geçici dizin.
KURA_INTERNAL_TLS_CA_CERT_PATH / KURA_INTERNAL_TLS_CERT_PATH / KURA_INTERNAL_TLS_KEY_PATHEş TLS dosyaları. Kayıt tarafından yazılır (köprülenmiş) veya sizin tarafınızdan sağlanır (çok düğümlü bağımsız). Tek düğüm için gerekli değildir; bunları atlayın ve bir http://KURA_NODE_URL kullanın.
KURA_OTEL_SERVICE_NAME / KURA_OTEL_DEPLOYMENT_ENVIRONMENTTelemetri için hizmet adı ve ortam etiketi.

Köprülenmiş düğümler ayrıca KURA_ENROLL_ON_BOOT, KURA_CONTROL_PLANE_URL ve kontrol düzlemi istemci kimlik bilgilerini ayarlar. KURA_REGISTRATION_URL ve KURA_ADVERTISED_HTTP_URL, düğümün Önbellek sayfasında görünmesini ve Kura etkin CLI istemcilerinin ona yönlendirilmesini sağlar (bkz. İstemciler düğümlerinize nasıl ulaşır).

Depolama ve tahliye#

Bir düğüm, yapıtları isteğe bağlı bir değişkenle ayarlayabileceğiniz bir CAS depolama bütçesine kadar KURA_DATA_DIR altında saklar:

DeğişkenAçıklama
KURA_CAS_CAPACITY_BYTESDüğümün bayt cinsinden CAS depolama bütçesi. Pozitif bir tamsayı olmalıdır. Ayarlanmadığında, bütçe KURA_DATA_DIR barındıran dosya sisteminin boyutunun %50’sidir.

Ayarlasanız da ayarlamasanız da, bütçe KURA_DATA_DIR barındıran dosya sisteminin %80’i ile sınırlıdır; böylece en eski segmenti tahliye etmeden önce yeni bir segment yazan döndürme işlemi diski dolduramaz. Bütçe, minimum 2,5 GiB olmak üzere tam 512 MiB segmentlere yuvarlanır. Düğüm, başlangıçta çözümlenen bütçeyi günlüğe kaydeder (resolved CAS segment ring limits).

Tahliye otomatiktir. Yapıtlar bir segment halkasında saklanır ve bütçeye ulaşıldığında en eski segment tahliye edilir. Eski segmentlerden okunan yapıtlar geçerli olanına yükseltilir, böylece sık kullanılan yapıtlar korunur ve tahliye davranışı en son kullanılanlara yakın olur.

KURA_DATA_DIR konumunu özel bir birime yerleştirin. Hem varsayılan bütçe hem de üst sınır, dosya sisteminin boş alanının değil toplam boyutunun yüzdesidir; bu nedenle aynı dosya sistemindeki diğer veriler, bütçenin varsaydığından daha az alan bırakabilir.

Önbellek isteklerinin kimlik doğrulaması#

Varsayılan olarak bir düğüm, ağınızda ona ulaşabilen herkese HTTP önbellek API’sini sunar. Yalnızca kuruluşunuzun kimliği doğrulanmış üyelerinin okuma ve yazma yapabilmesi için arayanların geçerli bir Tuist belirteci sunmasını zorunlu kılmak amacıyla düğümü Tuist sunucunuza işaretleyin. Yukarıdaki bağımsız kurulum bunu yapar.

DeğişkenDeğer
KURA_AUTH_ENABLED1
KURA_AUTH_TUIST_URLTuist sunucu URL’niz

Yetkilendirme, belirteçleri incelemek için zaten ayarladığınız kontrol düzlemi istemcisini (KURA_CONTROL_PLANE_CLIENT_ID / KURA_CONTROL_PLANE_CLIENT_SECRET) yeniden kullanır, bu nedenle ek bir kimlik bilgisine gerek yoktur. Kendi kendine barındırılan bir düğüm yalnızca inceleme modunda çalışır: herhangi bir kiracı için belirteç basabilecek ve asla paylaşılmayan simetrik Guardian JWT doğrulayıcı gizli anahtarını asla tutmaz, bu nedenle her istek sunucunuza karşı yetkilendirilir. Ona ulaşamayan bir düğüm hizmet vermek yerine reddeder ve bunu değiştiren bir ayar yoktur. Tuist tarafından yönetilen düğümler aynı yetkilendirmeyi çalıştırır; tek fark, doğrulama anahtarını da tutmalarıdır, bu da çoğu isteği yalnızca belirteçten çözümlemelerini sağlar.

Ağ#

Bir düğüm, hangi entegrasyonları etkinleştirdiğinize bağlı olarak giden bağlantılar kurar:

  • belirteç incelemesi (KURA_AUTH_TUIST_URL), kayıt kalp atışları (KURA_REGISTRATION_URL), kullanım (KURA_CONTROL_PLANE_URL veya KURA_AUTH_TUIST_URL) ve köprülenmiş topolojide kayıt için Tuist sunucunuz ve
  • köprülenmiş topolojide, çoğaltma için yönetilen ağın eş ağ geçidi.

Geliştiricileriniz ve CI, düğümün KURA_ADVERTISED_HTTP_URL adresine ulaşır (ve çok düğümlü bir ağ için düğümler eş bağlantı noktasında birbirine ulaşır). Bu adreslerin yalnızca ağınız içinde erişilebilir olması gerekir. Genel internete açık olmaları gerekmez.

Nasıl davranır#

  • Köprülenmiş. Başlangıçta düğüm kaydolur, yönetilen ağın tam önbelleğini çeker ve halkanın hizmet veren bir üyesine geçer. İlk çekme bir kez gerçekleşir ve önbelleğinizin boyutuna bağlı olarak WAN üzerinden biraz zaman alabilir. O andan itibaren, düğümdeki yazmalar sürekli olarak yönetilen ağa yayılır. Düğüm katıldıktan sonra yönetilen ağın başka yerlerinde yazılan yeni yapıtlar henüz sürekli olarak ona yayılmaz (planlanan bir geliştirme), bu nedenle katılım sırasındaki çekmeyi canlı bir yansıma yerine bir anlık görüntü olarak değerlendirin.
  • Bağımsız. Düğüm(ler) altyapınızda izole bir ağ olarak çalışır. Çoğaltma, varsa, yalnızca kendi düğümleriniz arasında gerçekleşir. Yapılandırıldığında Tuist’in rolü kontrol düzlemiyle sınırlıdır: pano görünürlüğü, önbellek uç noktası reklamı, kullanım ölçümü ve belirteç incelemesi. Asla düğümlerinizi sağlamaz, yükseltmez, eşleştirmez veya içlerine erişmez.

Doğrulama#

bash
curl --fail-with-body http://localhost:4000/ready # 200 once the node has joined and is serving
curl --fail-with-body http://localhost:4000/up # liveness + mesh membership

Köprülenmiş bir düğüm, ağı çekerken state: joining durumunu ve yakaladıktan sonra state: serving durumunu bildirir. Kayıt kalp atışları başladığında düğümünüz ayrıca hesabın Önbellek sayfasındaki Kayıtlı düğümler altında görünür.

Uzak önbelleğe almayı doğrulamak için önbelleğe alınmamış, önbelleklenebilir hedeflerle tuist cache komutunu çalıştırın ve Kura günlüklerinde başarılı yüklemeleri onaylayın. Sıfır çıkış durumu alone yapıtların depolandığını doğrulamaz.

Yükseltme#

bash
docker compose pull
docker compose up -d

Düğümler, tek bir sürüm farkı boyunca yan yana çalışacak şekilde tasarlanmıştır; bu nedenle birden fazla düğümde kademeli yükseltme yapmak güvenlidir.