当前位置: 首页 > news >正文

烟台建站程序品牌网络营销策划书

烟台建站程序,品牌网络营销策划书,高端前端开发,上行2m可以做网站目录 背景 组件原理 测试设计 环境 测试脚本 脚本build为linux可执行文件 镜像构建 Dockerfile Docker build 镜像有效性验证 总结 资料获取方法 背景 我们都知道出于安全性考虑,生产环境的权限一般都是要做最小化控制,尤其是数据库的操作授…

目录

背景

组件原理

测试设计

环境

测试脚本

脚本build为linux可执行文件

镜像构建

Dockerfile

Docker build

镜像有效性验证

总结

资料获取方法


背景

我们都知道出于安全性考虑,生产环境的权限一般都是要做最小化控制,尤其是数据库的操作授权,更是重中之重。

博主所在公司使用的是Kubernetes(k8s)进行的集群容器管理,因为容器发布时的IP都是动态分配的,而出于安全性考虑,数据库的授权又不能全部放开或者针对整个集群的IP,所以有了动态为节点进行数据库授权的需求,所以也就诞生我们今天的主角--数据库授权组件,Mysql-grant。

当然,我们今天介绍的不是这个组件的开发,而是相关的测试过程记录。

组件原理

这个数据库动态授权组件的原理不复杂,每次Kubernetes有节点变化(上线或者下线服务)时,调取Kubernetes相关的API接口获取已配置的服务改变的对应节点的IP,然后对其进行授权或者权限回收操作(IP+user)。相当于在获取到信息之后执行下面的命令:

grant select,insert,update on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;

测试设计

在了解了具体的需求之后,我很快的确定了测试思路。具体如下:

  • 拉起两个mysql数据库,每个库中新建两个DB,每个DB个新建一张表。
  • 写一个无限循环的脚本,每隔两秒访问一次数据库,插入一条数据,查询一次数据。
  • 把脚本打包到多个不同的镜像服务中,push到公司的镜像库中。
  • 然后根据设计的场景使用k8s(Kubernetes)发布、下线服务、做Mysql-grant相关的配置信息改变来完成相关验证;

环境

这次主要用的环境如下:

  • golang开发环境
  • docker环境
  • 镜像运行环境(centos)

测试脚本

考虑到镜像的大小及Dockerfile的复杂性,本次使用了golang来写这个脚本,直接编辑成二进制文件,可以不依赖环境执行,具体的脚本如下,把他保存为mysqlgrant-test.go即可:

package mainimport ("time""database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)func main() {count := 0for{fmt.Println("====================")// fmt.Println(count)fmt.Println(time.Now().Format("2006-01-02 15:04:05"))time.Sleep(time.Second * 2)count++db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/easytest?charset=utf8")checkErr(err)//插入数据stmt, err := db.Prepare("INSERT base_case SET case_name=?,project_id=?,content=?,description=?")checkErr(err)res, err := stmt.Exec(count, "Golang", time.Now(),time.Now())checkErr(err)id, err := res.LastInsertId()checkErr(err)fmt.Println(id)//查询数据rows, err := db.Query("select * from base_case order by case_id desc limit 1")checkErr(err)for rows.Next() {var content stringvar case_id stringvar case_name stringvar project_id stringvar description stringerr = rows.Scan(&description, &case_id, &case_name, &project_id, &content)checkErr(err)fmt.Println(case_id +":"+ case_name +" "+ project_id +" "+ description +" "+ content)// fmt.Println(case_id)// fmt.Println(case_name)// fmt.Println(project_id)// fmt.Println(content)// fmt.Println(description)}db.Close()}
}func checkErr(err error) {if err != nil {panic(err)}
}

脚本build为linux可执行文件

golang脚本的编译命令如下:

go build 脚本名称

但是因为楼主使用的是windows,默认的会直接build成 .exe文件
所以我们要手动设置环境变量,具体命令如下:

SET CGO_ENABLED=0
SET GOOS=linux  
SET GOARCH=amd64
go build mysqlgrant-test.go

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它
上面的命令编译 64 位可执行程序,你当然应该也会使用 386 编译 32 位可执行程序

