安装CRI-O
1 | 设置环境变量 |
安装Kubernetes
1 | disable swap |
配置Kubernetes
1 | 使用kubeadm初始化 |
1 | # 设置环境变量 |
1 | # disable swap |
1 | # 使用kubeadm初始化 |
初始化后,会在lib目录中看到
1 | lib |
根据需要,通过 >Flutter Intl: Add locale 添加需要支持的语言
添加后,会在 l10n 目录下看到 intl_xx_xx.arb 的资源文件,需要使用的文案往里面添加即可。
在初始化MaterialApp的代码中,添加国际化的支持
1 | return MaterialApp( |
在后面的Widget中,可以通过context来获取对应的文案
1 | S.of(context).xxx |
Kubernetes部署Gitea+Drone+Registry
因为作者的Gitea是部署在k8s上,所以这次配置的 govanityurls
也是在k8s上构建,前置的环境不做多说。
源代码:https://github.com/GoogleCloudPlatform/govanityurls
拉取源代码后,执行 go build
即可。
然后配置 Dockerfile 构建镜像,推送的自己的代码仓库中。
1 | FROM alpine:3.13.5 |
如果不想自己构建,可以直接使用其他人构建好的,例如下面的
1 | garukun/govanityurls:latest |
创建 deployment.yaml
1 | apiVersion: apps/v1 |
创建 ingress.yaml
1 | apiVersion: v1 |
配置包路径 vanity.yaml
1 | host: pkg.domain |
参数解说
例如在gitea中,使用user,创建一个libcomm的仓库,git的https连接为
1 | https://gitcode.domain/user/libcomm.git |
创建仓库 libcomm
1 | go mod init pkg.domain/libcomm |
编写包代码
1 | package libcomm |
将代码提交到仓库中。
创建新的项目,测试引用包
1 | package main |
通过 go get 拉取包
1 | GIT_TERMINAL_PROMPT=1 go get -v pkg.domain/libcomm |
注意:首次必须要追加 GIT_TERMINAL_PROMPT=1
,因为私有代码仓库有用户密码验证,不添加这参数,会出现用户密码错误。
如果服务器不支持https
,可以追加 -insecure
参数。
1 | go get -v -insecure pkg.domain/libcomm |
最后,go build
,一切正常~
1 | # updated: Mar 4 2022 |
参考资料
https://tonybai.com/2017/06/30/go-get-go-packages-in-private-code-repo-by-govanityurls/
使用CRIO时,POD创建的时候会出现失败,错误信息
Failed to create pod sandbox: rpc error: code = Unknown desc = cri-o configured with systemd cgroup manager, ...
是因为默认情况,CRIO使用的是 cgroupfs(bug),这里需要手动配置一下。
编辑 /var/lib/kubelet/kubeadm-flags.env 追加 –cgroup-driver=systemd 参数
然后重新启动
1 | systemctl daemon-reload |
参考
带管理面板的rabbitmq,直接加载镜像,管理面板的http端口是 15672,直接拉取镜像就行。
1 | version: '3' |
然后打开 http://localhost:8080/ 初始化用户密码是 guest/guest 。
直接使用脚本,比较方便 https://github.com/Berico-Technologies/CMF-AMQP-Configuration
1 | git clone https://github.com/Berico-Technologies/CMF-AMQP-Configuration |
注意
1)服务器证书的CN需要与hostname一致,不然在创建tls连接时会失败。
2)这个脚本直接创建,通过golang 创建tls连接时,会出现
failed to connect rabbitmq!:x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
这个错误。处理方式有两种
A. 修正证书的SAN
B. 通过GODEBUG设置x509ignoreCN=0 忽略
B的方式虽然更简单,但是这种绕过的方式必然不是解决方案。
那怎么修正 SAN 呢,参考下面的步骤
1 | # 进入 CMF-AMQP-Configuration/ssl 编辑 openssl.conf |
修改 make_server_cert.sh 脚本
1 | # 找到创建证书的地方 |
修改客户端证书,同样
1 | # 找到下面两行 |
然后重新生成一遍证书
执行脚本后,复制证书文件,只需要5个。
cacert.pem
rabbitmq.cert.pem 服务端证书
rabbitmq.key.pem 服务端拿证书
rabbitmq-client.cert.pem 客户端证书
rabbitmq-client.key.pem 客户端证书
将文件复制到 cert 目录中,docker-compose 目录结构如下
1 | rabbitmq-folder |
到此为止,证书处理完成。
1 | loopback_users.guest = false |
1 | version: '3' |
然后唤起验证
打开浏览器
看到 amqp/ssl 5671 , 配置正常。
在 rabbitmq 的镜像中,可以通过 environment 环境变量,设置
RABBITMQ_MANAGER_SSL_CACERTFILE
RABBITMQ_MANAGEMENT_SSL_CERTFILE
RABBITMQ_MANAGEMENT_SSL_KEYFILE
来配置证书,但是个人并不喜欢直接这么配置,因为直接使用这个,默认情况management plugin 也会开启了ssl。对于自签证书来说,并不方便。
个人更偏好 management plugin 是 http协议的,外层 nginx 统一处理 ssl 证书。
加上本身rabbitmq的配置文件也是需要自定义的,直接在配置文件修改就行,没必要通过环境变量来设置。
相关资料
rabbitmq镜像 https://hub.docker.com/_/rabbitmq
golang 自签证书双向认证 https://studygolang.com/articles/31646