Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:GitOps FAQ

Son Güncelleme:Oct 06, 2026

Bu konu, GitOps kullanımıyla ilgili sıkça sorulan soruları (SSS) yanıtlar.

Özel bir Git deposuna bağlanma

Güvenlik endişeleri nedeniyle, özel Git depoları genellikle genel internetten erişilebilir değildir. ACK One GitOps'u özel bir Git deposuna bağlamak için önce ağ bağlantısı kurmanız, ardından gerekli yapılandırmayı tamamlamanız gerekir.

1. Adım: Alan adı çözümlemesini yapılandırma

Aşağıdaki adımlarda Git deposu için örnek alan adı olarak git.abc.cn kullanılmıştır.

  1. Kurumsal ağınızı ACK One VPC ağına bağlayın. Daha fazla bilgi için bkz. Kurumsal Veri Merkezini VPC'ye Bağlama.

  2. VPC içindeki alan adı çözümlemesi için PrivateZone hizmetini kullanın.

    1. Alibaba Cloud DNS konsolu üzerinde oturum açın. Private Zone sayfasında User Defined Zones sekmesine tıklayın ve Add Zone seçeneğine tıklayın. İletişim kutusunda aşağıdaki parametreleri yapılandırın ve OK düğmesine tıklayın.

      • Authoritative Zone: abc.cn (Git deposu alan adı örneği olarak git.abc.cn kullanılmıştır)

      • Recursive Resolution Proxy for Subdomain Names: Enable

      • Effective Scope > Alibaba Cloud VPC: ACK One ile ilişkili VPC'yi seçin.

    2. Alan adları listesinde az önce oluşturduğunuz PrivateZone öğesini bulun. Actions sütununda Settings seçeneğine tıklayarak Settings sayfasını açın.

    3. Settings sayfasında Add Record seçeneğine tıklayın. İletişim kutusunda aşağıdaki parametreleri yapılandırın ve OK düğmesine tıklayın.

      • Record Type: A

      • Hostname: git (örnek olarak git.abc.cn kullanılmıştır)

      • Record Value: Dahili Git deposunun IP adresini girin.

2. Adım: Git deposuna bağlanma

Alan adı çözümlemesini yapılandırdıktan sonra ACK One GitOps özel Git deposuna erişebilir. Ardından uygulamaları dağıtmak üzere GitOps konsolu veya komut satırı arayüzü (CLI) üzerinden Git deposuna bağlanabilirsiniz. Daha fazla bilgi için bkz. Private Repositories.

Konsolda uygulama gruplama

Çok sayıda uygulamanız olduğunda bunları gruplamak kullanılabilirliği artırır. GitOps konsolunun sol gezinme bölmesinde şunları yapabilirsiniz:

  • Favorites Only, SYNC STATUS veya HEALTH STATUS filtrelerini uygulayın.

  • LABELS, PROJECTS, CLUSTERS, NAMESPACES veya AUTO SYNC kriterlerine göre gruplayın.

Uygulama dağıtımlarını kontrol etme

Özellikle otomatik CI/CD işlem hatlarında uygulama dağıtımlarını kontrol etmeniz sıklıkla gerekir. Aşağıdaki yöntemleri kullanabilirsiniz:

  • ManualSync modundaki uygulamaları kullanın. Kod gönderildikten sonra bir operasyon mühendisi uygulamayı inceler ve doğrular. Gereksinimleri karşılıyorsa Sync düğmesine manuel olarak tıklayarak uygulamayı hedef kümeye senkronize edebilir.

  • Dağıtım deposundaki görüntü sürümünü manuel olarak güncelleyin. Görüntü deposundaki değişiklikleri otomatik olarak izlemiyorsanız yeni görüntülerin bir operasyon mühendisi tarafından doğrulanması gerekir. Doğrulama tamamlandıktan sonra uygulama dağıtım deposundaki görüntü sürümünü manuel olarak güncelleyin; bu işlem Argo CD'de bir uygulama senkronizasyonunu tetikler.

  • Otomatik CI/CD işlem hattınızda iş kodu deposu için bir kod inceleme mekanizması oluşturun. Bir operasyon mühendisi kod incelemesini onaylayıp kodu birleştirdikten sonra CI işlem hattı görüntüyü otomatik olarak derler ve gönderir. Argo CD ardından görüntü değişikliğini otomatik olarak algılar ve AutoSync ile yapılandırılmış ortamlara dağıtır. ManualSync için yapılandırılmış ortamlara da manuel olarak dağıtım yapabilirsiniz.

