Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kubernetes giriş kaynağına rastgele anahtar/değer çiftleriyle ek açıklama ekleyebilirsiniz. Application Gateway Giriş Denetleyicisi (AGIC), giriş YAML dosyasıyla yapılandırılamayan Azure Uygulama Gateway özelliklerini programlamak için açıklamalara güvenir. Ingress ek açıklamaları, ingress kaynağından türetilen tüm HTTP ayarlarına, arka uç havuzlarına ve dinleyicilere uygulanır.
İpucu
Kubernetes giriş çözümünüz için Application Gateway for Containers'ı göz önünde bulundurun. Daha fazla bilgi için bkz Hızlı Başlangıç Kılavuzu: Kapsayıcılar için Application Gateway ALB Denetleyicisini dağıtma.
Desteklenen ek açıklamaların listesi
AGIC'nin bir giriş kaynağını gözlemlemesi için kaynağa ile not eklenmelidirkubernetes.io/ingress.class: azure/application-gateway.
Sunucu Tarafı Yol Ön Eki
Aşağıdaki ek açıklama, bir giriş kaynağında belirtilen arka uç yolunun belirtilen ön ek ile yeniden yazılmasını sağlar. Ingress kaynağında bir hizmeti sunmak için kullandığınız uç nokta adlarından farklı uç noktalara sahip hizmetleri ortaya çıkarmak için bunu kullanın.
Kullanım
appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-bkprefix
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Önceki örnekte, go-server-ingress-bkprefix adlı bir giriş kaynağı ve appgw.ingress.kubernetes.io/backend-path-prefix: "/test/" adlı bir ek açıklama tanımlanmıştır. Ek açıklama, Application Gateway'e /hello yolunu /test/ ile değiştirecek bir HTTP ayarı oluşturmasını talimat verir.
Örnek yalnızca bir kuralı tanımlar. Ancak, ek açıklamalar giriş kaynağının tamamı için geçerlidir. Bu nedenle, birden çok kural tanımlarsanız, belirtilen yolların her biri için arka uç yolu ön ekini ayarlarsınız. Farklı yol ön eklerine sahip farklı kurallar istiyorsanız (aynı hizmet için bile), farklı giriş kaynakları tanımlamanız gerekir.
Backend Host Adı
Application Gateway'in podlarla konuşurken kullanması gereken konak adını belirtmek için aşağıdaki ek açıklamayı kullanın.
Kullanım
appgw.ingress.kubernetes.io/backend-hostname: "internal.example.com"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-timeout
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-hostname: "internal.example.com"
spec:
rules:
- http:
paths:
- path: /hello/
backend:
service:
name: store-service
port:
number: 80
pathType: Exact
Özel Sağlık Denetimi
Application Gateway'i arka uç adres havuzuna özel durum yoklaması gönderecek şekilde yapılandırabilirsiniz . Aşağıdaki ek açıklamalar mevcut olduğunda Kubernetes giriş denetleyicisi arka uç uygulamasını izlemek için özel bir yoklama oluşturur. Ardından denetleyici değişiklikleri Application Gateway'e uygular.
-
health-probe-hostname: Bu ek açıklama, sistem durumu yoklaması üzerinde özel bir ana bilgisayar adına izin verir. -
health-probe-port: Bu ek açıklama, sistem durumu yoklaması için özel bir bağlantı noktası yapılandırıyor. -
health-probe-path: Bu ek açıklama sağlık yoklaması için bir yol tanımlar. -
health-probe-status-codes: Bu ek açıklama, sistem durumu araştırmasının farklı HTTP durum kodlarını kabul etmesini sağlar. -
health-probe-interval: Bu ek açıklama, sistem durumu yoklamasının çalıştırıldığı aralığı tanımlar. -
health-probe-timeout: Bu ek açıklama, yoklama başarısız olmadan önce sistem durumu yoklamasının ne kadar süreyle yanıt bekleyeceğini tanımlar. -
health-probe-unhealthy-threshold: Bu ek açıklama, arka planın sağlıksız olarak işaretlenmesi için kaç sağlık yoklamasının başarısız olması gerektiğini tanımlar.
Kullanım
appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
appgw.ingress.kubernetes.io/health-probe-port: 80
appgw.ingress.kubernetes.io/health-probe-path: "/"
appgw.ingress.kubernetes.io/health-probe-status-codes: "100-599"
appgw.ingress.kubernetes.io/health-probe-interval: 30
appgw.ingress.kubernetes.io/health-probe-timeout: 30
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
appgw.ingress.kubernetes.io/health-probe-port: 81
appgw.ingress.kubernetes.io/health-probe-path: "/probepath"
appgw.ingress.kubernetes.io/health-probe-status-codes: "100-599"
appgw.ingress.kubernetes.io/health-probe-interval: 31
appgw.ingress.kubernetes.io/health-probe-timeout: 31
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
TLS Yeniden Yönlendirme
Application Gateway'i HTTP URL'lerini otomatik olarak HTTPS karşılıklarına yönlendirecek şekilde yapılandırabilirsiniz. Bu ek açıklama mevcut olduğunda ve TLS düzgün yapılandırıldığında, Kubernetes ingress denetleyicisi yeniden yönlendirme yapılandırmasıyla bir yönlendirme kuralı oluşturur. Ardından denetleyici değişiklikleri Application Gateway örneğine uygular. Oluşturulan yeniden yönlendirme HTTP'dir 301 Moved Permanently.
Kullanım
appgw.ingress.kubernetes.io/ssl-redirect: "true"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-redirect
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:
service:
name: websocket-repeater
port:
number: 80
Bağlantı Tahliyesi
Bağlantı boşaltmayı kullanmak istiyorsanız aşağıdaki ek açıklamaları kullanın:
-
connection-draining: Bu ek açıklama, bağlantı boşaltmanın etkinleştirilip etkinleştirilmeymeyeceğini belirtir. -
connection-draining-timeout: Bu ek açıklama, Application Gateway'in boşaltılan arka uç uç noktasına yönelik istekleri sonlandırdığı zaman aşımını belirtir.
Kullanım
appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-drain
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/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Tanımlama Bilgisi Tabanlı Bağlılık
Tanımlama bilgisi tabanlı bağlılığı etkinleştirmek için aşağıdaki notasyonu kullanın.
Kullanım
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-affinity
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
İstek Zaman Aşımı
İstek zaman aşımını saniyeler içinde belirtmek için aşağıdaki ek açıklamayı kullanın. Zaman aşımından sonra, yanıt alınmazsa Application Gateway bir istekte başarısız olur.
Kullanım
appgw.ingress.kubernetes.io/request-timeout: "20"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-timeout
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/request-timeout: "20"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Özel IP kullanma
Bu uç noktanın Application Gateway'in özel IP adresinde kullanıma açılıp kullanılmayacağını belirtmek için aşağıdaki ek açıklamayı kullanın.
Özel IP'ye sahip olmayan bir Application Gateway örneği için girişler appgw.ingress.kubernetes.io/use-private-ip: "true" göz ardı edilir. Bu girişler için denetleyici günlükleri ve giriş olayları bir NoPrivateIP uyarı gösterir.
Kullanım
appgw.ingress.kubernetes.io/use-private-ip: "true"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-privateip
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/use-private-ip: "true"
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Ön Uç Bağlantı Noktasını Geçersiz Kıl
Bir ön uç dinleyicisini HTTP için 80 ve HTTPS için 443 dışındaki bağlantı noktalarını kullanacak şekilde yapılandırmak için aşağıdaki ek açıklamayı kullanın.
Bağlantı noktası Application Gateway yetkili aralığındaysa (1 ile 64999 arasında), dinleyici bu belirli bağlantı noktasında oluşturulur. Ek açıklamada geçersiz bir bağlantı noktası ayarlarsanız veya bağlantı noktası ayarlamazsanız, yapılandırma varsayılan olarak 80 veya 443 kullanır.
Kullanım
appgw.ingress.kubernetes.io/override-frontend-port: "port"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-overridefrontendport
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/override-frontend-port: "8080"
spec:
rules:
- http:
paths:
- path: /hello/
backend:
service:
name: store-service
port:
number: 80
pathType: Exact
Uyarı
Dış isteklerin http://somehost:8080 yerine http://somehost'ı hedeflemesi gerekir.
Arka Uç Protokolü
Application Gateway'in podlarla iletişim kurarken kullanması gereken protokolü belirtmek için aşağıdakileri kullanın. Desteklenen protokoller HTTP ve HTTPS'dir.
Application Gateway'de otomatik olarak imzalanan sertifikalar destekleniyor olsa da AGIC şu anda yalnızca podlar iyi bilinen bir sertifika yetkilisi tarafından imzalanan bir sertifika kullandığında HTTPS'yi destekler.
Podlarda HTTPS ile 80 numaralı bağlantı noktasını ve HTTP ile 443 numaralı bağlantı noktasını kullanmayın.
Kullanım
appgw.ingress.kubernetes.io/backend-protocol: "https"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-timeout
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-protocol: "https"
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 443
Ana Bilgisayar Adı Uzantısı
Application Gateway'i birden çok ana bilgisayar adını kabul etmek üzere yapılandırabilirsiniz. Birden çok ana bilgisayar adını, joker konak adları da dahil olarak, tanımlamak için hostname-extension açıklamasını kullanın. Bu eylem, ana bilgisayar adlarını ön uç dinleyicisindeki giriş spec.rules.host bilgilerinde tanımlanan FQDN'ye ekler, böylece çok siteli dinleyici olarak yapılandırılır.
Kullanım
appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-multisite
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
spec:
rules:
- host: contoso.com
http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 443
Yukarıdaki örnek, dinleyiciyi yalnızca hostname1.contoso.com ve hostname2.contoso.com ana bilgisayar adları için trafiği kabul edecek şekilde yapılandırıyor.
Yol için WAF İlkesi
Ek açıklama eklenen kubernetes giriş kaynağındaki bir konağın liste yollarına mevcut bir web uygulaması güvenlik duvarı (WAF) ilkesi eklemek için aşağıdaki ek açıklamayı kullanın. WAF ilkesi hem hem de /ad-server/auth URL'lere uygulanır.
Kullanım
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SampleRG/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/AGICWAFPolcy"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ad-server-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/abcd/resourceGroups/rg/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/adserver"
spec:
rules:
- http:
paths:
- path: /ad-server
backend:
service:
name: ad-server
port:
number: 80
pathType: Exact
- path: /auth
backend:
service:
name: auth-server
port:
number: 80
pathType: Exact
Application Gateway SSL Sertifikası
SSL sertifikasını Application Gateway'e yerel bir PFX sertifika dosyasından veya Azure Key Vault'un sürümsüz gizli kimliği referansından yapılandırabilirsiniz. Ek açıklama bir sertifika adıyla mevcut olduğunda ve sertifika Application Gateway'e önceden yüklendiğinde, Kubernetes giriş denetleyicisi BIR HTTPS dinleyicisi ile bir yönlendirme kuralı oluşturur ve değişiklikleri Application Gateway örneğine uygular. SSL yeniden yönlendirmesi durumu için, appgw-ssl-certificate ek açıklamayı ssl-redirect ek açıklamasıyla birlikte de kullanabilirsiniz.
Uyarı
appgw-ssl-certificate TLS belirtimi aynı anda girişte tanımlandığında ek açıklama yoksayılır. Farklı konaklara sahip farklı sertifikalar istiyorsanız (birden çok TLS sertifikasının sonlandırılması), farklı giriş kaynakları tanımlamanız gerekir.
Kullanım
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
Uygulama Geçidi SSL Profili
Application Gateway örneğinde dinleyici başına bir SSL profili yapılandırabilirsiniz. Ek açıklama bir profil adıyla mevcut olduğunda ve profil Application Gateway'e önceden yüklendiğinde, Kubernetes giriş kontrolcüsü bir HTTPS dinleyicisi ile bir yönlendirme kuralı oluşturur ve değişiklikleri Application Gateway örneğinize uygular.
Kullanım
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
Application Gateway Güvenilir Kök Sertifikası
Artık AGIC aracılığıyla güvenilir olması için Application Gateway'e kendi kök sertifikalarınızı yapılandırabilirsiniz.
appgw-trusted-root-certificate etiketini backend-protocol etiketiyle birlikte kullanarak uçtan uca SSL şifrelemesini gösterebilirsiniz. Birden çok kök sertifika belirtirseniz, bunları virgülle ayırın; örneğin, name-of-my-root-cert1,name-of-my-root-cert2.
Kullanım
appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
Kural Kümesini Yeniden Yaz
Mevcut bir yeniden yazma kuralı kümesini ilgili istek yönlendirme kuralına atamak için aşağıdaki ek açıklamayı kullanın.
Kullanım
appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-bkprefix
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/rewrite-rule-set: add-custom-response-header
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 8080
Özel Kaynak İçin Kural Kümesini Yeniden Yaz
Uyarı
Kapsayıcılar için Application Gateway sürümü çok sayıda performans, dayanıklılık ve özellik değişikliği sağlar. Bir sonraki dağıtımınız için Kapsayıcılar için Application Gateway'i kullanmayı göz önünde bulundurun.
Kapsayıcılar için Application Gateway url yeniden yazma kurallarını, Ağ Geçidi API'si hakkındaki bu makalede ve Giriş API'si hakkındaki bu makalede bulabilirsiniz. Kapsayıcılar için Application Gateway için üst bilgi yeniden yazma kurallarını, Ağ Geçidi API'sine ilişkin bu makalede bulabilirsiniz.
Application Gateway, isteklerin ve yanıtların seçili içeriğini yeniden yazmanızı sağlar. Bu özellik sayesinde URL'leri çevirebilir, sorgu dizesi parametrelerini değiştirebilir, istek ve yanıt üst bilgilerini değiştirebilirsiniz. Bu özelliği, YALNıZCA belirli koşullar karşılandığında URL'nin veya belirtilen üst bilgilerin yeniden yazıldığından emin olmak için koşullar eklemek için de kullanabilirsiniz. Kural Kümesini Yeniden Yaz Özel Kaynağı bu özelliği AGIC'ye getirir.
HTTP üst bilgileri, istemcinin ve sunucunun istek veya yanıtla ek bilgi geçirmesine olanak tanır. Bu üst bilgileri yeniden yazarak, güvenlikle ilgili üst bilgi alanları ekleme (örneğin, HSTS veya X-XSS-Protection), hassas bilgileri ortaya çıkarabilecek yanıt üst bilgisi alanlarını kaldırma ve üst bilgilerden X-Forwarded-For bağlantı noktası bilgilerini kaldırma gibi önemli görevleri gerçekleştirebilirsiniz.
URL yeniden yazma özelliğiyle şunları yapabilirsiniz:
- İstek URL'sinin ana bilgisayar adını, yolunu ve sorgu dizesini yeniden yazın.
- Tüm isteklerin veya yalnızca ayarladığınız koşullardan biriyle veya birden çok koşulla eşleşen isteklerin URL'sini yeniden yazmayı seçin. Bu koşullar istek ve yanıt özelliklerini (istek üst bilgisi, yanıt üst bilgisi ve sunucu değişkenleri) temel alır.
- İsteği özgün URL'ye veya yeniden yazılan URL'ye göre yönlendirmeyi seçin.
Uyarı
Bu özellik 1.6.0-rc1'den itibaren desteklenir.
appgw.ingress.kubernetes.io/rewrite-rule-set kullanın, bu da Application Gateway'de var olan bir yeniden yazma kuralı kümesinin kullanılmasına izin verir.
Kullanım
appgw.ingress.kubernetes.io/rewrite-rule-set-custom-resource
Örnek
apiVersion: appgw.ingress.azure.io/v1beta1
kind: AzureApplicationGatewayRewrite
metadata:
name: my-rewrite-rule-set-custom-resource
spec:
rewriteRules:
- name: rule1
ruleSequence: 21
conditions:
- ignoreCase: false
negate: false
variable: http_req_Host
pattern: example.com
actions:
requestHeaderConfigurations:
- actionType: set
headerName: incoming-test-header
headerValue: incoming-test-value
responseHeaderConfigurations:
- actionType: set
headerName: outgoing-test-header
headerValue: outgoing-test-value
urlConfiguration:
modifiedPath: "/api/"
modifiedQueryString: "query=test-value"
reroute: false
Kural Önceliği
Aşağıdaki ek açıklama, Application Gateway giriş denetleyicisinin ilişkili istek yönlendirme kurallarının önceliğini açıkça ayarlamasını sağlar.
Kullanım
appgw.ingress.kubernetes.io/rule-priority:
Örnek
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-rulepriority
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/rule-priority: 10
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 8080
Yukarıdaki örnek, istek yönlendirme kuralı için 10 önceliğini ayarlar.