MASA Stack helm 本地Windows使用简单手册

环境

参考文档: https://masastack.github.io/helm/

docker

安装 Docker Desktop,目前版本的 Docker Desktop 附带一个 kubernetes ,在设置里启用 kubernetes , 就可以跳过后续的 kuberneteskubectl 的安装.

docker

kubernetes

参考:https://kubernetes.io/zh-cn/docs/tasks/tools/

kubectl

参考:https://kubernetes.io/zh-cn/docs/tasks/tools/

coredns 修改(本地运行才需要)

把现有coreDns配置导出,然后修改

Powershell
1
2
kubectl -n kube-system  get configmap/coredns -o yaml > coredns.yaml

修改 coredns.yaml 文件

.:53 配置节加入

coredns.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
hosts {
127.0.0.1 pm-ui-local-demo.masastack.com
127.0.0.1 pm-server-local-demo.masastack.com
127.0.0.1 auth-sso-local-demo.masastack.com
127.0.0.1 auth-server-local-demo.masastack.com
127.0.0.1 auth-ui-local-demo.masastack.com
127.0.0.1 dcc-server-local-demo.masastack.com
127.0.0.1 dcc-ui-local-demo.masastack.com
127.0.0.1 alert-server-local-demo.masastack.com
127.0.0.1 alert-ui-local-demo.masastack.com
127.0.0.1 mc-server-local-demo.masastack.com
127.0.0.1 mc-ui-local-demo.masastack.com
127.0.0.1 tsc-server-local-demo.masastack.com
127.0.0.1 tsc-ui-local-demo.masastack.com
127.0.0.1 scheduler-server-local-demo.masastack.com
127.0.0.1 scheduler-worker-local-demo.masastack.com
127.0.0.1 scheduler-ui-local-demo.masastack.com
fallthrough
}

这里的域名请参考 安装

docker

应用修改到集群

Powershell
1
2
3
4
5
6
kubectl apply -f coredns.yaml

# 重启coredns的容器

kubectl rollout restart deploy/coredns -n kube-system

docker

docker

helm

windows 使用 winget 安装, 此方法目前有缺陷,可以使用其它方式安装 https://helm.sh/docs/intro/install/

1
winget install Helm.Helm

如果安装后不能执行 helm 命令,请修改用户的 Path 环境变量

旧的变量,应该如下格式:
C:\Users\{{yourusername}}\AppData\Local\Microsoft\WinGet\Packages\Helm.Helm_Microsoft.Winget.Source_{{XXXXXXX}}

需要在这个后面加 \windows-amd64

docker

dapr

参考:https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-deploy/#install-dapr-a-private-dapr-helm-chart

1
2
helm upgrade --install dapr dapr/dapr --version=1.10 --namespace dapr-system --create-namespace --create-namespace --wait
kubectl get pods --namespace dapr-system #验证安装

nginx-ingress

参考:https://kubernetes.github.io/ingress-nginx/deploy/

1
2
helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace
kubectl get pods --namespace ingress-nginx #验证安装

修改 Hosts 文件

host
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
127.0.0.1 pm-ui-local-demo.masastack.com
127.0.0.1 pm-server-local-demo.masastack.com
127.0.0.1 auth-sso-local-demo.masastack.com
127.0.0.1 auth-server-local-demo.masastack.com
127.0.0.1 auth-ui-local-demo.masastack.com
127.0.0.1 dcc-server-local-demo.masastack.com
127.0.0.1 dcc-ui-local-demo.masastack.com
127.0.0.1 alert-server-local-demo.masastack.com
127.0.0.1 alert-ui-local-demo.masastack.com
127.0.0.1 mc-server-local-demo.masastack.com
127.0.0.1 mc-ui-local-demo.masastack.com
127.0.0.1 tsc-server-local-demo.masastack.com
127.0.0.1 tsc-ui-local-demo.masastack.com
127.0.0.1 scheduler-server-local-demo.masastack.com
127.0.0.1 scheduler-worker-local-demo.masastack.com
127.0.0.1 scheduler-ui-local-demo.masastack.com

安装

1
2
3
helm upgrade --install masastack masastack/masastack --version 1.0.0-rc1 --namespace masastack --create-namespace --set 'global.suffix_identity=local'
kubectl get pods --namespace masastack #验证安装
kubectl get ingress -n masastack # 查看绑定的域名

global.suffix_identity 用于定义自己的域名前缀, 本文使用的是 local,所以域名里有 -local

卸载

1
2
helm uninstall masastack -n masastack
#helm uninstall masastack --namespace masastack

常用变量

