Kubernetes Ingress-Controller 和 AWS API Gateway 客户端证书

Posted

技术标签:

【中文标题】Kubernetes Ingress-Controller 和 AWS API Gateway 客户端证书【英文标题】:Kubernetes Ingress-Controller and AWS API Gateway client certificate 【发布时间】:2019-02-19 10:41:48 【问题描述】:

我有一个问题,我想在我的入口配置中使用 API 网关客户端证书。

    我已经在 AWS 上生成了证书。

    我已经创建了证书的秘密:

    kubectl create secret generic api --from-file=api-gateway-client-certificate.crt 
    --namespace develop
    

    我已经在我的入口文件中添加了配置:

    annotations:
    nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
    nginx.ingress.kubernetes.io/auth-tls-secret: "default/api"
    nginx.ingress.kubernetes.io/auth-tls-verify-depth: "1"`
    

最后我不知道为什么我在入口控制器上收到此错误:

获取 X.509 证书时出错:秘密“develop/api”不包含密钥对或 CA 证书

我使用 Kubernetes v1.11.1 和 nginx-ingress-controller v0.17.1

【问题讨论】:

【参考方案1】:

因此,您缺少证书的密钥和/或 CA。您是否在 AWS 中使用了私有 CA?常规证书管理不会为您提供密钥文件,因为它会在后台创建 CSR。

通常,您会像这样创建 tls 机密:

kubectl -n kube-system create secret tls my-tls-cert --key=tls.key --cert=tls.crt

另外,我会将以 -----BEGIN CERTIFICATE----- 开头的 CA 附加到 api-gateway-client-certificate.crt 的内容中

【讨论】:

【参考方案2】:

出现同样的错误,是因为 ca 文件命名错误。

用它来创建你的秘密:

kubectl create secret generic api --from-file=ca.crt=api-gateway-client-certificate.crt --namespace develop

【讨论】:

以上是关于Kubernetes Ingress-Controller 和 AWS API Gateway 客户端证书的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes - Kubernetes部署Kubernetes Dashbaord

kubernetes学习01—kubernetes介绍

Kubernetes——Kubernetes的介绍和使用 kubeadm方式搭建Kubernetes集群

Kubernetes——Kubernetes资源管理+Kubernetes实战入门

Kubernetes——Kubernetes资源管理+Kubernetes实战入门

kubernetes 提供啥功能