Argo CD repo-server Out of diskspace hatası bildirirse ne yapabilirim?

Belirti

kubectl -nargocd logs xxxx komutunu çalıştırarak günlükleri kontrol ettiğinizde repo-server aşağıdaki hata iletisini döndürür:

'git checkout --force xxx' failed exit status 128: error: unable to write file templates/deployment.yaml\nfat al: sha1 file '/tmp/_argocd-repo/xxx/.git/index.lock' write error. Out of diskspace...

Çözüm

Bu sorun, yetersiz disk alanı nedeniyle .git/index.lock dosyasına yazma işleminin başarısız olması sonucu oluşur. Sorunu çözmek için ACK One GitOps Argo CD bileşeni Pod'larının geçici depolama alanını artırın. Bu bileşenler Elastic Container Instance (ECI) üzerinde çalışır ve varsayılan olarak 30 GiB geçici depolama alanına sahiptir. Depolama alanını artırmak için şu adımları izleyin. Faturalandırma bilgileri için bkz. Geçici depolama alanı faturalandırması.

  1. ACK One konsolu üzerinden filo örneği için KubeConfig dosyasını alın ve kubectl kullanarak filo örneğine bağlanın. Daha fazla bilgi için bkz. Kümenin KubeConfig dosyasını alma ve kubectl ile kümeye bağlanma.

  2. İlgili Deployment'un Pod Şablonuna k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" ek açıklamasını ekleyin. Geçici depolama miktarını özelleştirebilirsiniz.

    • GitOps varsayılan moddaysa ek açıklamayı argocd-server Deployment'una ekleyin.

      kubectl edit deployment -nargocd argocd-server
    • GitOps Yüksek Kullanılabilirlik Modundaysa ek açıklamayı argocd-dex-imageupdate-repo-server Deployment'una ekleyin.

      kubectl edit deployment -nargocd argocd-dex-imageupdate-repo-server
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      ...
    ...
    spec:
      template:
        metadata:
          annotations:
            # This adds 20 GiB to the default 30 GiB, for a total of 50 GiB. The amount of extra temporary storage is customizable.
            k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"
          ...
        ...
      ...

Uygulama dışı kaynakların izlenmesini önleme

Arka Plan Bilgileri

Argo CD, Kubernetes kaynaklarını izlemek için app.kubernetes.io/instance etiketini kullanır. Bir kaynağın bu etiketi varsa ve değeri Uygulama adıyla eşleşiyorsa Argo CD bu kaynağı izler. Bu durum, Uygulama durumunun OutOfSync olarak kalmasına ve uygulama dışı kaynağın istenmeden silinmesine neden olabilir. Bu davranışı önlemek için aşağıdaki çözümlerden birini kullanın.

Çözümler

  • Çözüm 1: Filo örneğinin argocd/argocd-cm ConfigMap'ine resource.exclusions ekleyerek izlenen uygulama dışı kaynakları yoksayın. Aşağıdaki yapılandırma CiliumIdentity kaynaklarını yoksayar.

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  labels:
    app.kubernetes.io/name: argocd-cm
    app.kubernetes.io/part-of: argocd
data:
  ...
  resource.exclusions: |
    - apiGroups:
      - cilium.io
      kinds:
      - CiliumIdentity
      clusters:
      - "*"
  • Çözüm 2: Filo örneğinin argocd/argocd-cm ConfigMap'ine application.instanceLabelKey: argocd.argoproj.io/instance özel izleme etiketini ekleyin. Bu değişiklikten sonra Argo CD tarafından yönetilen kaynaklar argocd.argoproj.io/instance etiketini kullanır. Bu sayede Argo CD, yalnızca app.kubernetes.io/instance etiketine sahip diğer kaynakları izlemez. Bu yapılandırmayı uyguladıktan sonra mevcut Uygulamalar yeniden senkronize edilene kadar OutOfSync durumunda görünebilir.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-cm
      labels:
        app.kubernetes.io/name: argocd-cm
        app.kubernetes.io/part-of: argocd
    data:
      ...
      application.instanceLabelKey: argocd.argoproj.io/instance

