Ram*_*Ram 8 google-kubernetes-engine cert-manager nginx-ingress
我的 GKE 中有一个 NGINX Ingress。我想让我的 URL 安全。但不幸的是我无法通过证书管理器实现这一点。我看到一个创建托管证书的选项。但我不确定是否有注释允许我在 NGINX Ingress 中使用 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
Run Code Online (Sandbox Code Playgroud)
当我使用 cert-manager 创建证书时,证书状态显示“Kubernetes Ingress Controller Fake Certificate”
使用 cert-manager 更容易,但如果由于某种原因无法使用 cert-manager,您可以尝试此解决方案。它设置了 GCE 入口和 nginx 入口。GCE 入口是公共的,终止 SSL 但转发到私有 nginx 入口进行路由。
helm3 install -f nginx-values.yaml ingress-nginx ingress-nginx/ingress-nginx
Run Code Online (Sandbox Code Playgroud)
#nginx-values.yaml
controller:
service:
type: NodePort
annotations:
cloud.google.com/backend-config: '{"default": "backendconfig"}'
admissionWebhooks:
enabled: false
defaultBackend:
enabled: true
Run Code Online (Sandbox Code Playgroud)
然后创建一个 BackendConfig 和一个 Ingress 来设置一个与 nginx NodePort 服务通信的 LoadBalancer。
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: backendconfig
spec:
timeoutSec: 300
healthCheck:
requestPath: /healthz
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
然后您可以为 foo 和 bar 创建一个 ManagedCertificate 和一个 Ingress,它们将共享同一个 LoadBalancer。
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: foo
spec:
domains:
- foo.example.com
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
请记住,每次创建新的 ManagedCertificate / Ingress 对时,您都必须使用注释中的证书名称修改 gce 入口清单networking.gke.io/managed-certificates。
| 归档时间: |
|
| 查看次数: |
1820 次 |
| 最近记录: |