Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:ASM ağ geçidi için CRD alanları

Son Güncelleme:Oct 07, 2026

Service Mesh (ASM), kind değeri IstioGateway ve apiVersion değeri istio.alibabacloud.com/v1beta1 olan bir CustomResourceDefinition (CRD) API kaynağı sağlar. ASM ayrıca bu CRD'deki değişiklikleri izleyen ve çalıştığı Kubernetes kümesinin Service, Deployment ve ServiceAccount kaynaklarını güncelleyen bir denetleyici sunar.

Yapılandırma örnekleri

Ön koşullar

Bir Container Service for Kubernetes (ACK) kümesi ASM örneğinize eklenmiştir. Daha fazla bilgi için bkz. ASM örneğine küme ekleme.

Önemli

ASM ağ geçitleri istio-system ad alanında dağıtılmalıdır. Ağ geçidi, başlangıçta yapılandırmalarını bu şekilde okuyabilir. Istio 1.6 ve sonraki sürümlerde, başka bir ad alanında dağıtılan ASM ağ geçidi yapılandırmalarını okuyamadığı için başlatılamaz.

Örnek 1: Kubernetes API kullanarak giriş ağ geçidi oluşturma ve yönetme

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

  2. Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde ASM Gateways > Ingress Gateway seçeneklerini seçin.

  3. Ingress Gateway sayfasında Create from YAML seçeneğini tıklayın.

  4. Create sayfasında Name alanına giriş ağ geçidi için bir ad girin, istio-system değerini Namespace açılır listesinden seçin, YAML dosyasındaki aşağıdaki alanları yapılandırın ve ardından Create seçeneğini tıklayın.

    CRD alanları hakkında daha fazla bilgi için bkz. CRD alanları.

    YAML dosyasını görüntülemek için genişletin

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:   
      name: "myexample-customingressgateway"
      namespace: "istio-system"
      labels:
        asm-gateway-type: ingress
    spec:
      runAsRoot: true
      dnsPolicy: ClusterFirst
      hostNetwork: false
      clusterIds:
        - "${Actual cluster ID}"
        - "${Actual cluster ID}" # The ASM gateway can be deployed in multiple clusters. 
      cpu: 
        targetAverageUtilization: 80
      env:
        - name: "envname1"
          value: "envvalue1"
      externalTrafficPolicy: Local
      gatewayType: ingress
      podLabels:
        key1: value1
      ports:  
      - name: status-port    
        port: 15020    
        targetPort: 15020  
      - name: http2    
        port: 80    
        targetPort: 80  
      - name: https
        port: 443
        targetPort: 443
      - name: tls    
        port: 15443    
        targetPort: 15443  
      replicaCount: 1  
      resources:
        limits:
          cpu: '2'
          memory: 2G
        requests:
          cpu: 200m
          memory: 256Mi
    # - name: config-volume-lua
    #  configMapName: lua-libs
    #  mountPath: /var/lib/lua
    # secretVolumes:
    # - name: myexample-customingressgateway-certs
    #   secretName: istio-myexample-customingressgateway-certs
    #   mountPath: /etc/istio/myexample-customingressgateway-certs
      serviceType: LoadBalancer  
      serviceAnnotations:    
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet  
      serviceLabels:
        serviceLabelKey1: "serviceLabelValue1"
      podAnnotations:
        podAnnotationsKey1: "podAnnotationsValue1"
      rollingMaxSurge: "100%"
      rollingMaxUnavailable: "25%"
      overrides:
        cluster1Id:
          replicaCount: 1 
          resources:
            limits:
              cpu: '2'
              memory: 2G
            requests:
              cpu: 200m
              memory: 256Mi
          serviceAnnotations:    
            service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
            service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
        cluster2Id:
          replicaCount: 2
          resources:
            limits:
              cpu: '4'
              memory: 4G
            requests:
              cpu: 400m
              memory: 512Mi
          serviceAnnotations:    
            service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
            service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s2.small"
    Not

    Giriş ağ geçidini yönetmek için Kubernetes Go Client kullanmanız gerekiyorsa bkz. ASM ağ geçidi için Go struct'ları.

  5. Giriş ağ geçidinin hizmet bilgilerini görüntüleyin:

    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 Network > Services seçeneklerini tıklayın.

    3. Services sayfasının üst kısmında istio-system değerini Namespace açılır listesinden seçin.

    4. Hizmet listesinde, istediğiniz giriş ağ geçidinin hizmetinin adını tıklayarak bilgilerini görüntüleyin.

  6. Giriş ağ geçidinin pod bilgilerini görüntüleyin.

    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 istio-system değerini Namespace açılır listesinden seçin.

    4. Pod listesinde giriş ağ geçidine ait bir pod bulun ve pod bilgilerini görüntülemek için pod adına tıklayın.