ConfigMap değişikliklerinden sonra bileşenleri yeniden başlatma

Argo CD'de bazı ConfigMap değişiklikleri yalnızca ilgili Argo CD bileşeni yeniden başlatıldıktan sonra etkin olur.

Aşağıdaki tabloda sıkça değiştirilen ConfigMap'ler listelenmiştir.


Parametre


Açıklama


Yeniden başlatma gerekir mi?


argocd-cm


Özel OpenID Connect (OIDC), özel erişim url ve yerel kullanıcılar gibi ayarları yapılandırmak için kullanılır.


Genellikle yeniden başlatma gerekmez. Ancak yapılandırma etkili olmazsa argocd-server'ı yeniden başlatın.


argocd-cmd-params-cm


Argo CD bileşenleri için ortam değişkenlerini yapılandırmak için kullanılır.


İlgili bileşenin veya argocd-server'ın yeniden başlatılması gerekir.


argocd-rbac-cm


Argo CD'nin Role-Based Access Control (RBAC) izinlerini yapılandırmak için kullanılır.


Genellikle yeniden başlatmaya gerek yoktur.


argocd-image-updater-config


image-updater yapılandırmalarını yönetmek için kullanılır.


İlgili bileşenin veya argocd-server'ın yeniden başlatılması gerekir.


argocd-notifications-cm


argocd-notification-controller yapılandırmalarını yönetmek için kullanılır.


İlgili bileşenin veya argocd-server'ın yeniden başlatılması gerekir.

Not

ACK One GitOps iki çalışma modu sunar:

  1. Varsayılan modda tüm bileşenler tek bir Deployment içinde çalışır. Değişiklikleri uygulamak için argocd-server Deployment'unu yeniden başlatın.

  2. Yüksek Kullanılabilirlik Modu nda bileşenler birden çok Deployment'a ayrılır. Gerektiğinde bireysel bileşenleri yeniden başlatabilirsiniz.

    1. argocd-server

    2. argocd-application-controller: application-controller ve applicationset-controller içerir.

    3. argocd-repo-server

    4. argocd-dex-imageupdate-notification: image-updater, notification-controller ve dex içerir.

    5. argocd-redis

Bir bileşeni yeniden başlatmak için şu adımları izleyin:

  1. Multi-cluster GitOps sayfasında Argo CD Component daraltılabilir panelindeki GitOps bölümünü bulun.

  2. Argo CD Component yanındaki Restart seçeneğine tıklayın.

  3. İletişim kutusunda Select Application to Restart açılan listesinden yeniden başlatılacak bileşeni (örneğin argocd-server) seçin ve OK düğmesine tıklayın.

Git oluşturucusu dizin değişikliklerini yansıtmıyor

Belirti

Bir Argo CD ApplicationSet ile Git oluşturucusunu kullanırken Git deposundaki bağımlı bir dizin eklendiğinde veya yeniden adlandırıldığında yeni Application kaynaklarının oluşturulamadığını görebilirsiniz. ApplicationSet kaynağını hemen yeni dizin yolunu gösterecek şekilde güncellseniz bile bu sorun oluşabilir.

Çözüm

Bu sorun, Argo CD'nin bir dizin yolu değiştiğinde önbelleğini otomatik olarak yenilememesinden kaynaklanır. Sorunu çözmek için Git oluşturucusunu içeren ApplicationSet'e argocd.argoproj.io/application-set-refresh="true" ek açıklamasını ekleyerek yenilemeyi zorlayın. Aşağıdaki örneğe bakın:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  ···
  annotations:
    ···
    argocd.argoproj.io/application-set-refresh: "true"
spec:
  ···
  generators:
    - git:
        ···     
  template:
    ···