Application Gateway giriş denetleyicisi için ek açıklamalar

Senaryoya

Kubernetes giriş kaynağına, rastgele anahtar/değer çiftleri ile açıklama eklenebilir. AGIC, program Application Gateway özellikleriyle ilgili ek açıklamaları kullanır ve bu, giriş YAML aracılığıyla yapılandırılamaz. Giriş ek açıklamaları, bir giriş kaynağından türetilmiş tüm HTTP ayarına, arka uç havuzlarına ve dinleyicilerine uygulanır.

Desteklenen ek açıklamaların listesi

Bir giriş kaynağının AGIC tarafından gözlenecek olması için, ile açıklanmalıdır kubernetes.io/ingress.class: azure/application-gateway . Bu durumda yalnızca AGIC, söz konusu giriş kaynağıyla birlikte çalışır.

Ek açıklama anahtarı Değer Türü Varsayılan değer İzin Verilen Değerler
appgw.ingress.kubernetes.io/backend-path-prefix string nil
appgw.ingress.kubernetes.io/ssl-redirect bool false
appgw.ingress.kubernetes.io/connection-draining bool false
appgw.ingress.kubernetes.io/connection-draining-timeout int32 saniyeden 30
appgw.ingress.kubernetes.io/cookie-based-affinity bool false
appgw.ingress.kubernetes.io/request-timeout int32 saniyeden 30
appgw.ingress.kubernetes.io/use-private-ip bool false
appgw.ingress.kubernetes.io/backend-protocol string http http, https

Arka uç yolu ön eki

Bu ek açıklama, bir giriş kaynağında belirtilen arka uç yolunun bu ek açıklamada belirtilen önekle yeniden yazılabilir olmasını sağlar. Bu, kullanıcıların uç noktaları bir hizmet kaynağında kullanıma sunmak için kullanılan uç nokta adlarından farklı olan hizmetleri kullanıma sunmasına olanak tanır.

Kullanım

appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>

Örnek

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: go-server-ingress-bkprefix
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          serviceName: go-server-service
          servicePort: 80

Yukarıdaki örnekte, ek açıklama ile adlı bir giriş kaynağı tanımlandık go-server-ingress-bkprefix appgw.ingress.kubernetes.io/backend-path-prefix: "/test/" . Ek açıklama, uygulama ağ geçidine, yolu için bir yol öneki geçersiz kılması olacak bir HTTP ayarı oluşturmasını söyler /hello /test/ .

Not

Yukarıdaki örnekte yalnızca bir kural tanımlanmış. Ancak, ek açıklamalar tüm giriş kaynağına uygulanabilir, bu nedenle, bir Kullanıcı birden çok kural tanımlıysa, belirtilen yolların her biri için arka uç yolu ön eki ayarlanır. Bu nedenle, bir kullanıcı farklı yol önekleri (aynı hizmet için bile) ile farklı kurallar istiyorsa farklı giriş kaynakları tanımlamanız gerekir.

TLS yeniden yönlendirme

Application Gateway , http url 'lerinin OTOMATIK olarak https karşılıklarına yönlendirileceği şekilde yapılandırılabilir. Bu ek açıklama mevcut olduğunda ve TLS düzgün yapılandırıldığında, Kubernetes giriş denetleyicisi yeniden yönlendirme yapılandırması olan bir yönlendirme kuralı oluşturur ve değişiklikleri Application Gateway uygular. Oluşturulan yeniden yönlendirme HTTP olur 301 Moved Permanently .

Kullanım

appgw.ingress.kubernetes.io/ssl-redirect: "true"

Örnek

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: go-server-ingress-redirect
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
   - hosts:
     - www.contoso.com
     secretName: testsecret-tls
  rules:
  - host: www.contoso.com
    http:
      paths:
      - backend:
          serviceName: websocket-repeater
          servicePort: 80

Bağlantı boşaltma

connection-draining: Bu ek açıklama kullanıcıların bağlantı boşaltma 'nın etkinleştirilip etkinleştirilmeyeceğini belirlemesine izin verir. connection-draining-timeout: Bu ek açıklama, kullanıcıların boşaltma arka uç uç noktasına istekleri sonlandırmak için Application Gateway bir zaman aşımı belirtmesini sağlar.

Kullanım

appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"

Örnek

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: go-server-ingress-drain
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/connection-draining: "true"
    appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          serviceName: go-server-service
          servicePort: 80

Bu ek açıklama, tanımlama bilgisi tabanlı Benzeşimin etkinleştirilip etkinleştirilmeyeceğini belirtmenizi sağlar.

Kullanım

appgw.ingress.kubernetes.io/cookie-based-affinity: "true"

Örnek

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: go-server-ingress-affinity
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          serviceName: go-server-service
          servicePort: 80

İstek Zaman Aşımı

Bu ek açıklama, yanıt alınmadığında Application Gateway isteğin başarısız olacağı saniye cinsinden istek zaman aşımını belirtmenizi sağlar.

Kullanım

appgw.ingress.kubernetes.io/request-timeout: "20"

Örnek

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/request-timeout: "20"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          serviceName: go-server-service
          servicePort: 80

Özel IP kullan

Bu ek açıklama, Application Gateway özel IP 'si üzerinde bu uç noktanın kullanıma sunulmayacağını belirtmemizi sağlar.

Not

  • Application Gateway aynı bağlantı noktasında birden çok IP 'yi desteklemez (örnek: 80/443). Ek açıklama appgw.ingress.kubernetes.io/use-private-ip: "false" ve ile diğeri ile giriş appgw.ingress.kubernetes.io/use-private-ip: "true" HTTP , Application Gateway güncelleştirmede AGC 'nin başarısız olmasına neden olur.
  • Özel IP 'si olmayan Application Gateway için ile birlikte giriş appgw.ingress.kubernetes.io/use-private-ip: "true" yok sayılır. Bu işlem, uyarı ile ilgili giriş olayları için denetleyici günlüklerine ve giriş olaylarına yansıtılır NoPrivateIP .

Kullanım

appgw.ingress.kubernetes.io/use-private-ip: "true"

Örnek

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/use-private-ip: "true"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          serviceName: go-server-service
          servicePort: 80

Arka uç Protokolü

Bu ek açıklama, Application Gateway pods ile görüşülürken kullanması gereken Protokolü belirtmemizi sağlar. Desteklenen protokoller: http , https

Not

  • Application Gateway ' de otomatik olarak imzalanan sertifikalar desteklenirken, şu anda AGIC yalnızca, https iyi bilinen BIR CA tarafından imzalanan sertifikayı kullanırken desteklenir.
  • 80 numaralı bağlantı noktasını 443 HTTPS ile kullandığınızdan emin olun.

Kullanım

appgw.ingress.kubernetes.io/backend-protocol: "https"

Örnek

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-protocol: "https"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          serviceName: go-server-service
          servicePort: 443