打包chart包及部署chart仓库服务
(有修改chart包时需要kubectl delete deployment 名,删所有除了backend-service外的,以及helm delete demo --purge删除部署的实例)
1.获取chart文件
cp /home/mcloud/chart-repo /home/mcloud/developer/xubb8
cp /home/mcloud/backend-k8s /home/mcloud/developer/xubb8
2. 修改配置
进入目录`mysql-chart`
`configmap-self.yaml`: 修改文件中的`data.config`,改为所使用的k8s环境的kubeconfig配置 (不改的话显示init)
各服务按需修改各自服务deployment文件中对应的环境变量值(values.yaml文件里)
3. 打包chart包
在`mysql-chart`目录中执行如下命令打包chart包
helm package mysqlha-1m1s
得到chart包`mysqlha-1m1s-0.3.0.tgz`
4. 部署chart仓库服务
假设:
1. `mysqlha-1m1s-0.3.0.tgz`在的目录`D:/mysql-chart`中
2. chart服务所在机器对外访问ip为`192.168.31.101`
执行如下命令启动chart仓库服务
helm serve --address 192.168.31.101:8879 --repo-path D:/mysql-chart
**自己的**
helm serve --address 192.168.159.132:8879 --repo-path /home/xubb/charts/mysql-chart
nohup helm serve --address 10.236.5.12:8812 --repo-path /home/mcloud/developer/xubb8/chart-repo/redis-chart >/dev/null 2>&1 &
**注意**:启动chart仓库所在的机器只要k8s集群可以访问即可,chart仓库无需部署在k8s集群上
验证仓库服务起来没:
netstat -tlnp 看8879或ps -ef|grep 8879 或 页面访问192.168.159.132:8879
后端服务拉起方式
注意修改如下内容:
1. `configmap.yaml`
修改`data.config`中的内容,改为所使用的k8s环境的kubeconfig配置
2. `deploymeng-backend-service.yaml`
`CHART_REPO_URL`:改为所需使用的Chart服务地址192.168.159.132:8879
`DEFAULT_NODE_IP`:改为k8s机器的node节点worker的任一ip
使用`./backend-service`中的yaml文件拉起backend-service:(后两个yaml执行顺序无先后要求)
kubectl create -f configmap.yaml
kubectl create -f deployment.yaml
kubectl create -f svc.yaml
验证,查看后端服务暴露的3万加的端口kubectl get SVC
看到端口如30973
通过backend-service拉起chart包(不用在chart包里helm方式)
方法一:通过curl命令
curl命令示例如下:
curl -X PUT "http://192.168.74.138:30609/v1/instance/demo" -H "accept: application/json" -H "content-type: application/json" -d "{ \"chart_name\": \"chinaunicom/mysqlha-1m1s\", \"configuration\": { \"cpu\": 0.2, \"memory\": 128 }, \"instance_id\": \"inst001\", \"project_id\": \"project001\", \"tenant_id\": \"default\"}"
**自己的**
curl -X PUT "http://192.168.159.132:32612/v1/instance/demo" -H "accept: application/json" -H "content-type: application/json" -d "{ \"chart_name\": \"chinaunicom/mysqlha-1m1s\", \"configuration\": { \"cpu\": 0.2, \"memory\": 128 }, \"instance_id\": \"inst001\", \"project_id\": \"project001\", \"tenant_id\": \"default\"}"
方法二:通过swagger页面调用10.236.5.12:30973/swagger(端口号是后端服务端口)
`backend-service`需设置`RUN_MODE=dev`(开发环境才能看见swagger)并配置`GOPATH`
使用provision创建实例接口即可拉起chart包,body可以参考如下内容:
创建mysql实例:
{
"chart_name": "chinaunicom/mysqlha-1m1s",
"configuration": {
"cpu": 0.2,
"memory": 128
},
"instance_id": "inst001",
"project_id": "project001",
"tenant_id": "default"
}
创建redis实例:
{
"chart_name": "chinaunicom/redis",
"configuration": {
"cpu": 0.2,
"memory": 128
},
"instance_id": "inst001",
"project_id": "project001",
"tenant_id": "default"
}
注意"instance_id": "inst001","project_id": "project001",两项首个是字母,字母都小写; "tenant_id": "default"是命名空间namespace
执行后返回dashboard的url。
注意整个k8s集群实例名唯一,所以不同命名空间里创建的实例名不能重名。
使用自己的命名空间拉自己的后端服务,创建自己命名空间下的实例:
进入自己目录创建自己的命令空间,并修改后端服务的三个yaml加上namespace,然后拉起后端服务,如下图:
get pod查看pod状态,get SVC查看后端服务端口,连接swagger调用接口创建实例,并查看实例状态或者绑定服务(绑定类型credentials证书; 凭证)。
调用接口创建自己命名空间下的实例的tenant_id修改为自己的namespace
创建mysql实例:
{
"chart_name": "chinaunicom/mysqlha-1m1s",
"configuration": {
"cpu": 0.2,
"memory": 128
},
"instance_id": "inst001",
"project_id": "project001",
"tenant_id": "xubb8"
}
接口会返回"dashboard_url": "http://10.236.5.15:30839"
查看实例状态:
kubectl get pod -n xubb8
kubectl get pod -n xubb8 |grep xubbmysql
(注意deployment pod的区别)
执行一个create -f deployment就会生成一个pod,pod是deployment名加上系列号,只要deployment在,删除pod会自动再拉起一个pod,只有删除deployment才能正真的删除。
创建自己的chart仓库:
1.修改自己chart包里yaml后 打包chart包
在`mysql-chart`目录中执行如下命令打包chart包
helm package mysqlha-1m1s
得到chart包`mysqlha-1m1s-0.3.0.tgz`
2. 部署自己chart仓库服务
假设:
1. `mysqlha-1m1s-0.3.0.tgz`在的目录`D:/mysql-chart`中
2. chart服务所在机器对外访问ip为`10.236.5.12` ,给自己的仓库服务端口是8812
执行如下命令启动chart仓库服务
nohup helm serve --address 10.236.5.12:8812 --repo-path /home/mcloud/developer/xubb8/chart-repo/redis-chart >/dev/null 2>&1 &
3.修改后端服务backend-service里的deployment.yaml里的仓库url:10.236.5.12:8812
然后create -f 拉起后端服务后get SVC查看后端服务端口,然后IP:后端服务端口/swagger创建实例,返回dashboardurl访问。