Docs

Dokümantasyon / Pipeline'lar

Secret'lar ve variable'lar

Pipeline'larınızın kullandığı değerleri ve secret'ları tanımlayın; kapsamları, Kubernetes secret'larını, harici secret store'ları ve OIDC token'larını kullanın.

Variable'lar#

Variable'lar step config'lerinde {{.KEY}} olarak kullanılan değerlerdir. Altyapı > Değişkenler sayfasında Yeni değişken ile oluşturulur. Bir repo'ya özel variable'ları repo binding sayfasından da ekleyebilirsiniz.

  • Key UPPER_SNAKE_CASE biçimindedir, örneğin API_BASE_URL. Oluşturulduktan sonra değiştirilemez; silip yeniden oluşturmanız gerekir.
  • Bir step config'inde {{.API_BASE_URL}} olarak kullanılır.
- name: Deploy
  kind: K8S_DEPLOY
  config:
    image: "{{.ImageTag}}"
    env:
      API_BASE_URL: "{{.API_BASE_URL}}"

Tipler#

Tip Değer nerede durur Notlar
Düz (PLAIN) EJO'da, açık metin. Gizli olmayan ayarlar için.
Secret (SECRET) EJO'da, şifreli. Log'larda maskelenir. Ayrıca {{.KEY_FILE}} ile değeri içeren bir dosyanın yolu olarak kullanılabilir.
K8s Secret (K8S_SECRET) Cluster'ınızdaki bir Kubernetes Secret'ında. Namespace, Secret name ve Secret key ile gösterilir. Değeri agent okur.
External secret (EXTERNAL_SECRET) Kendi secret yöneticinizde (Vault, AWS Secrets Manager, Azure Key Vault, CyberArk). Değeri agent kendi kimliğiyle okur; EJO değeri hiç görmez.

Kaydedilmiş bir secret'ın değeri tekrar gösterilmez. Düzenlerken değer alanını boş bırakırsanız mevcut değer korunur.

İpucu: Bir dosya bekleyen araçlar için (örneğin bir kubeconfig ya da sertifika) {{.KEY_FILE}} kullanın. Değer agent'ta geçici bir dosyaya yazılır ve step'e dosyanın yolu verilir.

Kapsamlar ve öncelik#

Kapsam Nerede geçerli
Global — her environment Tüm repo'lar ve environment'lar.
Repo Yalnızca o repo binding'i. Aynı key'e sahip global variable'ı override eder.
Environment Yalnızca o environment'taki job'lar. Aynı key'e sahip global ve repo variable'larını override eder.

Aynı key birden fazla kapsamda tanımlıysa öncelik sırası şöyledir: global < repo < environment. En spesifik kapsam kazanır.

Uyarı: Fork'tan açılan PR'lar SECRET, K8S_SECRET ve EXTERNAL_SECRET değerlerini almaz. Bu tür PR'larda bu değerlere ihtiyaç duyan step'ler fail olabilir.

Harici secret store'lar#

Secret'larınız zaten HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, CyberArk Conjur veya CyberArk Central Credential Provider'da duruyorsa onları EJO'ya kopyalamanız gerekmez.

Ön koşullar#

  • Admin rolü.
  • external_secrets yeteneğine sahip güncel bir agent. Eski agent'larda run "upgrade the agent" mesajıyla durur.
  • Agent'ın secret yöneticinize kendi kimliğiyle erişebilmesi: bir Kubernetes service account, bir IAM rolü ya da agent host'undaki bir token dosyası.

Kurulum#

  1. Ayarlar > Secret store'lar sayfasında Yeni secret store oluşturun.
  2. Bir ad (örneğin vault-prod), bir provider (VAULT, AWS_SM, AZURE_KV, CYBERARK_CONJUR, CYBERARK_CCP) ve bağlantı ayarlarını girin. Bağlantı ayarları gizli olmayan bilgilerdir: Vault adresi, AWS region'ı, Key Vault URL'i gibi. Kimlik bilgisine benzeyen bir alan (token, password, secret_id gibi) reddedilir.
  3. İzin verilen environment'lar listesine store'u kullanabilecek environment'ları ekleyin. Liste varsayılan olarak boştur; listede olmayan bir environment'taki run store'u kullanamaz ve hata mesajı store'u ve environment'ı adlandırır.
  4. Bağlantıyı test et ile agent'ın store'a erişebildiğini kontrol edin.
  5. Altyapı > Değişkenler sayfasında tipi External secret olan bir variable oluşturun ve store'u, path'i ve field'ı seçin.

Değer SECRET gibi davranır: log'larda maskelenir ve {{.KEY_FILE}} olarak da kullanılabilir. EJO her run'ın hangi secret versiyonunu kullandığını deployment sayfasında gösterir; değeri ya da hash'ini değil.

Pipeline identity (OIDC token'ları)#

EJO, pipeline'lar için bir OpenID Connect sağlayıcısı olarak çalışabilir. Bir SHELL step'i, hangi servis, environment ve deployment'a ait olduğunu söyleyen kısa ömürlü bir JWT ister. Bu token'a güvenen bulut sağlayıcıları ve secret store'lar saklanmış bir secret yerine onu kabul eder.

- name: Deploy
  kind: SHELL
  image: amazon/aws-cli:2.17.0
  id_tokens:
    AWS_JWT:
      aud: sts.amazonaws.com
  config:
    command: aws sts get-caller-identity
  • Token step'e $AWS_JWT ve dosya olarak $AWS_JWT_FILE şeklinde verilir ve log'larda maskelenir. Mümkünse dosyayı kullanın.
  • aud sabit bir değer olmalıdır; template kullanılamaz.
  • Token'ın ömrü varsayılan olarak 10 dakika, en fazla 1 saattir.
  • Fork'tan açılan PR'lar token almaz.
  • Token'ın sub claim'i service:<servis>:env:<environment> biçimindedir. PR run'larında sonuna :pull_request eklenir. Güven kurallarını tam sub değerine bağlayın.
  • Discovery belgesi https://acme.ejocloud.com/.well-known/openid-configuration adresindedir.

Ayarlar > Pipeline identity sayfası (yalnızca admin) token ömrünü, izin verilen audience listesini ve imza anahtarlarını yönetir; AWS, GCP, Azure ve Vault için örnek güven politikalarını da gösterir.

Vault, Conjur, AWS Secrets Manager ve Azure secret store'ları agent'ın kendi kimliği yerine bu token'la giriş yapabilir: store ayarlarında identity alanını ejo_pipeline_token yapın ve audience belirleyin.

Sonraki adımlar#

Son güncelleme: 16 Ekim 2026