Örnek 2: Kubernetes API kullanarak çıkış ağ geçidi oluşturma ve yönetme

ASM, mesh içindeki tüm giden trafiği yönlendirmek üzere çıkış ağ geçidi hizmeti sağlar.

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

  2. Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde ASM Gateways > Egress Gateway seçeneklerini seçin.

  3. Egress Gateway sayfasında Create from YAML seçeneğini tıklayın.

  4. Create sayfasında çıkış ağ geçidi için bir ad girin, Name alanına adı yazın, istio-system değerini Namespace açılır listesinden seçin, YAML dosyasındaki aşağıdaki alanları yapılandırın ve ardından Create seçeneğini tıklayın.

    CRD alanları hakkında daha fazla bilgi için bkz. CRD alanları.

    YAML dosyasını görüntülemek için genişletin

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      name: egressgateway
      namespace: istio-system
      labels:
        asm-gateway-type: egress
    spec:
      autoCreateGatewayYaml: false
      clusterIds:
        - ${Actual cluster ID}
      disableContainerPortExposed: true
      dnsPolicy: ClusterFirst
      gatewayType: egress
      hostNetwork: false
      podLabels:
        security.istio.io/tlsMode: istio
      ports:
        - name: http-0
          port: 80
          protocol: HTTP
          targetPort: 80
        - name: https-1
          port: 443
          protocol: HTTPS
          targetPort: 443
      readinessProbe: {}
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 4G
        requests:
          cpu: 200m
          memory: 256Mi
      rollingMaxSurge: 25%
      rollingMaxUnavailable: 25%
      runAsRoot: true
      serviceType: ClusterIP
  5. Çıkış ağ geçidinin hizmet bilgilerini görüntüleyin:

    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 Network > Services seçeneklerini tıklayın.

    3. Services sayfasının üst kısmında istio-system değerini Namespace açılır listesinden seçin.

    4. Hizmet listesinde, istediğiniz çıkış ağ geçidinin hizmetinin adını tıklayarak bilgilerini görüntüleyin.

  6. Çıkış ağ geçidinin pod bilgilerini görüntüleyin.

    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 istio-system değerini Namespace açılır listesinden seçin.

    4. Pod listesinde çıkış ağ geçidine ait bir pod bulun ve pod bilgilerini görüntülemek için pod adına tıklayın.

CRD alanları

Alan

Açıklama

Varsayılan değer

metadata.name

ASM ağ geçidinin adı. Oluşturulan Kubernetes Service ve Deployment kaynaklarının her ikisi de istio-{metadata.name alanının değeri} olarak adlandırılır.

Yok

metadata.namespace

ASM ağ geçidinin dağıtıldığı ad alanı. Oluşturulan Kubernetes Service ve Deployment kaynakları bu ad alanında yer alır.

Önemli

Oluşturulan Kubernetes hizmetinin ve dağıtımının Istio 1.6 ve sonraki sürümlerde kullanılabilir olmasını sağlamak için ad alanı istio-system olmalıdır.

istio-system

clusterIds

ASM ağ geçidini dağıtmak istediğiniz kümelerin kimlikleri. Değer bir dizidir. Kümeler geçerli ASM örneğinde yönetiliyor olmalıdır.

Yok

env

ASM ağ geçidi podunun ortam değişkenleri. Değer bir dizidir.

Yok

externalTrafficPolicy

Ağ geçidinin harici trafiği düğüm düzeyindeki uç noktalara mı yoksa küme genelindeki uç noktalara mı yönlendireceğini belirtir. Geçerli değerler: Cluster veya Local.

Not

Bu alan yalnızca giriş ağ geçitleri için kullanılabilir.

