Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten dokument ułatwia skonfigurowanie przykładowej aplikacji korzystającej z następujących zasobów Gateway API. Dostępne są następujące kroki:
- Utwórz zasób Gateway z jednym odbiornikiem HTTPS.
- Utwórz usługę HTTPRoute odwołującą się do usługi zaplecza.
Tło
Usługa Application Gateway dla kontenerów umożliwia kompleksowe szyfrowanie TLS w celu zwiększenia prywatności i bezpieczeństwa. W tym projekcie ruch między klientem a frontonem usługi Application Gateway for Containers jest szyfrowany, a ruch kierowany z usługi Application Gateway for Containers do obiektu docelowego zaplecza jest szyfrowany. Zobacz następujący przykładowy scenariusz:
Wymagania wstępne
Jeśli wykonasz strategię wdrażania BYO, upewnij się, że skonfigurujesz usługę Application Gateway dla zasobów kontenerów i kontrolera ALB
Jeśli stosujesz strategię wdrażania zarządzanego przez ALB, upewnij się, że za pośrednictwem niestandardowego zasobu ApplicationLoadBalancer zaprovisionujesz kontroler ALB oraz zasoby Application Gateway for Containers.
Wdróż przykładową aplikację HTTPS Zastosuj następujący plik deployment.yaml w klastrze, aby utworzyć przykładową aplikację internetową w celu zademonstrowania odciążania protokołu TLS/SSL.
kubectl apply -f https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/refs/heads/main/articles/application-gateway/for-containers/examples/https-scenario/end-to-end-tls/deployment.yamlTo polecenie tworzy w klastrze następujące elementy:
- przestrzeń nazw o nazwie
test-infra - jedna usługa o nazwie
https-appw przestrzeni nazwtest-infra - jedno wdrożenie nazywane
https-appw przestrzeni nazwtest-infra - jedna mapa konfiguracji o nazwie
https-app-cmwtest-infraprzestrzeni nazw - ** jeden sekret o nazwie
contoso.comw przestrzeni nazwtest-infra - ** jeden sekret o nazwie
contoso.xyzw przestrzeni nazwtest-infra
- przestrzeń nazw o nazwie
Wdróż wymagane zasoby Gateway API
Tworzenie bramy
kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: gateway-01 namespace: test-infra annotations: alb.networking.azure.io/alb-namespace: alb-test-infra alb.networking.azure.io/alb-name: alb-test spec: gatewayClassName: azure-alb-external listeners: - name: https-listener port: 443 protocol: HTTPS allowedRoutes: namespaces: from: Same tls: mode: Terminate certificateRefs: - kind : Secret group: "" name: contoso.com EOF
Uwaga
Gdy kontroler usługi ALB tworzy zasoby usługi Application Gateway for Containers w usłudze Azure Resource Manager, używa następującej konwencji nazewnictwa dla zasobu frontonu: fe-<eight randomly generated characters>.
Jeśli chcesz zmienić nazwę zasobu interfejsu frontowego utworzonego w Azure, rozważ zastosowanie strategii wdrożenia 'bring-your-own'.
Po utworzeniu zasobu bramy upewnij się, że stan jest prawidłowy, odbiornik jest zaprogramowany, a adres jest przypisany do bramy.
kubectl get gateway gateway-01 -n test-infra -o yaml
Przykładowe dane wyjściowe pomyślnego utworzenia bramy.
status:
addresses:
- type: Hostname
value: xxxx.yyyy.alb.azure.com
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Valid Gateway
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
listeners:
- attachedRoutes: 0
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Listener is accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
name: https-listener
supportedKinds:
- group: gateway.networking.k8s.io
kind: HTTPRoute
Po utworzeniu bramy utwórz zasób httpRoute.
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: https-route
namespace: test-infra
spec:
parentRefs:
- name: gateway-01
rules:
- backendRefs:
- name: https-app
port: 443
EOF
Po utworzeniu zasobu usługi HTTPRoute upewnij się, że trasa jest zaakceptowana , a zasób Application Gateway for Containers jest zaprogramowany.
kubectl get httproute https-route -n test-infra -o yaml
Sprawdź, czy zasób usługi Application Gateway for Containers został pomyślnie zaktualizowany.
status:
parents:
- conditions:
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Route is Accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
controllerName: alb.networking.azure.io/alb-controller
parentRef:
group: gateway.networking.k8s.io
kind: Gateway
name: gateway-01
namespace: test-infra
Utwórz BackendTLSPolicy
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: BackendTLSPolicy
metadata:
name: https-app-tls-policy
namespace: test-infra
spec:
targetRef:
group: ""
kind: Service
name: https-app
namespace: test-infra
default:
sni: contoso.xyz
ports:
- port: 443
EOF
Po utworzeniu obiektu BackendTLSPolicy sprawdź stan obiektu, aby upewnić się, że zasady są prawidłowe:
kubectl get backendtlspolicy -n test-infra https-app-tls-policy -o yaml
Przykładowe dane wyjściowe prawidłowego tworzenia obiektu BackendTLSPolicy:
status:
conditions:
- lastTransitionTime: "2023-06-29T16:54:42Z"
message: Valid BackendTLSPolicy
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
Testowanie dostępu do aplikacji
Teraz jesteśmy gotowi, aby wysłać ruch sieciowy do naszej przykładowej aplikacji za pośrednictwem FQDN przypisanego do frontendu. Użyj następującego polecenia, aby uzyskać pełną nazwę domeny (FQDN).
fqdn=$(kubectl get gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')
Polecenie curl dla tej nazwy FQDN powinno zwrócić odpowiedzi z zaplecza na podstawie konfiguracji dla HTTPRoute.
fqdnIp=$(dig +short $fqdn)
curl -k --resolve contoso.com:443:$fqdnIp https://contoso.com --insecure
Powinien zostać wyświetlony następujący wynik:
Hello world!
Gratulacje, zainstalowano ALB Controller, wdrożono aplikację zaplecza i skierowano ruch do aplikacji za pośrednictwem Application Gateway for Containers.