首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用谷歌管理证书在Google引擎与NGINX入口控制器?

我可以使用谷歌管理证书在Google引擎与NGINX入口控制器?
EN

Stack Overflow用户
提问于 2020-07-19 13:02:19
回答 1查看 1.3K关注 0票数 6

我的GKE里有个NGINX攻入。我想让我的URL安全。但不幸的是,我无法通过证书经理做到这一点。我看到了创建托管证书的选项。但我不确定是否有注释允许我在NGINX in中使用google管理的证书。控制器。

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-https
  namespace: non-default
  annotations:
    kubernetes.io/ingress.allow-http: "false"
    kubernetes.io/ingress.class: "nginx"
    networking.gke.io/managed-certificates: "managed-certificate"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    cert-manager.io/issuer: "letsencrypt-production"
spec:
  tls:
    - hosts:
        - example.com
      secretName: selfsigned-cert-tls
  rules:
    - host: example.com
      http:
        paths:
          - path: "/"
            backend:
              serviceName: hello-service
              servicePort: hello-port
          - path: "/kube"
            backend:
              serviceName: hello-kubernetes
              servicePort: 80

当我使用证书管理器创建证书时,证书状态将显示"Kubernetes侵入控制器假证书“

EN

回答 1

Stack Overflow用户

发布于 2021-03-12 15:01:45

使用证书管理器更容易,但如果由于某种原因无法使用证书管理器,则可以尝试此解决方案。它建立了一个GCE入口和一个nginx入口。GCE入口是公共的,终止SSL,但转发给私有nginx入口来执行路由。

代码语言:javascript
复制
helm3 install -f nginx-values.yaml ingress-nginx ingress-nginx/ingress-nginx
代码语言:javascript
复制
#nginx-values.yaml

controller:
  service:
    type: NodePort
    annotations:
      cloud.google.com/backend-config: '{"default": "backendconfig"}'
  admissionWebhooks:
    enabled: false
defaultBackend:
  enabled: true

然后创建一个BackendConfig和一个LoadBalancer来设置一个将与nginx NodePort服务对话的LoadBalancer。

代码语言:javascript
复制
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: backendconfig
spec:
  timeoutSec: 300
  healthCheck:
    requestPath: /healthz
代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    networking.gke.io/managed-certificates: foo,bar
spec:
  backend:
    serviceName: ingress-nginx-controller
    servicePort: 80

然后,您可以为foo和bar创建一个ManagedCertificate和一个LoadBalancer,它们将共享相同的LoadBalancer。

代码语言:javascript
复制
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: foo
spec:
  domains:
    - foo.example.com
代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: foo
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: foo.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: foo
          servicePort: 5000

请记住,每次创建一个新的ManagedCertificate / in对时,您都必须修改gce入口清单,并在networking.gke.io/managed-certificates注释中使用证书的名称。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62980642

复制
相关文章

相似问题

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