Uwaga
Dostęp do tej strony wymaga autoryzacji. Może 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 z interfejsu API bramy. Dostępne są następujące kroki:
- Utwórz zasób bramy z jednym odbiornikiem HTTPS.
- Utwórz zasób HTTPRoute, który odwołuje się do usługi zaplecza.
- Utwórz zasób BackendTLSPolicy z certyfikatem klienta i urzędu certyfikacji dla usługi zaplecza, do którego odwołuje się usługa HTTPRoute.
Tło
Mutual Transport Layer Security (MTLS) to proces oparty na certyfikatach szyfrowania komunikacji i identyfikowania klientów w usłudze. Dzięki temu obciążenia zaplecza mogą dodatkowo zwiększyć poziom zabezpieczeń, ufając tylko połączeniom z uwierzytelnionymi urządzeniami.
Zobacz następującą ilustrację:
Wymagania wstępne
Jeśli wykonasz strategię wdrażania byo, upewnij się, że skonfigurowaliśmy usługę Application Gateway dla zasobów kontenerów i kontroler usługi ALB.
Jeśli wykonasz strategię wdrażania zarządzanego przez usługę ALB, upewnij się, że aprowizujesz kontroler usługi ALB i aprowizujesz zasoby usługi Application Gateway for Containers za pośrednictwem zasobu niestandardowego ApplicationLoadBalancer.
Wdróż przykładową aplikację HTTP:
Zastosuj następujący plik deployment.yaml w klastrze, aby utworzyć przykładową aplikację internetową i wdrożyć przykładowe wpisy tajne w celu zademonstrowania wzajemnego uwierzytelniania zaplecza (mTLS).
kubectl apply -f https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/refs/heads/main/articles/application-gateway/for-containers/examples/https-scenario/end-to-end-ssl-with-backend-mtls/deployment.yaml
To polecenie tworzy następujące polecenie w klastrze:
- Przestrzeń nazw o nazwie
test-infra
- Jedna usługa wywoływana
mtls-app
test-infra
w przestrzeni nazw - Jedno wdrożenie o nazwie
mtls-app
wtest-infra
przestrzeni nazw - Jedna mapa konfiguracji o nazwie
mtls-app-nginx-cm
wtest-infra
przestrzeni nazw - Cztery wpisy tajne o nazwie
backend.com
,frontend.com
,gateway-client-cert
ica.bundle
wtest-infra
przestrzeni nazw
- Przestrzeń nazw o nazwie
Wdrażanie wymaganych zasobów interfejsu API bramy
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: frontend.com
EOF
Uwaga
Gdy kontroler usługi ALB tworzy bramę Application Gateway dla zasobów kontenerów w usłudze ARM, użyje następującej konwencji nazewnictwa dla zasobu frontonu: fe-8< losowo wygenerowanych znaków>
Jeśli chcesz zmienić nazwę frontonu utworzonego na platformie Azure, rozważ zastosowanie własnej strategii wdrażania.
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: IPAddress
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: mtls-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 stan zasobu 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
Tworzenie elementu BackendTLSPolicy
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: BackendTLSPolicy
metadata:
name: mtls-app-tls-policy
namespace: test-infra
spec:
targetRef:
group: ""
kind: Service
name: mtls-app
namespace: test-infra
default:
sni: backend.com
ports:
- port: 443
clientCertificateRef:
name: gateway-client-cert
group: ""
kind: Secret
verify:
caCertificateRef:
name: ca.bundle
group: ""
kind: Secret
subjectAltName: backend.com
EOF
Po utworzeniu obiektu BackendTLSPolicy sprawdź stan obiektu, aby upewnić się, że zasady są prawidłowe:
kubectl get backendtlspolicy -n test-infra mtls-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 możemy wysłać jakiś ruch do naszej przykładowej aplikacji za pośrednictwem nazwy FQDN przypisanej do frontonu. Użyj następującego polecenia, aby uzyskać nazwę FQDN:
fqdn=$(kubectl get gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')
Ograniczenie tej nazwy FQDN powinno zwracać odpowiedzi z zaplecza zgodnie z konfiguracją w usłudze HTTPRoute.
curl --insecure https://$fqdn/
Gratulacje, zainstalowano kontroler usługi ALB, wdrożono aplikację zaplecza i przekierowano ruch do aplikacji za pośrednictwem ruchu przychodzącego w usłudze Application Gateway for Containers.