我的GKE里有个NGINX攻入。我想让我的URL安全。但不幸的是,我无法通过证书经理做到这一点。我看到了创建托管证书的选项。但我不确定是否有注释允许我在NGINX in中使用google管理的证书。控制器。
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侵入控制器假证书“
发布于 2021-03-12 15:01:45
使用证书管理器更容易,但如果由于某种原因无法使用证书管理器,则可以尝试此解决方案。它建立了一个GCE入口和一个nginx入口。GCE入口是公共的,终止SSL,但转发给私有nginx入口来执行路由。
helm3 install -f nginx-values.yaml ingress-nginx ingress-nginx/ingress-nginx#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。
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: backendconfig
spec:
timeoutSec: 300
healthCheck:
requestPath: /healthzapiVersion: 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。
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: foo
spec:
domains:
- foo.example.comapiVersion: 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注释中使用证书的名称。
https://stackoverflow.com/questions/62980642
复制相似问题