安装自定义签名证书
当您首次登录 NetQ UI 作为本地部署的一部分时,您的浏览器将显示警告,指示默认证书不受信任。您可以按照本页概述的步骤安装您自己的自定义签名证书来避免此警告。自签名证书对于非生产环境或云部署已足够。
如果您已经安装了证书并想要更改或更新它,请在按照本节概述的步骤之前运行 kubectl delete secret netq-gui-ingress-tls [name] --namespace default
命令。在进行更新后,使用 kubectl delete pod -l app.kubernetes.io/name=ingress-nginx --namespace ingress-nginx
命令重启 nginx。
您需要以下项目来执行证书安装
有效的 X509 证书,包含主题备用名称 (SAN) 属性。
证书的私钥文件。
配置为访问 NetQ UI 的 DNS 记录名称。
FQDN 应与证书的通用名称匹配。如果您在通用名称中使用通配符 — 例如,如果证书的通用名称是 *.example.com — 那么 NetQ 遥测服务器应位于该域的子域上,可通过类似 netq.example.com 的 URL 访问。
功能正常且健康的 NetQ 实例。
您可以通过运行
netq show opta-health
命令来验证这一点。
使用 NetQ CLI 安装证书
通过 SSH 登录到 NetQ VM,并将您的证书和密钥文件复制到那里。
生成一个名为
netq-gui-ingress-tls
的 Kubernetes secretcumulus@netq-ts:~$ kubectl create secret tls netq-gui-ingress-tls \ --namespace default \ --key <name of your key file>.key \ --cert <name of your cert file>.crt
验证您是否成功创建了 secret
cumulus@netq-ts:~$ kubectl get secret NAME TYPE DATA AGE netq-gui-ingress-tls kubernetes.io/tls 2 5s
更新 ingress 规则文件以安装自签名证书。
创建一个名为
ingress.yaml
的新文件复制以下内容并添加到文件中
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" nginx.ingress.kubernetes.io/proxy-body-size: 10g nginx.ingress.kubernetes.io/proxy-request-buffering: "off" name: netq-gui-ingress-external namespace: default spec: ingressClassName: ingress-nginx-class rules: - host: <your-hostname> http: paths: - path: / pathType: Prefix backend: service: name: netq-gui port: number: 80 path: / pathType: Prefix tls: - hosts: - <your-hostname> secretName: netq-gui-ingress-tls
- 将
<your-hostname>
替换为 NetQ VM 的 FQDN。
应用新规则
cumulus@netq-ts:~$ kubectl apply -f ingress.yaml ingress.extensions/netq-gui-ingress-external configured
如果您的 ingress 规则配置成功,则会显示上述消息。
通过更新 Swagger ingress 规则文件,配置 NetQ API 以使用新证书。
创建一个名为
swagger-ingress.yaml
的新文件复制以下内容并添加到文件中
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "300" nginx.ingress.kubernetes.io/proxy-send-timeout: "300" nginx.ingress.kubernetes.io/proxy-body-size: 10g nginx.ingress.kubernetes.io/proxy-request-buffering: "off" name: netq-swagger-ingress-external namespace: default spec: ingressClassName: ingress-nginx-class rules: - host: <your-hostname> http: paths: - path: "/swagger" pathType: Prefix backend: service: name: swagger-ui port: number: 8080 tls: - hosts: - <your-hostname> secretName: netq-gui-ingress-tls
- 将
<your-hostname>
替换为 NetQ VM 的 FQDN。
应用新规则
cumulus@netq-ts:~$ kubectl apply -f swagger-ingress.yaml
您的自定义证书现在应该可以工作了。通过在浏览器中打开 https://<your-hostname-or-ipaddr>
访问 NetQ UI 来验证这一点。