Istio Gateway kann keine Verbindung über HTTPS herstellen
Bereitstellungen in einem GKE-Cluster mit Istio funktionieren über HTTP. Aber als ich versuchte, es mit cert-manager mit folgenden Ressourcen zu sichern, schlägt die HTTPS-Anfrage wie folgt fehl
`Immediate connect fail for 64:ff9b::2247:fd8a: Network is unreachable
* connect to 34.71.253.138 port 443 failed: Connection refused`.
Was soll ich tun, damit es auch mit HTTPS funktioniert?
ClusterIssuer mit folgender Konfiguration
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
namespace: istio-system
spec:
acme:
# The ACME server URL
server: https://acme-staging-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: [email protected]
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-staging
solvers:
# ACME DNS-01 provider configurations
- dns01:
# Google Cloud DNS
clouddns:
# Secret from the google service account key
serviceAccountSecretRef:
name: cert-manager-credentials
key: gcp-dns-admin.json
# The project in which to update the DNS zone
project: iprocure-server
Zertifikatkonfiguration wie diese, die ein Zertifikat in den Status Bereit: Wahr versetzt hat
apiVersion: cert-manager.io/v1alpha3
kind: Certificate
metadata:
name: letsencrypt-staging
namespace: istio-system
spec:
secretName: letsencrypt-staging
commonName: "*.iprocure.tk"
dnsNames:
- '*.iprocure.tk'
issuerRef:
name: letsencrypt-staging
kind: ClusterIssuer
Und zum Schluss ein Gateway
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: iprocure-gateway
namespace: default
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
tls:
httpsRedirect: false
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- "*"
tls:
mode: SIMPLE
credentialName: letsencrypt-staging
Wenn ich mache, kubectl describe certificate -n istio-system
Name: letsencrypt-staging
Namespace: istio-system
Labels: <none>
Annotations: <none>
API Version: cert-manager.io/v1
Kind: Certificate
Metadata:
Creation Timestamp: 2020-10-13T13:32:37Z
Generation: 1
Resource Version: 28030994
Self Link: /apis/cert-manager.io/v1/namespaces/istio-system/certificates/letsencrypt-staging
UID: ad838d28-5349-4aaa-a618-cc3bfc316e6e
Spec:
Common Name: *.iprocure.tk
Dns Names:
*.iprocure.tk
Issuer Ref:
Kind: ClusterIssuer
Name: letsencrypt-staging-clusterissuer
Secret Name: letsencrypt-staging-cert-secret
Status:
Conditions:
Last Transition Time: 2020-10-13T13:35:05Z
Message: Certificate is up to date and has not expired
Reason: Ready
Status: True
Type: Ready
Not After: 2021-01-11T12:35:05Z
Not Before: 2020-10-13T12:35:05Z
Renewal Time: 2020-12-12T12:35:05Z
Revision: 1
Events: <none>
Laufen kubectl get certificates -o wide -n istio-system, ergibt
NAME READY SECRET ISSUER STATUS AGE
letsencrypt-staging True letsencrypt-staging-cert-secret letsencrypt-staging-clusterissuer Certificate is up to date and has not expired 17h
Antworten
Problem
Ich gehe davon aus, dass https aufgrund der Anforderungen, die aktiviert werden müssen, wenn Sie cert-menager mit istio in älteren Versionen verwenden möchten, nicht funktioniert hat .
Lösung
Wie @Yunus Einsteinium in Kommentaren erwähnt
Danke, dass Sie mich in die richtige Richtung geführt haben. Die Verwendung des OSS Istio, nicht des GKE, ist der richtige Weg! Ich habe es geschafft, HTTPS zum Laufen zu bringen!
Die Lösung bestand darin, OOS istio zu verwenden, das mit istioctl anstelle des älteren istio gke-Addons installiert wurde.