配置域名访问(新)
1. 前置约束
-
该文档适用于V6版本;如果从V3版本升级到V6版, 可参考原文去掉前期baseurl配置和https配置,再参考本文调整,如有疑问请联系ONES工程师;
-
ONES开箱安装完成后,默认使用
http://IP:30011对外提供服务。客户可通过已有的代理、SLB、网关等设备配置前向代理,实现HTTPS://域名、HTTP://域名、HTTPS://IP、HTTP://IP等方式的访问;也可以采用本文的方式在ONES侧使用内置Nginx网关实现。 本文以HTTPS://域名为例进行说明,如需配置http://IP等方式,下述配置中去掉onesBuiltInNginxSSLCertificates块、调整按需修改的部分。 -
在完成配置操作后,必须确保域名可解析;可进入project-api这个pod,进行
ping 域名的测试,如果不通,请检查宿主机的/etc/hosts文件或/etc/resolv.conf配置,或者在config/private.yaml中添加hostAliases;如果在线修改了/etc/resolv.conf配置,请执行kubectl rollout restart deployment/coredns -n kube-system重启coredns。
2. 配置HTTPS+域名
2.1 操作说明
提前按需准备SSL证书和域名,在主机上用root执行 ones-ai-k8s.sh 进入容器,然后vi config/private.yaml 参考下文样例进行修改,修改后执行 make setup-ones-built-in-nginx 生效。
# 证书要求PEM格式, 执行类似命令 cat cert1.crt | base64 -w 0 生成结果, 替换下面的xxxxxx
onesBuiltInNginxSSLCertificates: |
cert1.crt: xxxxxx
cert1.key: xxxxxx
onesBuiltInNginxPorts: "443" # 按需修改
onesBuiltInNginxConfig: |
server {
listen 443 ssl; # 按需修改
server_name example.myones.net; # 按需修改
ssl_certificate /etc/nginx/cert/cert1.crt;
ssl_certificate_key /etc/nginx/cert/cert1.key;
location / {
set $scheme_header "https";
proxy_set_header X-ONES-BaseURL https://example.myones.net; # 按需修改
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme_header;
proxy_set_header X-Original-Forwarded-For $http_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 60s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
resolver 127.0.0.1:53 ipv6=off;
proxy_pass http://access-service:80;
}
}
2.2 功能验证
等待服务重启完成并等待几分钟后,直接访问HTTPS域名地址。例如 https://ones.example.com,如可正常访问则正常。
如果验证时发现返回的证书是 Kubernetes Ingress Controller Fake Certificate ,请确保访问所用域名,与配置的域名与证书生成使用的域名一致。
如果节点的网络环境不方便直接访问,可以先直接在本地检查:
HOST=local.test # 换成自己的域名
curl --resolve ${HOST}:443:127.0.0.1 https://${HOST} -vv
# 观察终端输出中的 Server certificate 区块下的 subject 是否自己域名,以及其过期时间等
3. 更换SSL证书
3.1 操作说明
先参考上文,确认是采用本文的方式添加的SSL证书。准备好新的证书,然后主机上执行 ones-ai-k8s.sh 进入容器,然后 vi /data/ones/ones-ai-k8s/config/private.yaml 进行修改,修改后,执行make setup-ones-built-in-nginx生效。
# 证书要求PEM格式, 执行类似命令 cat cert1.crt | base64 -w 0 生成结果, 替换下面的xxxxxx
onesBuiltInNginxSSLCertificates: |
cert1.crt: xxxxxx
cert1.key: xxxxxx
3.2 功能验证
等待服务重启完成并等待几分钟后,直接访问HTTPS域名地址。例如 https://ones.example.com,能够访问且无浏览器的不安全提示即表示正常。
4. 关闭HTTPS+域名
4.1 操作说明
参考打开的方法,主机上执行ones-ai-k8s.sh进入容器,然后vi /data/ones/ones-ai-k8s/config/private.yaml删除添加的配置,修改后执行make setup-ones-built-in-nginx生效。
4.2 功能验证
等待服务重启完成并等待几分钟后,直接访问HTTPS域名地址。例如 https://ones.example.com,不能正确访问则说明HTTPS成功关闭;能继续访问 http://ip:30011 表示服务正常。