变量名 备注
global.sqlserver.{ip, id, port, password} 使用外部数据库的时候配置,ip 地址,账号,端口和密码
global.redis.{ip, db, port, password} 使用外部 redis 的配置
global.elastic.{ip, port} 使用外部 elasticsearch 的配置
global.prometheus{ip, port} 使用外部 prometheus 的配置
global.suffix_identity env 配置环境变量,针对本地多环境来使用
global.volumeclaims.{enabled, storageSize, storageClassName} 分别是启动 StorageClass 存储,指定存储空间大小,指定相应的 StorageClass,若无指定使用默认 sc
middleware-{redis, prometheus, sqlserver, otel, elastic}.service.type ClusterIP, NodePort,默认为 ClusterIP,主要为服务提供外部方位时修改
middleware-{redis, prometheus, sqlserver, otel, elastic}.service.nodePort 例如,32200 ;结合 type 使用,指定需要的端口

生成临时的 tls 证书提供给 ingress 使用(可选,未校验)

1
2
3
4
kubectl create secret tls --cert=./tls.crt --key=./tls.key -n masastack
helm upgrade -–install masastack masastack/masastack -–namespace masastack -–create-namespace -–set global.secretName --set global.domain

# domain_name 修改为你自签证书中的<Common Name>
  • Country Name 国家名称: ZH
  • State or Province Name 省份: ZheJiang
  • Locality Name 城市: WenZhou
  • Organization Name 组织名称/公司名称: Masastack
  • Organizational Unit Name 组织单位名称/公司部门: Masastack
  • Common Name 域名: .masastack.com (这里是域名里的代表的是泛域名)
  • Email Address 邮箱地址: 123@masastack.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@a.test]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt
Generating a 2048 bit RSA private key
...........................................+++
........................................................+++
writing new private key to 'tls.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:ZH
State or Province Name (full name) []:ZheJiang
Locality Name (eg, city) [Default City]:WenZhou
Organization Name (eg, company) [Default Company Ltd]:Masastack
Organizational Unit Name (eg, section) []:Masastack
Common Name (eg, your name or your server's hostname) []:*.masastack.com
Email Address []:123@masastack.com
1
2
[root@a.test]# ls
tls.crt tls.key
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[root@a.test]# cat tls.crt
-----BEGIN CERTIFICATE-----
MIIEATCCAumgAwIBAgIJAJOEQs4wPXutMA0GCSqGSIb3DQEBCwUAMIGWMQswCQYD
VQQGEwJaSDERMA8GA1UECAwIWmhlSmlhbmcxEDAOBgNVBAcMB1dlblpob3UxEjAQ
BgNVBAoMCU1hc2FzdGFjazESMBAGA1UECwwJTWFzYXN0YWNrMRgwFgYDVQQDDA8q
Lm1hc2FzdGFjay5jb20xIDAeBgkqhkiG9w0BCQEWETEyM0BtYXNhc3RhY2suY29t
MB4XDTIzMDEwOTE1MTcxNFoXDTI0MDEwOTE1MTcxNFowgZYxCzAJBgNVBAYTAlpI
MREwDwYDVQQIDAhaaGVKaWFuZzEQMA4GA1UEBwwHV2VuWmhvdTESMBAGA1UECgwJ
TWFzYXN0YWNrMRIwEAYDVQQLDAlNYXNhc3RhY2sxGDAWBgNVBAMMDyoubWFzYXN0
YWNrLmNvbTEgMB4GCSqGSIb3DQEJARYRMTIzQG1hc2FzdGFjay5jb20wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/ziMVhIKDcq4vKMniTeN2k6fUcNn1
mnyBmgVql8VK+GHplK+AuMmXEUG0qZyf+69ckD/PtKmDUMQvk3zoU3/MkBh4DdUs
Zfs61/iUy4ZRkvraMZQrzOmZ/B6nG9pqvzeopicGHsDz8GVpaC3qLysJZsV3PaNh
3tLoPlETODRkAAvWYzlMEdorhzg375Y30uXap2eGEYfYSDyyvD0LZveyfLVBm6iJ
9uQ86MLf4U3nKnYTKh6XsurZxke6K4gMm++SilmeUOPWwUcqGv3Y8mP05TSaOv30
fBYVsvlHq6ah3H5T3WoiZk1H5IJxUfJFEe6XfZ3SpcQ1wCljHKKmOodNAgMBAAGj
UDBOMB0GA1UdDgQWBBTgwBY9JasUUUT5omN7HfMxZEWO0TAfBgNVHSMEGDAWgBTg
wBY9JasUUUT5omN7HfMxZEWO0TAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
A4IBAQCrfhnfg7HhLQ7sNxlaSlKqDi6il7AXrDq7z/xdv17NVXEKCCxq4wSJq9zG
/x3pe5sDd4LiT0oYm9zl17LTiIK90nREqx0YSBgCh10y1j1chihHNso4FLqs5Esg
FpLXk1cnr440mXluQLxUJt+pzdd1LAE7UDRmyZZAJdJWrdmFkNNhGQWeTXROgznb
PFCP3UqsG+jhkRrFqOjMtJQXmj8AZa1J14yv5aTUVzkErVS4VqngNK+ETTGNiaXC
0faqJ49yLThphbVhvx9aGqlru34EmXfsp8h+VQRh1pVi/MNZcIFtcIh6GvMWNGlX
gAcaZhAEE95MM16OmVXyKDgtqTtu
-----END CERTIFICATE-----
[root@a.test]# cat tls.key
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC/ziMVhIKDcq4v
KMniTeN2k6fUcNn1mnyBmgVql8VK+GHplK+AuMmXEUG0qZyf+69ckD/PtKmDUMQv
k3zoU3/MkBh4DdUsZfs61/iUy4ZRkvraMZQrzOmZ/B6nG9pqvzeopicGHsDz8GVp
aC3qLysJZsV3PaNh3tLoPlETODRkAAvWYzlMEdorhzg375Y30uXap2eGEYfYSDyy
vD0LZveyfLVBm6iJ9uQ86MLf4U3nKnYTKh6XsurZxke6K4gMm++SilmeUOPWwUcq
Gv3Y8mP05TSaOv30fBYVsvlHq6ah3H5T3WoiZk1H5IJxUfJFEe6XfZ3SpcQ1wClj
HKKmOodNAgMBAAECggEAURwY1gadMn0Sj7rN9Lc/U2uJc1rtsODNefjqBXN86QE0
VpSbyvFZvlp70KxRIY5LT/doJKufa3qCHCRgk9aLmrPsxQgEd6wAm5es9S9D88cV
8aM5p3QV7Roi1EQBD1chcF4i7oGe0wl7uSFnGTstFeKx6oTUTJTv12pS2q/P5+Ep
AIO+y8uyVWMe3xYAKi00y9ewPtxX42T9lRDqGrzfo8OnxPImH+Z4JLkKixZTUsqk
ipldq5AmUGLKTJ5yfd+0XKVGqZxU17QHrMwfX/tlEBhURnFzihSi2NfTX/p0KAnm
5bQxHDzkY5grzyj0pXjaB6YgPHdSCLdq/lQNJlO5QQKBgQDxwcRXf9jp3AWlNY8L
ho0cjB12pBsLScWSfkoeYbFy8x/+VqFbdeI5O0GoSxRpJq4CppwEgJzdqNUuHubZ
39g/XQdwKLtMjpa49poTqMYT4UnMoPb502U+R7j/26hyltzdU5uufM3lfX7fhC5W
HtkQAptGSKPj7s4JWUgHxh93KQKBgQDLGvzGfy32thAL7CTzQYuOJFt1YEkUKQD7
4TbE5iE9SFaHp57qrujKdRakAuGi9EUufAmZ1Qqw3pwOUviS8MttSpzNDlJXAlMr
ASAuYFQrwraUHtOi69Nr2EwlgPIThgAsq9ZL9wyMXY8d9CJDW3hVbEHpQoPzKFtz
Ust3CBOHhQKBgQCCxDWowp2Y+YsQLuU97by8WUnCl8eNFo1IzQjYYC10qO+ASmmj
KCOCo3vDRUE4E1UCWA6CHPM8rosJFGv4I607sN1KHK4bHfGHANScl6j0reKWTebp
gR/9TRxTQQRfXxz+lq/Z9OYGIRiUXFIYAT2V/GLy5G3J560Iv4NHuTHh6QKBgQC8
TEXjZU9gtgQEeab8G11dp5lfJag615UA8BhNzaktXp5SX/W2T/ikko8t+TnlUJ++
6+Iey2OA/LEjmoq3+CQxLAZZGZj+77nZWc7TEB2ZAIkyo63EEuzMxBg8gOJtdUM+
JwWjIeRxUd/4fjkxx2C1mYs1zaP1UAoQzcaykTtB3QKBgEkuz/m+4YoBZDrijtJg
QPFxv48JdNNaMvN4CzFk94z9CuPZcdYoRmL1+xZNUM0eUbRG88dZgswhqXUHD067
OHoUyq+WExA99lTAGaRvGgnjJTxt8E2tZpHhV55IoPhJJFNtSN/aB1PcGuZ7+TNc
vbRG7sTyTM2AkQiL0PLWQBBv
-----END PRIVATE KEY-----

完成证书设置之后通过 kubectl 的命令来导入证书提供 masastack 使用

1
kubectl create secret tls masastack --cert=./tls.crt --key=./tls.key -n masastack