Cluster

ports

ASM ağ geçidi podu için tanımlanan bağlantı noktaları ve protokoller. Değer bir dizidir. Örneğin,

  • name: http2 port: 80 targetPort: 80 protocol: HTTP2

  • name: https port: 443 targetPort: 443 protocol: HTTPS

Not

1.9.7.107'den önceki sürümlerde protocol alanı TCP olarak ayarlanmalıdır.

Yok

gatewayType

ASM ağ geçidinin türü. Geçerli değerler: ingress ve egress.

  • ingress: mesh içindeki tüm gelen trafiği yönlendiren bir giriş ağ geçidini gösterir.

  • egress: mesh içindeki tüm giden trafiği yönlendiren bir çıkış ağ geçidini gösterir.

ingress

replicaCount

Pod çoğaltma sayısı.

1

configVolumes

ASM ağ geçidi poduna bağlanan ConfigMap biriminin bilgileri. Örnek:

- name: config-volume-lua
  configMapName: lua-libs
  mountPath: /var/lib/lua

Yok

resources

ASM ağ geçidi podunun kaynak yapılandırmaları.

  • limits:

    • cpu: '2'

    • memory: 2G

  • requests:

    • cpu: 200m

    • memory: 256Mi

secretVolumes

ASM ağ geçidi poduna bağlanan gizli dizi biriminin bilgileri. Örnek:

- name: myexample-customingressgateway-certs
  secretName: istio-myexample-customingressgateway-certs
  mountPath: /etc/istio/myexample-customingressgateway-certs

Yok

serviceType

ASM ağ geçidinin hizmet türü. Geçerli değerler: LoadBalancer, NodePort ve ClusterIP. Çıkış ağ geçitleri için bu alanın değeri genellikle ClusterIP olarak ayarlanır.

Önemli

Veri düzleminde kayıtlı bir küme kullanıyorsanız ve bu alan LoadBalancer olarak ayarlanmışsa, kümenin LoadBalancer Hizmetlerini desteklediğinden emin olun. Aksi takdirde ASM ağ geçitleri oluşturulamayabilir.

LoadBalancer

loadBalancerClass

ASM ağ geçidinin loadBalancerClass değeri. Bu alan yalnızca serviceType parametresi LoadBalancer olarak ayarlandığında geçerlidir. Bu alan, v1.18 veya sonraki sürümlerdeki ASM örnekleri tarafından desteklenir. Daha fazla bilgi için bkz. NLB örneğini giriş ağ geçidi ile ilişkilendirme.

Yok

serviceAnnotations

ASM ağ geçidinin açıklamaları. Örnek: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: 'on' service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: '20'. Yaygın açıklamalar hakkında daha fazla bilgi için bkz. CLB örneklerini yapılandırmak için Hizmetin YAML dosyasına açıklama ekleme.

Not

Bu alan yalnızca serviceType değeri LoadBalancer olan ağ geçitleri için kullanılabilir. Çıkış ağ geçitleri için bu alan genellikle yapılandırılmaz.

Yok

serviceLabels

ASM ağ geçidinin etiketleri.

Yok

podLabels

ASM ağ geçidi podunun etiketleri.

Yok

podAnnotations

ASM ağ geçidi podunun açıklamaları.

Yok

rollingMaxSurge

Yuvarlanma güncellemesi sırasında beklenen çoğaltma sayısının üzerine planlanan maksimum pod sayısı. Değer mutlak bir değer veya yüzde olabilir.

"100%"

rollingMaxUnavailable

Yuvarlanma güncellemesi sırasında kullanılamaz durumda olabilecek maksimum pod sayısı. Değer mutlak bir değer veya yüzde olabilir.

"25%"

overrides

Belirli kümeler için farklı ayarlar yapılandırır. Bu alan, clusterIds alanında iki veya daha fazla küme belirtildiğinde kullanılabilir. Değer, anahtar-değer çiftleri içeren MAP türündedir.

Not
  • key: clusterIds alanında belirtilen bir küme kimliği.

  • Aşağıdaki listede overrides alanı altında yapılandırabileceğiniz bazı parametreler açıklanmaktadır:

    • serviceAnnotations

    • podAnnotations

    • resources

    • replicaCount

    • Yatay Pod Otomatik Ölçeklendirme (HPA) ile ilgili yapılandırmalar (1.16 veya sonraki sürümlerdeki ASM örneklerinde desteklenir)

    • serviceType (1.16 veya sonraki sürümlerdeki ASM örneklerinde desteklenir)

