正常如果只使用vanblog时,可以直接通过腾讯云域名配置到主机ip,开放80,443端口,就可以直接访问vanblog,但因为作者这个域名除了想访问vanblog外,还想做其他的用途,例如搭建api服务器等,因此额外部署nginx
sequenceDiagram
浏览器->>nginx: 通过80/443端口
nginx->>vanblog:通过80端口
前提:在腾讯云已经申请好域名
server { listen 80; server_name nobugs.com.cn; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name nobugs.com.cn; ssl_certificate /etc/nginx/certs/nobugs.com.cn_bundle.crt; ssl_certificate_key /etc/nginx/certs/nobugs.com.cn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; #access_log /var/log/nginx/host.access.log main; location / { proxy_pass http://vanblog:80; # 这里是容器的名称+容器的端口,不是容器对外暴露的端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 传递 HTTPS 协议 root /usr/share/nginx/html; index index.html index.htm; } }
docker run --name nginx -p 80:80 -p 443:443 -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/certs:/etc/nginx/certs -d --restart=always nginx
在使用腾讯云的cos的sdk过程中,发现现网有异常反馈,返回的错误就一个EOF,针对这个问题,做个一个排查记录
腾讯云cos-sdk路径:https://github.com/tencentyun/qcloud-cos-sts-sdk/blob/master/go/sts.go#L130
在上述源码中,我们可以看到如下代码,当初始化Cosclient的时候,如果没有传入http.Client,会使用默认的
默认的参数中有一个DisableKeepAlives
参数用来控制是否关闭长连接,默认是关闭的
这就导致在高并发的情况下,有可能长连接超时,服务端已经给客户端发了FIN,然后客户端此时触发了POST请求,因为服务端已经关了连接,所以读到了EOF,导致报错。
既然知道了问题,解决的办法也就简单了
gotr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
TLSHandshakeTimeout: 10 * time.Second,
DisableKeepAlives: true,
ResponseHeaderTimeout: 5 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}
netClient := &http.Client{
Transport: tr,
Timeout: 10 * time.Second,
}
c := sts.NewClient(cosConf.SecretId, cosConf.SecretKey, netClient)
vanblog因已经支持了腾讯云cos的图床能力,因此在搭建的过程中想去使用,但是遇到了一些问题,在此梳理记录下过程
首先本地最好安装好picgo软件,且已经配置好,配置好后,直接打开配置文件,即可获取配置的json,picgo软件里的json文件比较长,可以参考我下面的示例做一些适当的删减
如果你这边没有该软件,或者无法打开配置文件,则可以参考下我配置
json{
"picBed": {
"current": "tcyun",
"uploader": "tcyun",
"tcyun": {
"version": "v5",
"secretId": "替换成你自己的secretId",
"secretKey": "替换成你自己的secretKey",
"bucket": "替换成你自己的bucket",
"appId": "同上",
"area": "ap-guangzhou",
"path": "/picGo/",
"customUrl": "",
"options": ""
}
},
"picgoPlugins": {
"picgo-plugin-oss-outside-url": true
}
}
vanblog的图床是基于picgo来实现的,picgo针对不同的oss又有不同的插件,其中插件列表在此,例如我这边是使用的腾讯云COS,则需要安装该插件picgo-plugin-oss-outside-url
我这边在安装之前,安装了一个s3的软件,导致我在配置正确的情况下,还是不能正常的上传,看后台日志,上传到腾讯云cos是成功的,但是报了一个如下的s3的错,此原因是因为安装了s3的插件,但是未配置导致,可以禁用掉该插件,或者删除该插件来修复该问题
这种情况,建议直接重启pod即可
# 查询context kubectl config get-contexts # 设置context kubectl config use-context docker-desktop
istioctl install --set profile=demo -y
kubectl label namespace default istio-injection=enabled
shellkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.17/samples/bookinfo/platform/kube/bookinfo.yaml
shellkubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.163.194 localhost 15021:30278/TCP,80:31993/TCP,443:30544/TCP,31400:30466/TCP,15443:30305/TCP 7m35s
shellkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.17/samples/bookinfo/networking/bookinfo-gateway.yaml
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
先在本地下载好istio的源码:https://github.com/istio/istio/tree/release-1.17/samples/addons
安装kiali和其他组件
kubectl apply -f samples/addons # 查询安装状态 kubectl rollout status deployment/kiali -n istio-system
访问kiali面板
istioctl dashboard kiali