首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google托管SSL证书使用SSL v3

Google托管SSL证书使用SSL v3
EN

Stack Overflow用户
提问于 2022-06-30 07:43:55
回答 1查看 249关注 0票数 0

我想在GKE上使用谷歌管理证书。

我有一个GKE集群(1.22),其中配置了针对一个external-dns区域的CloudDNS头盔图,然后我尝试:

代码语言:javascript
复制
$ gcloud compute ssl-certificates create managed-cert \
    --description "managed-cert" \
    --domains "<hostname>" \
    --global

$ kubectl create ns test

$ cat <<EOF | kubectl apply -f -
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-mc-deployment
  namespace: test
spec:
  selector:
    matchLabels:
      app: products
      department: sales
  replicas: 2
  template:
    metadata:
      labels:
        app: products
        department: sales
    spec:
      containers:
      - name: hello
        image: "gcr.io/google-samples/hello-app:2.0"
        env:
        - name: "PORT"
          value: "50001"

---
apiVersion: v1
kind: Service
metadata:
  name: my-mc-service
  namespace: test
spec:
  type: NodePort
  selector:
    app: products
    department: sales
  ports:
  - name: my-first-port
    protocol: TCP
    port: 60001
    targetPort: 50001

---
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: managed-cert
  namespace: test
spec:
  domains:
    - <hostname>

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-psc-ingress
  namespace: test
  annotations:
    networking.gke.io/managed-certificates: "managed-cert"
    ingress.gcp.kubernetes.io/pre-shared-cert: "managed-cert"
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
  - host: "<hostname>"
    http:
      paths:
      - path: "/"
        pathType: "ImplementationSpecific"
        backend:
          service:
            name: "my-mc-service"
            port:
              number: 60001
EOF

DNS区域被正确更新,我能够浏览http://<hostname>

相反,如果我:

代码语言:javascript
复制
$ curl -v https://<hostname>
*   Trying 34.120.218.42:443...
* Connected to <hostname> (34.120.218.42) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
*  CAfile: /etc/pki/tls/certs/ca-bundle.crt
*  CApath: none
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.0 (IN), TLS header, Unknown (21):
* TLSv1.3 (IN), TLS alert, handshake failure (552):
* error:0A000410:SSL routines::sslv3 alert handshake failure
* Closing connection 0
curl: (35) error:0A000410:SSL routines::sslv3 alert handshake failure

$ gcloud compute ssl-certificates list 
NAME                                       TYPE     CREATION_TIMESTAMP             EXPIRE_TIME  MANAGED_STATUS
managed-cert                               MANAGED  2022-06-30T00:27:25.708-07:00               PROVISIONING
    <hostname>: PROVISIONING
mcrt-fe44e023-3234-42cc-b009-67f57dcdc5ef  MANAGED  2022-06-30T00:27:52.707-07:00               PROVISIONING
    <hostname>: PROVISIONING

我不明白它为什么要创建一个新的托管证书(mcrt-fe44e023-3234-42cc-b009-67f57dcdc5ef),即使我正在指定它。

有什么想法吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-06-30 16:08:08

经过一番试验,我明白了到底是怎么回事。

上面的代码可以工作,创建和传播证书大约需要20分钟。

关于双重证书:不需要创建ssl-certificates对象,因为ManagedCertificate自定义资源将为您创建它(mcrt-*)。

为了重述一个例子:

代码语言:javascript
复制
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-mc-deployment
  namespace: test
spec:
  selector:
    matchLabels:
      app: products
      department: sales
  replicas: 2
  template:
    metadata:
      labels:
        app: products
        department: sales
    spec:
      containers:
      - name: hello
        image: "gcr.io/google-samples/hello-app:2.0"
        env:
        - name: "PORT"
          value: "50001"

---
apiVersion: v1
kind: Service
metadata:
  name: my-mc-service
  namespace: test
spec:
  type: NodePort
  selector:
    app: products
    department: sales
  ports:
  - name: my-first-port
    protocol: TCP
    port: 60001
    targetPort: 50001

---
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: managed-cert
  namespace: test
spec:
  domains:
    - <hostname>

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-psc-ingress
  namespace: test
  annotations:
    networking.gke.io/managed-certificates: "managed-cert"
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
  - host: "<hostname>"
    http:
      paths:
      - path: "/"
        pathType: "ImplementationSpecific"
        backend:
          service:
            name: "my-mc-service"
            port:
              number: 60001
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72812023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档