Yok

kernel.enabled

Özel çekirdek alanlarının etkinleştirilip etkinleştirilmeyeceğini belirtir.

false

kernel.parameters

Çekirdek alanları. Aşağıdaki çekirdek alanları desteklenir:

  • net.core.somaxconn

  • net.core.netdev_max_backlog

  • net.ipv4.tcp_rmem

  • net.ipv4.tcp_wmem

  • net.ipv4.ip_local_port_range

  • net.ipv4.tcp_fin_timeout

  • net.ipv4.tcp_tw_timeout

  • net.ipv4.tcp_tw_reuse

  • net.ipv4.tcp_tw_recycle

  • net.ipv4.tcp_timestamps

  • net.ipv4.tcp_retries2

  • net.ipv4.tcp_slow_start_after_idle

  • net.ipv4.tcp_max_orphans

  • net.ipv4.tcp_max_syn_backlog

  • net.ipv4.tcp_no_metrics_save

  • net.ipv4.tcp_autocorking

  • kernel.printk

  • vm.swappiness

Not

ASM tarafından desteklenen belirli çekirdek alanları, ana bilgisayarın çekirdek sürümü nedeniyle geçersiz hale gelebilir. Bu durum oluşursa ASM ağ geçidi podu hata bildirebilir.

ASM ağ geçidi podu tarafından bildirilen hataları görüntülemek için kubectl describe pod komutunu çalıştırabilirsiniz. Geçersiz alanları sildikten sonra kapsayıcılar beklendiği gibi başlayabilir.

Tüm çekirdek alanlarının değerleri dize biçiminde olmalıdır. YAML, sayıları sayısal değerler olarak tanır. Bu nedenle, her bir değeri çift tırnak işaretleri ("") içine almalısınız. Örnek: net.core.somaxconn: "65535".

Yok

compression.enabled

Giriş ağ geçidi için sıkıştırma özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir.

Not

compression ile ilgili alanlar yalnızca giriş ağ geçitleri için kullanılabilir.

false

compression.content_type

Content-Type üstbilgisiyle belirtilen, sıkıştırılacak veri türleri. Örnekler:

  • text/html

  • application/json

Yok

compression.disable_on_etag_header

  • Bir HTTP yanıtı ETag üstbilgisi içerdiğinde sıkıştırma özelliğinin devre dışı bırakılıp bırakılmayacağını belirtir. Alan true olarak ayarlanırsa, bir HTTP yanıtında ETag üstbilgisi bulunduğunda sıkıştırma özelliği devre dışı bırakılır.

  • Alan false olarak ayarlanırsa, bir HTTP yanıtında ETag üstbilgisi bulunduğunda sıkıştırma özelliği etkinleştirilir.

false

compression.min_content_length

Sıkıştırmanın tetiklendiği eşik. Alan değeri Content-Length üstbilgisinin boyutunu gösterir.

30

compression.remove_accept_encoding_header

  • Bir istemci tarafından gönderilen HTTP isteğinin Accept-Encoding üstbilgisinin, giriş ağ geçidi bu isteği bir yukarı akış sunucusuna iletmeden önce kaldırılıp kaldırılmayacağını belirtir. Alan true olarak ayarlanırsa, Accept-Encoding üstbilgisi HTTP isteğinden kaldırılır.

  • Alan false olarak ayarlanırsa, Accept-Encoding üstbilgisi HTTP isteğinde korunur.

false

compression.gzip

Sıkıştırma biçimi. Yalnızca GZIP biçimi desteklenir. Sıkıştırma özelliğini etkinleştirmek istiyorsanız bu alan gereklidir. Diğer tüm alanlar için varsayılan değerler kullanılıyorsa bu alanı boş bırakmalısınız. Örnek: gzip: {}.

Yok

compression.gzip.memory_level

zlib kitaplığının bellek kullanım düzeyi. Geçerli değerler: 1 ila 9. Bu alanın daha büyük bir değeri, daha yüksek bellek kullanımı ancak daha yüksek sıkıştırma hızı ve daha iyi sıkıştırma kalitesi sağlar.

