前端使用 HTTP
平台部署后默认打开了 TLS 服务端(单向)认证,使用 HTTPS 协议进行浏览器访问前端界面。本文介绍如何配置使用 HTTP 协议访问前端。
编辑 onecloudcluster spec
首先需要编辑 oc.spec.web.useHTTP 属性,该属性默认为 false ,需要设置为 true ,操作如下:
$ kubectl edit oc -n onecloud
搜 useHTTP 关键字,进行如下编辑:
spec:
web:
@@ -1122,7 +1122,7 @@
key: node-role.kubernetes.io/master
- effect: NoSchedule
key: node-role.kubernetes.io/controlplane
- useHTTP: false
+ useHTTP: true
webconsole:
affinity:
nodeAffinity:
删除旧的 web configmap
web 组件的 configmap 其实是一个 nginx 配置,该配置不会重新生成,需要删除后由 operator 新建,操作如下:
# 删除 web 组件的 configmap
$ kubectl delete configmap -n onecloud $(kubectl get configmap -n onecloud | grep web | grep -v console | awk '{print $1}')
configmap "default-web" deleted
# 等待 15s 后,该 configmap 会新建,查看生成的内容
$ kubectl get configmap -n onecloud $(kubectl get configmap -n onecloud | grep web | grep -v console | awk '{print $1}')
NAME DATA AGE
default-web 1 28s
# 查看其中是否有 80 端口配置,有的话就没有问题了
$ kubectl get configmap -n onecloud $(kubectl get configmap -n onecloud | grep web | grep -v console | awk '{print $1}') -o yaml | grep 'listen 80'
listen 80 default_server;
重启 web 组件
更新完 web 组件的 configmap 后,需要重启 web 组件的 deployment ,命令为:
# 重启 web deployment
$ kubectl rollout restart deployment -n onecloud $(kubectl get deployment -n onecloud | grep web | grep -v console | awk '{print $1}')
deployment.extensions/default-web restarted
# 等待 pod 变为 Running
$ kubectl get pods -n onecloud | grep web | grep -v console
default-web-5bfb6c578b-mdh9w 3/3 Running 0 58s
更新 ingress
web 组件的 service 是使用 ingress 暴露出去的,ingress 默认也不会刷新,需要删除再次创建,操作如下:
$ kubectl delete ingress -n onecloud $(kubectl get ingress -n onecloud | grep web | awk '{print $1}')
ingress.extensions "default-web" deleted
查看重建的 ingress 规则,已经路由到 80 端口即可:
$ kubectl get ingress -n onecloud $(kubectl get ingress -n onecloud | grep web | awk '{print $1}') -o yaml | grep -i port
onecloud.yunion.io/last-applied-configuration: '{"rules":[{"http":{"paths":[{"backend":{"serviceName":"default-web","servicePort":80},"path":"/"}]}}],"tls":[{"secretName":"default-certs"}]}'
servicePort: 80
配置 traefik ingress controller
如果是使用 helm 部署的集群,就不用执行该步骤了,ingress controller 的实现和具体的 k8s 部署平台有关,现在 web 服务已经是使用 HTTP 协议了。
下面的步骤仅适用于使用 ocboot 部署的平台,需要设置 traefik ingress controller ,把 http 重定向到 https 这个配置关掉,操作如下:
$ kubectl edit configmaps -n kube-system traefik-ingress-lb
注释掉 entryPoints.http.redirect 配置:
@@ -14,8 +14,8 @@
[entryPoints]
[entryPoints.http]
address = ":80"
- [entryPoints.http.redirect]
- entryPoint = "https"
+ #[entryPoints.http.redirect]
+ #entryPoint = "https"
重启 traefik ingress controller:
$ kubectl delete pods -n kube-system $(kubectl get pods -n kube-system | grep traefik-ingress-controller | awk '{print $1}')
pod "traefik-ingress-controller-xkmct" deleted
至此 HTTP 所有配置完成。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.