k8s dubbo微服务之maven配置
-
基于RBAC认证的一个GUI资源管理插件
-
两个常用版本:v1.8.3和v1.10.1
-
K8S如何基于RBAC进行鉴权
-
用户账户
-
服务账户
-
角色
-
权限
基于角色进行权限管理
-
查看Jenkins
通过web页面的命令行工具进行操作,相当于就是进入jenkins的docker容器,执行docker ps看看什么效果?
为什么会看到这些启动的容器呢?原因就在于我们在Jenkins内部署了一个docker client,而docker server是在宿主机上的,docker本身是一个C/S的架构,因此,我们可以执行docker命令,获取宿主机的容器状态。
因为我们在构建Dockerfile的时候,将docker.conf也添加了,因此,我们也可以直接登录harbor仓库。
我们在Jenkins容器里执行docker ps -a
会发生什么吗?
可以看到,docker命令执行成功了,这是为什么呢?
因为我们在编写Dockerfile的时候,把docker client也添加进去了,而我们的docker是典型的C/S架构,而docker server是安装到宿主机上的,因此,我们执行docker相关命令,就会将宿主机上的对应的结果进行返回。
下载maven
下载地址:[maven-3.6.1][https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz],下载到/opt/src目录
[root@hdss7-200 jenkins_home]# wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
创建目录
[root@hdss7-200 jenkins_home]# mkdir /data/nfs-volume/jenkins_home/maven-3-6-1-8u232
[root@hdss7-200 src]# tar xfv apache-maven-3.6.1-bin.tar.gz -C /data/nfs-volume/jenkins_home/maven-3-6-1-8u232/
[root@hdss7-200 src]# cd /data/nfs-volume/jenkins_home/maven-3-6-1-8u232
[root@hdss7-200 maven-3-6-1-8u232]# maven-3-6-1-8u232
[root@hdss7-200 maven-3-6-1-8u232]# mv ../apache-maven-3.6.1/* .
[root@hdss7-200 maven-3-6-1-8u232]# vim conf/settings.xml
修改maven的settings文件中的镜像源
<mirrors>
<!-- 添加到下面-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!-- 添加到上面-->
</mirrors>
可以看到这里可以配置jave_home的环境变量,如果maven不支持jdk版本,可以安装对应的jdk版本,并在这里设置环境变量。
[root@hdss7-200 maven-3-6-1-8u232]# cd bin/
[root@hdss7-200 bin]# vim mvn
# -----------------------------------------------------------------------------
# Apache Maven Startup Script
#
# Environment Variable Prerequisites
#
# JAVA_HOME Must point at your Java Development Kit installation.
# MAVEN_OPTS (Optional) Java runtime options used when Maven is executed.
# MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files.
# -----------------------------------------------------------------------------
因为我们在编写Dockerfile的时候,也把/data/nfs-volume目录进行了挂载,因此我们可以通过Jenkins的web页面,通过命令在Jenkins容器中查看宿主机目录的文件信息。
开始构建镜像
[root@hdss7-200 maven-3-6-1-8u232]# cd /data/nfs-volume/jenkins_home/
[root@hdss7-200 maven-3-6-1-8u232]# docker pull docker.io/stanleyws/jre8:8u112
[root@hdss7-200 maven-3-6-1-8u232]# docker images | grep jre8
stanleyws/jre8 8u112 fa3a085d6ef1 3 years ago 363MB
[root@hdss7-200 maven-3-6-1-8u232]# docker tag fa3a085d6ef1 harbor.od.com/public/jre:8u112
[root@hdss7-200 maven-3-6-1-8u232]# docker push harbor.od.com/public/jre:8u112
[root@hdss7-200 maven-3-6-1-8u232]# cd /data/dockerfile/
[root@hdss7-200 dockerfile]# mkdir jre
[root@hdss7-200 dockerfile]# cd jre/
[root@hdss7-200 dockerfile]# vim Dockerfile
FROM harbor.od.com/public/jre:8u112
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
echo 'Asia/Shanghai' >/etc/timezone
ADD config.yml /opt/prom/config.yml
ADD jmx_javaagent-0.3.1.jar /opt/prom/
WORKDIR /opt/project_dir
ADD entrypoint.sh /entrypoint.sh
CMD ["/entrypoint.sh"]
FROM harbor.od.com/public/jre:8u112,这是一个底包,提供maven运行时需要的环境和工具,是业内最常用的做法,因为Java程序经过编译之后变成了二进制文件,只需要给这些二进制文件提供运行时所需要的环境即可,而不用再去安装jdk环境。
ADD jmx_javaagent-0.3.1.jar /opt/prom/,这是prometheus通过jar包收集所需信息
ADD entrypoint.sh /entrypoint.sh,这是docker镜像运行时所需脚本
其他配置信息
[root@hdss7-200 dockerfile]# wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar -O jmx_javaagent-0.3.1.jar
[root@hdss7-200 dockerfile]# vim entrypoint.sh
#!/bin/sh
M_OPTS="-Duser.timezone=Asia/Shanghai -javaagent:/opt/prom/jmx_javaagent-0.3.1.jar=$(hostname -i):${M_PORT:-"12346"}:/opt/prom/config.yml"
C_OPTS=${C_OPTS}
JAR_BALL=${JAR_BALL}
exec java -jar ${M_OPTS} ${C_OPTS} ${JAR_BALL}
${M_PORT:-"12346"},如果不指定端口则用默认的12346端口
${JAR_BALL}这是把运行时的JAR_BALL赋值给shell脚本的JAR_BALL变量里
[root@hdss7-200 dockerfile]# chmod +x entrypoint.sh
[root@hdss7-200 dockerfile]# vim config.yml
---
rules:
- pattern: '.*'
创建base公有仓库
开始构建
[root@hdss7-200 dockerfile]# docker build . -t harbor.od.com/base/jre8:8u112
[root@hdss7-200 dockerfile]# docker push !$
然后创建流水线
这里是保留期限和副本数