5

compression.gzip.compression_level

zlib kitaplığı tarafından kullanılan sıkıştırma düzeyi. Geçerli değerler:

  • COMPRESSION_LEVEL_1

  • COMPRESSION_LEVEL_2

  • COMPRESSION_LEVEL_3

  • COMPRESSION_LEVEL_4

  • COMPRESSION_LEVEL_5

  • COMPRESSION_LEVEL_6

  • COMPRESSION_LEVEL_7

  • COMPRESSION_LEVEL_8

  • COMPRESSION_LEVEL_9

  • DEFAULT_COMPRESSION

  • BEST_COMPRESSION

  • BEST_SPEED

Not

BEST_COMPRESSION en yüksek sıkıştırma kalitesini gösterir. BEST_SPEED en yüksek sıkıştırma hızını gösterir. Aşağıdaki listede bazı sıkıştırma düzeyleri açıklanmaktadır:

  • COMPRESSION_LEVEL_1, en hızlı sıkıştırma hızına ve düşük sıkıştırma oranına sahip olan BEST_SPEED'e eşdeğerdir.

  • COMPRESSION_LEVEL_9, BEST_COMPRESSION'e eşdeğerdir. 7 ila 9 arasındaki sıkıştırma düzeyleri en yüksek sıkıştırma oranına ve düşük sıkıştırma hızına sahiptir.

  • COMPRESSION_LEVEL_6, DEFAULT_COMPRESSION'a eşdeğerdir. 2 ila 6 arasındaki sıkıştırma düzeyleri, sıkıştırma oranı ve hız arasında denge kuran orta düzey sıkıştırma düzeyleridir.

DEFAULT_COMPRESSION

compression.gzip.compression_strategy

zlib kitaplığı tarafından kullanılan sıkıştırma politikası. Geçerli değerler:

  • DEFAULT_STRATEGY

  • FILTERED

  • FIXED

  • HUFFMAN_ONLY

  • RLE

Not

DEFAULT_STRATEGY 

Bu sıkıştırma politikası, altta yatan varsayılan davranışı kullanan ve çoğu durumda tatmin edici sıkıştırma sonuçları üretebilen varsayılan sıkıştırma politikasıdır.

FILTERED 

Bu sıkıştırma politikası, yinelenen verilerin bulunduğu çoğu senaryo için uygun olan filtreleme sıkıştırma algoritmasını tercih eder. Bu sıkıştırma politikası, metin verileri ve yapay olarak oluşturulan veriler için daha yüksek bir sıkıştırma oranı elde etmeye yardımcı olabilir.

HUFFMAN_ONLY 

Bu sıkıştırma politikası, sıkıştırma için yalnızca Huffman kodlamasını kullanır. Başka algoritmalar kullanılmaz. Bu sıkıştırma politikası genellikle statik verileri sıkıştırmak için kullanılır. Böyle sıkıştırılmış veriler daha hızlı bir şekilde açılabilir.

RLE 

Run Length Encoding (RLE) algoritması, bitmap verileri gibi tekrarlayan veri dizilerini sıkıştırmada son derece etkilidir.

FIXED 

Bu sıkıştırma politikası, belirli verilere göre dinamik olarak oluşturulan kodlama ağaçları yerine önceden tanımlanmış kodlama ağacını kullanarak Huffman kodlaması gerçekleştirir. Bu, yüksek hızlı sıkıştırma ve açma sağlar. Ancak sıkıştırma oranı düşüktür.

DEFAULT_STRATEGY

compression.gzip.window_bits

zlib kitaplığının pencere boyutu. Geçerli değerler: 9 ila 15.

12

compression.gzip.chunk_size

zlib kitaplığının çıkış arabelleği boyutu.

4096

hostNetwork

ASM ağ geçidi podunun ana bilgisayarın ağ ad alanına erişmesine izin verilip verilmeyeceğini belirtir. Geçerli değerler:

  • true: ASM ağ geçidi podunun ana bilgisayarın ağ ad alanını kullanmasına izin verilir.

  • false: ASM ağ geçidi podunun ana bilgisayarın ağ ad alanını kullanmasına izin verilmez.

