Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:OPA sidecar enjeksiyon kapsamını kontrol etme

Son Güncelleme:Oct 07, 2026

Open Policy Agent (OPA) eklentisi, uygulamalara bir OPA sidecar proxy enjekte ederek erişim kontrolü ilkelerini tanımlar. Belirli ad alanlarındaki uygulamalar için ayrıntılı yetkilendirme ve erişim kontrolü uygulamak üzere OPA enjeksiyon kapsamı kontrolünü etkinleştirin. Bu özellik, yalnızca opa-istio-injection=enabled etiketiyle işaretlenmiş ad alanlarında bulunan podlara bir OPA sidecar proxy enjekte ederek daha ayrıntılı erişim kontrolü sağlar.

Önkoşullar

  • v1.12.4.19 veya sonraki bir sürüme sahip bir ASM örneğine eklenmiş bir kümeniz olmalıdır. Daha fazla bilgi için bkz. Bir kümeyi ASM örneğine ekleme.

  • default ve develop ad alanlarını oluşturmuş olmalısınız. Daha fazla bilgi için bkz. Ad alanlarını ve kotaları yönetme.

  • default ad alanında bir Nginx uygulaması ve develop ad alanında bir Sleep uygulaması dağıtmış olmalısınız. Daha fazla bilgi için bkz. Durum bilgisi tutmayan iş yükü Dağıtımı oluşturma.

    Örnek uygulamalar

    1. Aşağıdaki içeriğe sahip nginx.yaml ve sleep.yaml dosyalarını oluşturun.

      nginx.yaml

      apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
              sidecarset-injected: "true"
          spec:
            containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
      spec:
        ports:
          - name: http
            port: 80
            protocol: TCP
            targetPort: 80
        selector:
          app: nginx
        type: ClusterIP

      sleep.yaml

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: sleep
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: sleep
        labels:
          app: sleep
          service: sleep
      spec:
        ports:
        - port: 80
          name: http
        selector:
          app: sleep
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sleep
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: sleep
        template:
          metadata:
            labels:
              app: sleep
          spec:
            terminationGracePeriodSeconds: 0
            serviceAccountName: sleep
            containers:
            - name: sleep
              image: curlimages/curl
              command: ["/bin/sleep", "infinity"]
              imagePullPolicy: IfNotPresent
              volumeMounts:
              - mountPath: /etc/sleep/tls
                name: secret-volume
            volumes:
            - name: secret-volume
              secret:
                secretName: sleep-secret
                optional: true
      ---
    2. Nginx uygulamasını default ad alanında ve Sleep uygulamasını develop ad alanında dağıtmak için aşağıdaki komutları çalıştırın.

      kubectl apply -f nginx.yaml -n default
      kubectl apply -f sleep.yaml -n develop

Adım 1: OPA'yı ve kapsam kontrolünü etkinleştirme

Bu konuda, OPA eklentisini ve enjeksiyon kapsamı kontrolünü etkinleştirdikten sonra default ad alanına opa-istio-injection=enabled etiketini eklersiniz ancak develop ad alanına opa-istio-injection=enabled etiketini eklemezsiniz. Ardından, enjeksiyon kapsamının başarıyla kontrol edilip edilmediğini doğrulamak amacıyla OPA sidecar proxy'nin Nginx ve Sleep uygulamalarına enjekte edilip edilmediğini kontrol edebilirsiniz.

  1. ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Service Mesh > Mesh Management öğelerini seçin.

  2. Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde Mesh Security Center > OPA Policy öğelerini seçin.

  3. OPA Policy sayfasında Enable Open Policy Agent (OPA) Plugin ve Enable OPA Injection Scope Control seçeneklerini belirleyin. Enable OPA seçeneğini tıklayın ve ardından Note iletişim kutusunda OK seçeneğini tıklayın.

Adım 2: Ad alanına bir etiket ekleme

Bu konuda, ACK konsolunda varsayılan ad alanına opa-istio-injection=enabled etiketinin nasıl ekleneceği açıklanmaktadır. Alternatif olarak, kubectl aracını kullanarak kümeye bağlanabilir ve kubectl label namespace default opa-istio-injection=enabled --overwrite komutunu çalıştırabilirsiniz. Daha fazla bilgi için bkz. kubeconfig dosyası alma ve kubectl ile kümeye bağlanma.

  1. ACK konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.

  2. Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde Namespaces and Quotas seçeneğini tıklayın.

  3. Namespaces sayfasında default ad alanını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.

  4. Edit Namespace iletişim kutusunda etiket adını opa-istio-injection ve değerini enabled olarak ayarlayın. Add seçeneğini tıklayın ve ardından OK seçeneğini tıklayın.

Adım 3: Uygulamaları yeniden başlatma

Podlarını silerek uygulamaları yeniden başlatın. Yeniden başlatma işleminden sonra OPA sidecar proxy otomatik olarak enjekte edilir.

  1. ACK konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.

  2. Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde Workloads > Pods seçeneklerini tıklayın.

  3. Pods sayfasının üst kısmında Namespace seçeneğini default olarak ayarlayın. Nginx uygulama podu için Actions sütununda More > Delete seçeneğini tıklayın. Note iletişim kutusunda OK seçeneğini tıklayın.

    Bir uygulamanın birden çok pod'u varsa, uygulamayı yeniden başlatmak için tüm pod'ları silmeniz gerekir. Pod durumu Running olarak değiştiğinde yeniden başlatma tamamlanır.

  4. Sleep uygulamasının develop ad alanındaki pod'unu yeniden başlatmak için önceki adımları tekrarlayın.

Adım 4: Enjeksiyon kapsamını doğrulama

  1. ACK konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.

  2. Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde Workloads > Pods seçeneklerini tıklayın.

  3. Pods sayfasında OPA sidecar proxy'nin Nginx ve Sleep uygulamalarına enjekte edilip edilmediğini kontrol edin.

    • Namespace seçeneğini default olarak ayarlayın ve Nginx uygulama podunun adını tıklayın. Containers sekmesinde opa-istio konteyneri görünür durumdadır; bu, OPA sidecar proxy'nin Nginx uygulamasına enjekte edildiğini gösterir.

    • Namespace seçeneğini develop olarak ayarlayın ve Sleep uygulamasının adını tıklayın. Containers sekmesinde opa-istio görüntülenmez. Yalnızca istio-proxy ve sleep konteynerleri listelenir ve opa-istio konteyneri bulunmaz. Bu durum, OPA sidecar proxy'nin Sleep uygulamasına enjekte edilmediğini ve OPA enjeksiyon kapsamı kontrolünün etkili olduğunu gösterir.

    Sonuçlar, OPA sidecar proxy'nin opa-istio-injection=enabled etiketine sahip ad alanlarındaki uygulamalara enjekte edildiğini, ancak bu label etiketine sahip olmayan ad alanlarındaki uygulamalara enjekte edilmediğini göstermektedir. Bu da OPA enjeksiyon kapsamını başarıyla kontrol ettiğinizi doğrular.