Auf dieser Seite wird gezeigt, wie der Ingress für einen GKE On-Prem-Cluster aktiviert wird.
SSH-Verbindung zur Administrator-Workstation herstellen
Stellen Sie eine SSH-Verbindung zu Ihrer Administrator-Workstation her:
ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]
Dabei ist [IP_ADDRESS] die IP-Adresse der Administrator-Workstation.
Führen Sie alle verbleibenden Schritte in diesem Thema auf Ihrer Administrator-Workstation aus.
Ingress aktivieren
Nachdem Ihr Nutzercluster ausgeführt wurde, müssen Sie Ingress durch Erstellen eines Istio-Gateway-Objekts aktivieren. Dieses Istio-Gateway-Objekt ist für eingehenden Netzwerk-Traffic erforderlich und darf nicht für andere Anwendungsfälle wie Autorisierungsrichtlinien verwendet oder unterstützt werden. Der erste Teil des Gateway-Manifests lautet immer:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-autogenerated-k8s-ingress namespace: gke-system spec: selector: istio: ingress-gke-system
Sie können zusätzliche Felder zu Ihrem Gateway hinzufügen, um anzugeben, welcher Traffic in den Cluster eintreten dürfen. Weitere Informationen zur Verwaltung eingehender Anfragen mit Gateways finden Sie unter Trafficverwaltung.
Das folgende Gateway-Manifest gibt an, dass Clients Anfragen an Port 80 senden können. Dazu verwenden sie das HTTP/2-Protokoll und einen beliebigen Hostnamen:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-autogenerated-k8s-ingress namespace: gke-system spec: selector: istio: ingress-gke-system servers: - port: number: 80 protocol: HTTP2 name: http hosts: - "*"
Wenn Sie HTTPS-Anfragen annehmen möchten, müssen Sie ein oder mehrere Zertifikate bereitstellen, die Ihr Ingress-Dienst für Clients angeben kann.
So stellen Sie ein Zertifikat bereit:
- Erstellen Sie ein Kubernetes-Secret, das Ihr Zertifikat und Ihren Schlüssel enthält.
- Erstellen Sie ein Gateway-Objekt oder ändern Sie ein vorhandenes Gateway-Objekt, das auf Ihr Secret verweist. Der Name des Gateway-Objekts muss
istio-autogenerated-k8s-ingress
lauten.
Angenommen, Sie haben bereits eine Zertifikatsdatei ingress-wildcard.crt
und die Schlüsseldatei ingress-wildcard.key
erstellt.
Erstellen Sie ein Secret mit dem Namen ingressgateway-wildcard-certs
:
kubectl create secret tls \ --namespace gke-system \ ingressgateway-wildcard-certs \ --cert ./ingress-wildcard.crt \ --key ./ingress-wildcard.key
Das folgende Gateway-Manifest bezieht sich auf Ihr Secret. Clients können Port 443 über das HTTPS-Protokoll und einen beliebigen Hostnamen aufrufen, der mit *.example.com übereinstimmt. Beachten Sie, dass der Hostname im Zertifikat mit dem Hostnamen im Manifest übereinstimmen muss (in diesem Beispiel *.example.com):
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-autogenerated-k8s-ingress namespace: gke-system spec: selector: istio: ingress-gke-system servers: - port: number: 80 protocol: HTTP2 name: http hosts: - "*" - hosts: - "*.example.com" port: name: https-demo-wildcard number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: ingressgateway-wildcard-certs
Sie können mehrere TLS-Zertifikate für verschiedene Hosts durch Ändern Ihres Gatewaymanifests erstellen.
Speichern Sie Ihr Manifest in einer Datei namens my-gateway.yaml
und erstellen Sie das Gateway:
kubectl apply -f my-gateway.yaml