Istio Ağ Geçidi HTTPS Üzerinden Bağlanamıyor

Oct 13 2020

Istio ile bir GKE kümesindeki dağıtımlar, üzerinden doğru şekilde çalışıyor HTTP. Ancak aşağıdaki kaynaklarla sertifika yöneticisi ile güvenliğini sağlamaya çalıştığımda HTTPS isteği curl'de olduğu gibi başarısız oluyor

`Immediate connect fail for 64:ff9b::2247:fd8a: Network is unreachable
* connect to 34.71.253.138 port 443 failed: Connection refused`.

HTTPS ile de çalışmasını sağlamak için ne yapmalıyım?

Aşağıdaki yapılandırmaya sahip ClusterIssuer

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

Hazır: Doğru durumunda bir sertifika oluşturan böyle bir sertifika yapılandırması

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

Ve son olarak bir Geçit

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

Eğer yaparsam, 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>

Koşu kubectl get certificates -o wide -n istio-system, verim

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

Yanıtlar

1 Jakub Oct 19 2020 at 15:47

Konu

Eski sürümlerde istio ile cert-menager kullanmak istiyorsanız etkinleştirilmesi gereken gereksinimler nedeniyle https'nin çalışmadığını varsayıyorum .

Çözüm

@Yunus Einsteinium yorumlarda bahsedildiği gibi

Beni doğru yönde yönlendirdiğiniz için teşekkür ederim. GKE'yi değil, OSS Istio'yu kullanmak gitmenin yoludur! HTTPS'yi çalıştırmayı başardım!

Yani buradaki çözüm , eski istio gke eklentisi yerine istioctl ile kurulan OOS istio'yu kullanmaktı .