文章目录

rstrt 部署文档

开发环境

开发环境采用docker-compose 对服务进行编排(网络使用host模式),测试环境使用k8s 对服务进行编排实现水平扩容
jenkins 部署 集成maven SonarQube
1.下载安装包
wget http://mirrors.jenkins.io/war/latest/jenkins.war -P /data/src/
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz -P /data/src/

2.解压jenkins和maven到 /data/app 目录下

3. sh /data/bin/start-jenkins.sh  运行jenkins启动脚本
cat /data/bin/start-jenkins.sh
    #!/bin/bash
    export JENKINS_HOME=/data/jenkins_home/  //设定jenkinhome 
    export MAVEN_HOME=/data/app/maven
    export PATH=$PATH:$MAVEN_HOME/bin  //传入maven 环境变量
    nohup java -jar /data/app/jenkins/jenkins.war --httpPort=58080 >> /data/logs/jenkins.log &  //指定启动参数 日志统一输出到jenkins.log
    // 默认数据存放在JENKINS_HOME下 浏览器打开 <ip>:<port> 按照提示安装 
3.SonarQube 部署
    git clone https://github.com/Hello-Nemo/docker-SonarQube.git /data/app/SonarQube
    cd /data/app/SonarQube  && docker-compose up -d  // 进入到SonarQube 并使用docker-compose 运行SonarQube  账号密码配置对应在docker-compose.yml 里面 
4.maven 配置
1./data/app/maven/conf/settings.xml  maven配置文件中添加如下配置
   <profile>
              <id>sonar</id>
              <activation>
               <activeByDefault>true</activeByDefault>
              </activation>
              <properties>
               <sonar.jdbc.url>jdbc:postgresql://192.168.110.36:5432/sonar?useUnicode=true&amp;characterEncoding=utf8</sonar.jdbc.url>
               <sonar.jdbc.username>sonar</sonar.jdbc.username>
               <sonar.jdbc.password>sonar</sonar.jdbc.password>
               <sonar.host.url>http://192.168.110.36:9001</sonar.host.url>
              </properties>
       </profile>

2.Jenkins编译项目时添加参数mvn sonar:sonar  执行完编译后会推送数据到sonar
3.访问sonar url 查看项目情况 http://192.168.110.36:9001

jenkin 设置说明
1.git配置拉去dev 分支
2.设置poll scm  H/2 * * * *  每两分钟拉去一次
3.新增服务
    Jenkins 新建job 更改 git地址 分支为dev
    jenkins 服务器新建文件夹 mkdir /data/jenkins_home/docker/{services} services对应服务名 jenkins的任务名
    开发服务 vim  /data/app/docker-compose-app.yml  新增{services} 更改service名字 和服务映射的端口
      {services}:
        image: harbor.youngblog.cc/rtst-office/{services}:5
        ports:
          - "17461:17461" 
        environment:
          JAVA_OPTS: "-Xms512m -Xmx1024m"
        network_mode: host
4.执行jenkins 构建 第一次可能不会成功 可以再构建一次
elk部署
cd /data/app/docker-elk  
vim elasticsearch/config/elasticsearch.yml //es 配置文件按照自己的实际情况修改
docker-compose up -d //启动elk 

cat docker-compose.yml  //docker-compose 文件解释
    services:   //固定写法 下面包含服务的编排信息
      elasticsearch:  //elasticsearch服务
        build:  //获取镜像方式为 通过dockerfile build 也直接直接写镜像
          context: elasticsearch/
          args:
            ELK_VERSION: $ELK_VERSION
        volumes: //docker 挂载 卷
          - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
        ports: //docker隐射端口
          - "9200:9200"
          - "9300:9300"
        environment: //java_ops 设置
          ES_JAVA_OPTS: "-Xmx256m -Xms256m"
        network_mode: "host" //docker网络模式
        
      ...... //其他服务同上
fastdfs 部署
1.cd /data/app/fastdfs/  && docker pull qbanxiaoli/fastdfs
  docker-compose up -d  //部署
2.测试 
    docker exec -it fastdfs bash  //进入容器
    echo "Hello FastDFS!">1.html
    fdfs_test /etc/fdfs/client.conf upload 1.html
    获取到返回数值
3.docker-compose 文件解释
version: '3.0'
services:
  fastdfs:
    build: .
    image: qbanxiaoli/fastdfs
    restart: always
    container_name: fastdfs
    ports: //暴露端口
      - "80:80"
      - "22122:22122"
      - "23000:23000"
    environment:
      # nginx服务端口,默认8080端口,可修改
      - WEB_PORT=80
      # tracker_server服务端口,默认22122端口,可修改
      - FDFS_PORT=22122
      # fastdht服务端口,默认11411端口,可修改
      - FDHT_PORT=11411
      # docker所在主机的IP地址,默认使用eth0网卡的地址
      - IP=192.168.110.232
    volumes:
      # 将本地目录映射到docker容器内的fastdfs数据存储目录,将fastdfs文件存储到主机上,以免每次重建docker容器,之前存储的文件就丢失了。
      - ./data:/var/local
    # 使docker具有root权限以读写主机上的目录
    privileged: true
    # 网络模式为host,可不暴露端口,即直接使用主机的网络接口
    network_mode: "host"