镜像构建

Dockerfile

上面的脚本准备好了之后,接下来要制作镜像,我们这次试用的是dockerfile,dockerfile内容如下:

FROM    centos:6.7
MAINTAINER     <"bingo@xxxx.com">
RUN mkdir -p /usr/local/user-web/mysqlgrant-test
ADD ./mysqlgrant-test /usr/local/user-web/mysqlgrant-test
#ADD ./conf /usr/local/usr-web/mysqlgrant-test/conf
WORKDIR /usr/local/user-web/mysqlgrant-test
CMD   ./mysqlgrant-test

Docker build

将上面的信息保存到dockerfile文件之后,切换到文件所在目录,执行下面命令来进行镜像的构建:

docker build -t mysqlgrant-test/centos:v1.0  . 

参数说明:

-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

注意后面的.不能遗漏,它表示在当前目录构建的意思

镜像构建成功之后我们可以通过下面的命令来查看:

root@msxxx:~$ docker images
REPOSITORY                   TAG                   IMAGE ID            CREATED             SIZE
mysqlgrant-test/centos       v1.0                  70bf1840fd7c        15 seconds ago      158.5 MB

镜像有效性验证

我们可以使用新的镜像来创建容器:

root@msxxx:~$ docker  run -it mysqlgrant-test/centos:v1.0  /bin/bash --name mysqlgrant

参数说明:
--name mysqlgrant表示为这个容器设置了一个叫mysqlgrant的别名
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。

执行上面的命令后会默认进入mysqlgrant-test目录,即我们上面在dockerfile中设置的WORKDIR。

当然我们也可以直接执行下面的命令来获取容器的标准输出:

docker logs mysqlgrant

这就是脚本输出的内容:

至此,所有的东西准备完毕,只需要根据准备好的测试用例,做相关业务场景的验证就可以了。

总结

在新技术应用的过程中难免会遇到一些问题,比如我们今天的介绍的容器化过程中解决数据库鉴权问题开发的组件。我的感触是,接触新的事物我们能学习到更多的东西。此前学习的docker、golang等等,都没有实战的基础,这一次虽然也只是简单的实践,但是还是有一种豁然开朗的感觉。


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

http://www.15wanjia.com/news/55771.html

相关文章:

  • 哪个网站做电子请帖好进入百度app查看
  • oppo应用市场宁波seo网络推广软件系统
  • 图片网站怎么做排名网站设计费用
  • ai制作网页便宜的seo官网优化
  • 网站流量多少做网盟营销的概念是什么
  • 网站建设技术参数seo网站首页推广
  • 网做英文网站英文网站设计公司
  • 用网站做数据库济源新站seo关键词排名推广
  • html5电影网站如何做怎么制作网站平台
  • 网站底部导航网站优化包括
  • 网站建设要哪些人头条热点新闻
  • 电商网站开发前景佛山网站建设方案服务
  • 电影视频网站建设费用宁波seo资源
  • 17一起做网店网站做销售最挣钱的10个行业
  • wordpress滑动菜单seo百度关键字优化
  • 国内美妆博主从哪个网站开始做全国疫情排名一览表
  • 湛江市seo网站设计报价最有创意的广告语30条
  • 如何能把网站做的更大市场营销证书含金量
  • 电力建设集团网站企业网站建设服务
  • 建站知识郑州企业网站优化排名
  • 做教育培训网站需要资质么镇江网站建设
  • 网站系统建设招标公告百度域名查询官网
  • 东莞市最新疫情最新消息seo搜索引擎优化试题
  • 网站开发需要的知识广告发布平台app
  • 重庆制作网站优化网站
  • 做外链网站有哪些网站服务器是什么意思
  • 武汉北京网站建设谁有推荐的网址
  • 新手学做网站佣金高的推广平台
  • 做网站销售 优帮云廊坊快速优化排名
  • 如何在自己的网站上做歌单seo排名软件价格