false

dnsPolicy

ASM ağ geçidi podu için yapılandırılan Alan Adı Sistemi (DNS) politikası. DNS politikaları hakkında daha fazla bilgi için bkz. Hizmetler ve Pod'lar için DNS.

ClusterFirst

cpu.targetAverageUtilization

HPA etkinleştirildiğinde beklenen CPU kullanımı. Geçerli değerler: 1 ila 100. Bellek kullanımı bu değeri aşarsa pod çoğaltma sayısı artar. Bellek kullanımı bu değerden azsa pod çoğaltma sayısı azalır.

Yok

memory.targetAverageUtilization

HPA etkinleştirildiğinde beklenen bellek kullanımı. Geçerli değerler: 1 ila 100. Bellek kullanımı bu değeri aşarsa pod çoğaltma sayısı artar. Bellek kullanımı bu değerden azsa pod çoğaltma sayısı azalır.

Yok

maxReplicas

ASM ağ geçidi için HPA özelliği tarafından ölçeklenebilecek maksimum pod çoğaltma sayısı. Bu alanın değeri pozitif bir tamsayı olmalıdır.

Yok

minReplicas

ASM ağ geçidi için HPA özelliği tarafından ölçeklenebilecek minimum pod çoğaltma sayısı. Değer pozitif bir tamsayıdır. Minimum değer 1'dir.

Yok

nodeSelector

ASM ağ geçidi podunun bulunduğu düğümün etiketini belirtir. Anahtarı ve değeri özelleştirebilirsiniz. Örnek:

nodeSelector:
  key1: value1

Yok

affinity

ASM ağ geçidi podunu bir düğüme zamanlamak için düğüm yakınlığını yapılandırır. Daha fazla bilgi için bkz. Yakınlık ve anti-yakınlık.

Yok

tolerations

ASM ağ geçidi podunun düğüm lekelerine tolerans göstermesini sağlamak için toleransları yapılandırır. Daha fazla bilgi için bkz. Lekeler ve Toleranslar.

Yok

Değişiklikleri ASM ağ geçidinin yuvarlanma yeniden başlatılmasına neden olacak alanlar