kafka 部署
cd /data/app/kafka && docker-compose pull //进入应用目录并下载镜像

docker-compose up -d
docker-compose 常用命令
说明: 
xxx.yml 为docker-compose 的编排文件  默认为docker-compose.yml 当有多个时 使用-f 指定配置文件
{service} 为服务名 如gateway-service,notice-center等 可以对单个service进行操作  不接service 则是所有

docker-compose -f   xxx.yml pull  // 下载compose文件中的docker镜像 
docker-compose -f   xxx.yml up  // 运行一组docker 服务 前台运行 ctrl + c 停止 
docker-compose -f   xxx.yml up -d  // 运行一组docker 服务 后台运行
docker-compose -f   xxx.yml down  // 彻底删除一组docker服务
docker-compose -f   xxx.yml ps   //查看改组服务的进程 同docker ps
docker-compose -f   xxx.yml logs -f {service}  //查看日志 接service 则查看该服务的日志  不接参数 则查看所有  
docker-compose -f   xxx.yml logs --tail=300 -f {service}  //同上  从最后300行开始查看
docker-compose -f   xxx.yml stop/restart/start  {service}  //停止 重启 启动 某个服务 不接参数则代表所有
docker-compose -f   xxx.yml up -d --force-recreate --no-deps {service} //更新一个服务 重建 并不对依赖镜像进行操作

测试环境

k8s 环境部署
k8s 采用ansible 部署  cd /etc/ansible
vim .hosts //更具自己情况修改对应配置
ansible-playbook  90.setup.yml  执行集群安装 也可分步执行 01-06.*yml
应用转docker
参考:https://github.com/kubernetes/kompose.git
kompose convert -f docker-compose.yml 将docker-compose.yml 转换成  k8s 部署文件
harbor仓库
参考:https://github.com/goharbor/harbor.git
下载离线包 更改harbor.cfg 后直接执行 install.sh 
mysql部署
参考:https://blog.youngblog.cc/db/mysql1/
配置文件未做优化 只更改打印慢日志
long_query_time = 1
slow_query_log = 1
slow_query_log_file=/data/mysql/logs/slow-log/slow_log
mongodb部署
mongo 二进制文件直接运行 配置 文件
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.12.tgz -P /data/src

cat /data/app/mongodb/mongod.conf 
systemLog:
   destination: file
   path: "/data/app/mongodb/mongod.log"
   logAppend: true
storage:
   dbPath: /data/app/mongodb/db
   journal:
      enabled: true
   directoryPerDB: true
processManagement:
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27017
#replication:
#   replSetName: rs01
security:
   #authorization: disabled
   authorization: enabled 
k8s 常用命令
备注: 所有命令默认获取namespace 为default 下面的资源 可以试用参数 --namespace=kube-system 获取k8s 的系统资源  如:  kubectl get --namespace=kube-system service
 所有命令都加入自动补全  按两次tab键 即可

kubectl get pod  //获取pod 
kubectl get service   //获取service
kubectl get node //获取k8s 集群的node 
kubectl get deployment //获取部署任务
kubectl logs --tail=300 -f config-server-79b476995b-j7849  //查看pod 日志 --tail=300 查看最后300行 -f 持续输出 
kubectl describe pod redis-7789ddc446-2m88 //查看redis pod 的详细信息 如果改pod 不能正常创建 该命令非常有用
kubectl cluster-info //获取集群信息
kubectl create -f  dir/file  //根据文件创建 对应的服务 可以接文件创建文件编写的服务  接文件夹则创建改文件夹下所有的服务
kubectl delete -f   dir/file //删除 对应服务
kubectl run test --rm -it --image=alpine /bin/sh  //创建一个容器 并进入容器 sh 
//创建k8s 的一个字典  此处创建为登录harbor的字典 用于拉去私有仓库的镜像
kubectl create secret docker-registry regcred --docker-server=harbor.youngblog.cc --docker-username=admin --docker-password=Harbor12345 --docker-email=younglinuxer@gmail.com
新增应用
1.jenkins 新增任务 更改git 仓库 分支等 job_name == service_name 
2.测试服务器(192.168.110.232)新增对应服务的文件 
    cd  /data/app/kubernetes/deployment 
    cp base_service-deployment.yaml  {services}-deployment.yaml 
    vim {services}-deployment.yaml  将base_service 改为{services} 端口对应servics 的端口
3.jenkins 服务器新建文件夹 mkdir /data/jenkins_home/docker/{services} services对应服务名 jenkins的任务名
3.jenkins 执行构建 构建成功后 kubectl get pod 查看是否有该服务