新郑网站建设公司,做网站没有活,网站编辑容易做吗,关于家乡的网页制作教程在K8s平台部署项目流程 在K8s平台部署Java网站项目 制作镜像流程 第一步#xff1a;制作镜像 使用镜像仓库#xff08;私有仓库、公共仓库#xff09;#xff1a;
1、配置可信任#xff08;如果仓库是HTTPS访问不用配置#xff09;
# vi /etc/docker/daemon.json
{
制作镜像 使用镜像仓库私有仓库、公共仓库
1、配置可信任如果仓库是HTTPS访问不用配置
# vi /etc/docker/daemon.json
{
insecure-registries: [192.168.31.90]
}
2、 将镜像仓库认证凭据保存在K8s Secret中
kubectl create secret docker-registry registry-auth \
--docker-usernameadmin \
--docker-passwordHarbor12345 \
--docker-server192.168.31.90
3、在yaml中使用这个认证凭据
imagePullSecrets:
- name: registry-auth 第二步使用控制器部署镜像
模板Pod主要配置启动容器属性 • 变量 • 资源配额 • 健康检查 • 卷挂载点 案例第三步部署数据库
1、使用deployment部署一个mysql实例 service暴露访kubectl apply -f mysql.yaml
kubectl get pod,svc 2、测试mysql实例是否可以访问kubectl run mysql-client --rm -it --imagemysql:5.7.30 – bash
/# mysql -h10.106.166.31 -uroot -p123456 #10.106.166.31为mysql ClusterIP
mysql show databases; 3、导入项目sql文件kubectl cp db/tables_ly_tomcat.sql mysql-client:/ # 将sql文件拷贝到mysql客户端容器中
/# mysql -h10.106.166.31 -uroot -p123456
mysql create database test;
mysql use test;
mysql source /tables_ly_tomcat.sql;
mysql show tables; # 只有一个user表 第四步对外暴露应用 第五步增加公网负载均衡器 Jenkins自动化发布项目CI/CD
发布流程设计 使用 Gitlab 作为代码仓库 使用 Harbor 作为镜像仓库Harbor 镜像仓库 项目地址 https://github.com/goharbor/harbor 部署步骤 # tar zxvf harbor-offline-installer-v2.0.0.tgz
# cd harbor
# cp harbor.yml.tmpl harbor.yml# vi harbor.ymlhostname: 192.168.31.90
https: # 先注释https相关配置
harbor_admin_password: Harbor12345# ./prepare
# ./install.sh
# docker-compose ps Gitlab代码仓库 Jenkins发布系统部署 Jenkins是一款开源 CICD 系统用于自动化各种任务包括构建、测试和部署。 Jenkins官方提供了镜像 Docker使用Deployment来部署这个镜像会暴露两个端口 8080 Web访问端口 50000 Slave通信端口容器启动后Jenkins数据存储在/var/jenkins_home目录所以需要将该目录使用PV持久化存储。 先安装后面所需的插件
Jenkins下载插件默认服务器在国外会比较慢建议修改国内源# 进入到nfs共享目录 cd /ifs/kubernetes/ops-jenkins-pvc-xxx
sed -i s/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g default.json \
sed -i s/http:\/\/www.google.com/https:\/\/www.baidu.com/g default.json # 重建Jenkins http://NodeIP:30008/restart 管理Jenkins-系统配置--管理插件--分别搜索Git Parameter/Git/Pipeline/kubernetes/Config File Provider选中点击安装。• Git拉取代码 • Git Parameter Git参数化构建 • Pipeline流水线 • kubernetes连接Kubernetes动态创建Slave代理 • Config File Provider 存储配置文件 • Extended Choice Parameter扩展选择框参数支持多选 Jenkins主从架构 当触发Jenkins任务时 Jenkins会调用Kubernetes API创建Slave Pod Pod启动后会连接Jenkins接受任务并处理。Kubernetes插件配置 Kubernetes插件 用于Jenkins在Kubernetes集群中运行动态代理 插件介绍 https://github.com/jenkinsci/kubernetes-plugin 配置插件 管理Jenkins-管理Nodes和云-管理云-添加Kubernetes 自定义Jenkins-Slave镜像
构建Slave镜像Dockerfile结合项目环境 FROM centos:7
LABEL maintainer lizhenliang
RUN yum install -y java-1.8.0-openjdk maven git libtool-ltdl-devel \
yum clean all \
rm -rf /var/cache/yum/* \
mkdir -p /usr/share/jenkins
COPY slave.jar /usr/share/jenkins/slave.jar
COPY jenkins-slave /usr/bin/jenkins-slave
COPY settings.xml /etc/maven/settings.xml
RUN chmod x /usr/bin/jenkins-slave
COPY kubectl /usr/bin/
ENTRYPOINT [jenkins-slave] 测试主从架构是否正常 Jenkins Pipeline流水线
Jenkins Pipeline是一套运行工作流框架将原本独立运行单个或者多个节点的任务链接起来实现单个任务难以完成的复杂流程编排和可视化。• Jenkins Pipeline是一套插件支持在Jenkins中实现持续集成和持续交付 • Pipeline通过特定语法对简单到复杂的传输管道进行建模 • Jenkins Pipeline的定义被写入一个文本文件称为Jenkinsfile。 Jenkins Pipeline 语法 Stages 是 Pipeline 中最主要的组成部分 Jenkins 将会按照 Stages 中描述的顺序从上往下的执行。• Stage阶段一个 Pipeline 可以划分为若干个 Stage每个 Stage 代表一组操作 比如 Build、 Test、 Deploy • Steps步骤 Steps 是最基本的操作单元可以是打印一句话也可以是构建一个 Docker 镜像由各类 Jenkins 插件提供比如命令 sh ‘mvn就相当于我们平时 shell 终端中执行 mvn命令一样。 Jenkins 流水线自动发布项目
思路-项目部署流程 在实际工作中会维护多个项目如果每个服务都创建一个item势必给运维维护成本增加很大 因此需要编写一个通用Pipeline脚本将这些项目部署差异化部分使用Jenkins参数化人工交互确认发布的分支、副本数、命名空间等。部署到K8s平台-思路 将部署项目yaml文件提交到项目代码仓库里在Slave容器里使用kubectl apply部署。 由于kubectl使用kubeconfig配置文件连接k8s集群还需要通过Config File Provider插件将kubeconfig配置文件存储到Jenkins然后再挂载到Slave容器中 这样就有权限部署了kubectl apply deploy.yaml --kubeconfigconfig 注为提高安全性 kubeconfig文件应分配权限除了上述方式还可以使用Kubernetes Continuous Deploy插件 将资源配置YAML 部署到Kubernetes这种不是很灵活性流水线脚本与源代码一起版本管理
Jenkinsfile文件建议与源代码一起版本管理实现流水线即代码Pipeline as Code。这样做的好处• 自动为所有分支创建流水线脚本• 方便流水线代码复查、追踪、迭代• 可被项目成员查看和编辑Jenkins从Git仓库中读取Jenkinsfile k8s容器云平台架构