ingress-nginx 设置 https 证书
准备证书
1 | openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3560 -nodes -subj '/CN=My Cert Authority' |
上面的 CN= 是目标服务要使用的域名。
将 server 证书上传到 kubernetes
1 | kubectl create secret generic tls-secret --from-file=tls.crt=server.crt --from-file=tls.key=server.key -n test |
配置 ingress
ingress 中的 host 一定要与证书的 CN 相同,在 tls 配置中引用前面创建的 secret:
1 | apiVersion: extensions/v1beta1 |
访问
1 | [root@ingress]# curl --cacert ca.crt https://test.sy.com/abc/check_health.jsp |
认证
创建用户,设置密码
创建 basic-auth 用户 foo,密码 123456,将用户信息提交到 kubernetes:
1 | htpasswd -c auth foo |
设置 ingress
1 | apiVersion: extensions/v1beta1 |
访问
不加认证
1 | [root@ingress]# curl http://test.sy.com/abc/check_health.jsp |
加认证
1 | [root@ingress]# curl http://test.sy.com/abc/check_health.jsp -u 'foo:123456' |
加https的认证
1 | apiVersion: extensions/v1beta1 |
1 | [root@ingress]# curl --cacert ca.crt -u 'foo:123456' https://test.sy.com/abc/check_health.jsp |