Aşağıdaki alanlarda yapılan değişiklikler ASM ağ geçidinin yuvarlanma yeniden başlatılmasına neden olur. Bu alanları değiştirirken dikkatli olun.

  • env

  • ports (ASM örneğinin sürümü 1.16'dan önceyse, bu alanda yapılan değişiklik ASM ağ geçidinin yuvarlanma şeklinde yeniden başlatılmasına neden olur. ASM örneğinin sürümü 1.16 veya sonrası ise, bu alanda yapılan değişiklik ASM ağ geçidinin yuvarlanma şeklinde yeniden başlatılmasına neden olmaz.)

  • configVolumes

  • resources

  • secretVolumes

  • podLabels

  • podAnnotations

  • kernel.enabled

  • kernel.parameters

  • hostNetwork

  • dnsPolicy

  • nodeSelector (zamanlamaya tabi)

  • affinity (zamanlamaya tabi)

  • tolerations (zamanlamaya tabi)

Ağ geçidi için Go struct'ları

Örnek dosyayı görüntülemek için genişletin

package v1beta1

import (
    corev1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

type GatewayType string
type ConfigState string

const (
    GatewayTypeIngress GatewayType = "ingress"
    GatewayTypeEgress  GatewayType = "egress"
)

// IstioGatewaySpec defines the desired state of Istio
// +k8s:openapi-gen=true
type IstioGatewaySpec struct {
    // +kubebuilder:validation:Enum=ingress;egress
    GatewayType                    GatewayType `json:"gatewayType,omitempty"`
    IstioGatewayBasicConfiguration `json:",inline"`
    ClusterIds                     []string                                  `json:"clusterIds,omitempty"`
    clusterId                      string                                    `json:"clusterId,omitempty"`
    Overrides                      map[string]IstioGatewayBasicConfiguration `json:"overrides,omitempty"`
}

type KernelParameters struct {
    NetCoreSoMaxConn             *string `json:"net.core.somaxconn,omitempty"`
    NetCoreNetdevMaxBacklog      *string `json:"net.core.netdev_max_backlog,omitempty"`
    NetIpv4TcpRMem               *string `json:"net.ipv4.tcp_rmem,omitempty"`
    NetIpv4TcpWMem               *string `json:"net.ipv4.tcp_wmem,omitempty"`
    NetIpv4IpLocalPortRange      *string `json:"net.ipv4.ip_local_port_range,omitempty"`
    NetIpv4TcpFinTimeout         *string `json:"net.ipv4.tcp_fin_timeout,omitempty"`
    NetIpv4TcpTwTimeout          *string `json:"net.ipv4.tcp_tw_timeout,omitempty"`
    NetIpv4TcpTwReuse            *string `json:"net.ipv4.tcp_tw_reuse,omitempty"`
    NetIpv4TcpTwRecycle          *string `json:"net.ipv4.tcp_tw_recycle,omitempty"`
    NetIpv4TcpTimestamps         *string `json:"net.ipv4.tcp_timestamps,omitempty"`
    NetIpv4TcpRetries2           *string `json:"net.ipv4.tcp_retries2,omitempty"`
    NetIpv4TcpSlowStartAfterIdle *string `json:"net.ipv4.tcp_slow_start_after_idle,omitempty"`
    NetIpv4TcpMaxOrphans         *string `json:"net.ipv4.tcp_max_orphans,omitempty"`
    NetIpv4TcpMaxSynBacklog      *string `json:"net.ipv4.tcp_max_syn_backlog,omitempty"`
    NetIpv4TcpNoMetricsSave      *string `json:"net.ipv4.tcp_no_metrics_save,omitempty"`
    NetIpv4TcpAutocorking        *string `json:"net.ipv4.tcp_autocorking,omitempty"`
    KernelPrintk                 *string `json:"kernel.printk,omitempty"`
    VmSwappiness                 *string `json:"vm.swappiness,omitempty"`
}

type KernelConfiguration struct {
    Enabled    *bool            `json:"enabled,omitempty"`
    Parameters KernelParameters `json:"parameters,omitempty"`
}

type GzipCompressorConfiguration struct {
    MemoryLevel         *uint32 `json:"memory_level,omitempty"`
    CompressionLevel    *string `json:"compression_level,omitempty"`
    CompressionStrategy *string `json:"compression_strategy,omitempty"`
    WindowBits          *uint32 `json:"window_bits,omitempty"`
    ChunkSize           *uint32 `json:"chunk_size,omitempty"`
}

type CompressorConfiguration struct {
    Enabled                    *bool                        `json:"enabled,omitempty"`
    MinContentLength           *uint32                      `json:"min_content_length,omitempty"`
    ContentType                *[]string                    `json:"content_type,omitempty"`
    DisableOnETagHeader        *bool                        `json:"disable_on_etag_header,omitempty"`
    RemoveAcceptEncodingHeader *bool                        `json:"remove_accept_encoding_header,omitempty"`
    Gzip                       *GzipCompressorConfiguration `json:"gzip,omitempty"`
}

type ReadinessProbeConfiguration struct {
    FailureThreshold int32 `json:"failureThreshold,omitempty"`
    PeriodSeconds    int32 `json:"periodSeconds,omitempty"`
    SuccessThreshold int32 `json:"successThreshold,omitempty"`
}

// +k8s:openapi-gen=true
type IstioGatewayBasicConfiguration struct {
    ReplicaCount     int32 `json:"replicaCount,omitempty"`
    AutoscaleEnabled bool  `json:"autoscaleEnabled,omitempty"`
    MinReplicas      int32 `json:"minReplicas,omitempty"`
    MaxReplicas      int32 `json:"maxReplicas,omitempty"`
    // +kubebuilder:validation:Enum=ClusterIP;NodePort;LoadBalancer
    ServiceType           corev1.ServiceType           `json:"serviceType,omitempty"`
    LoadBalancerIP        string                       `json:"loadBalancerIP,omitempty"`
    ExternalTrafficPolicy string                       `json:"externalTrafficPolicy,omitempty"`
    ServiceAnnotations    map[string]string            `json:"serviceAnnotations,omitempty"`
    PodAnnotations        map[string]string            `json:"podAnnotations,omitempty"`
    ServiceLabels         map[string]string            `json:"serviceLabels,omitempty"`
    PodLabels             map[string]string            `json:"podLabels,omitempty"`
    Resources             *corev1.ResourceRequirements `json:"resources,omitempty"`
    EnvVars               []corev1.EnvVar              `json:"env,omitempty"`
    Ports                 []corev1.ServicePort         `json:"ports,omitempty"`
    MeshExpansionPorts    []corev1.ServicePort         `json:"meshExpansionPorts,omitempty"`
    NodeSelector          map[string]string            `json:"nodeSelector,omitempty"`
    ApplicationPorts      string                       `json:"applicationPorts,omitempty"`
    RequestedNetworkView  string                       `json:"requestedNetworkView,omitempty"`
    Affinity              *corev1.Affinity             `json:"affinity,omitempty"`
    Tolerations           []corev1.Toleration          `json:"tolerations,omitempty"`
    SecretVolumes         []SecretVolume               `json:"secretVolumes,omitempty"`
    ConfigVolumes         []ConfigVolume               `json:"configVolumes,omitempty"`
    RollingMaxSurge       *string                      `json:"rollingMaxSurge,omitempty"`
    RollingMaxUnavailable *string                      `json:"rollingMaxUnavailable,omitempty"`
    CPU                   HpaCPU                       `json:"cpu,omitempty"`
    Memory                HpaMemory                    `json:"memory,omitempty"`
    Kernel                KernelConfiguration          `json:"kernel,omitempty"`
    Compressor            CompressorConfiguration      `json:"compression,omitempty"`
    RunAsRoot             *bool                        `json:"runAsRoot,omitempty"`
    Lifecycle             *corev1.Lifecycle            `json:"lifecycle,omitempty"`
    ReadinessProbe        ReadinessProbeConfiguration  `json:"readinessProbe,omitempty"`
    HostNetwork           *bool                        `json:"hostNetwork,omitempty"`
    DnsPolicy             corev1.DNSPolicy             `json:"dnsPolicy,omitempty"`
    AutoCreateGatewayYaml *bool                        `json:"autoCreateGatewayYaml,omitempty"`
}

type SecretVolume struct {
    Name       string `json:"name,omitempty"`
    SecretName string `json:"secretName,omitempty"`
    MountPath  string `json:"mountPath,omitempty"`
}

type ConfigVolume struct {
    Name          string `json:"name,omitempty"`
    ConfigMapName string `json:"configMapName,omitempty"`
    MountPath     string `json:"mountPath,omitempty"`
}

// +k8s:openapi-gen=true
type HpaCPU struct {
    TargetAverageUtilization *int32 `json:"targetAverageUtilization,omitempty"`
}

// +k8s:openapi-gen=true
type HpaMemory struct {
    TargetAverageUtilization *int32 `json:"targetAverageUtilization,omitempty"`
}

// +k8s:openapi-gen=true
type IstioGatewayStatus struct {
    // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
    // Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file
    // Add custom validation using kubebuilder tags: https://book.kubebuilder.io/beyond_basics/generating_crd.html
    Status                     ConfigState      `json:"Status,omitempty"`
    GatewayAddress             []string         `json:"GatewayAddress,omitempty"`
    ClusterIdGatewayAddressMap []GatewayAddress `json:"ClusterIdGatewayAddressMap,omitempty"`

    ErrorMessage string `json:"ErrorMessage,omitempty"`
}

// +k8s:openapi-gen=true
type GatewayAddress struct {
    IPAddress string `json:"ipAddress,omitempty"`
    ClusterId string `json:"clusterId,omitempty"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// IstioGateway is the Schema for the istiogateways API
// +k8s:openapi-gen=true
// +kubebuilder:subresource:status
type IstioGateway struct {
    metav1.TypeMeta   `json:",inline"`
    metav1.ObjectMeta `json:"metadata,omitempty"`

    Spec   IstioGatewaySpec   `json:"spec,omitempty"`
    Status IstioGatewayStatus `json:"status,omitempty"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// IstioGatewayList contains a list of IstioGateway
type IstioGatewayList struct {
    metav1.TypeMeta `json:",inline"`
    metav1.ListMeta `json:"metadata,omitempty"`
    Items           []IstioGateway `json:"items"`
}