我在azure集群上有loadbalancer类型的kubernetes服务。该服务必须接受HTTPS请求。如何创建ssl证书并在注释中添加它们?
我读了不同的文章,但我对ingress, cert-manager和其他东西非常困惑
回答您的问题,服务不接受任何注释。因此,要在应用程序中使用ssl/tls,入口是最佳选择。以下是微软官方指南,将帮助您完成使用LetsEncrypt cert-manager设置入口控制器的每个步骤。
如果您想从任何已知的CA使用您的BYOC(携带您自己的证书),以下是步骤。
请遵循上述URL提供的指南,直到使用动态IP地址.
kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx-ingress-ingress-nginx-controller LoadBalancer 10.0.74.133 EXTERNAL_IP 80:32486/TCP,443:30953/TCP 44s app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
使用CA提供的。crt和。key文件创建和创建秘密。
kubectl create secret tls TargetPods-tls --cert nameOfCertfile.crt --key privateKey.key --namespace default
在你的入口对象中使用这些秘密,并为http添加注释到https重定向
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: 'true' # Annotation to redirect http to https.
name: TargetPods-6dc98445c4-jr6pt
spec:
tls:
- hosts:
- test.domain.io
secretName: TargetPods-tls
rules:
- host: test.domain.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: TargetPod-6dc98445c4-jr6pt
port:
number: 80