NacOS2.2.0源码编译,打包成Docker镜像,在kubernets进行部署
【NacOS2.2.0源码编译,打包成Docker镜像,在kubernets进行部署】
目录
【NacOS2.2.0源码编译,打包成Docker镜像,在kubernets进行部署】
本文主要是针对基于RancherServer搭建的Kubernets集群中,实现将Nacos2.2.0以源码编译后打包成Docker镜像,并自动上传至私有Harbor服务器,最后部署至RancherServer的Kubernets集群中。
- 如果要基于RancherServer搭建Kubernets集群请参照【Rancher Server + Kubernets搭建云原生集群平台】
- 如果要搭建Docker私有仓库Harbor服务请参照 【Docker私有仓库Harbor服务搭建】
【Rancher官方文档】
【Rancher Server + Kubernets搭建云原生集群平台】
【Docker私有仓库Harbor服务搭建】
一、环境准备
1、软件准备
| 序号 | 环境名称 | 说明 | 版本号 |
|---|---|---|---|
| 1 | Rancher Server | k8s运维平台 | v2.5.7 |
| 2 | Harbor | Docker私有仓库Harbor服务搭建 | v2.3.5-239680cd |
2、环境规划
| 序号 | IP | HostName | 操作系统 | K8s角色 | 说明 |
|---|---|---|---|---|---|
| 1 | 192.168.255.140 | harbor | Anolis OS 8.9 x86 64位 | Rancher服务 | Docker私有仓库Harbor服务 |
| 2 | 192.168.255.141 | rancher | Anolis OS 8.9 x86 64位 | Rancher服务 | Kubernetes 管理平台 |
| 3 | 192.168.255.142 | master | Anolis OS 8.9 x86 64位 | 控制节点 | Kubernetes Master |
| 4 | 192.168.255.143 | worker01 | Anolis OS 8.9 x86 64位 | 工作节点 | Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器 |
| 5 | 192.168.255.144 | worker02 | Anolis OS 8.9 x86 64位 | 工作节点 | Kubernetes Worker |
二、Nacos源码编译
1、下载nacos2.20源码
https://gitee.com/mirrors/Nacos/tags?page=2

2、上传至编译服务器&解压
本例中上传至Ubuntu /opt/nacos
cd /opt/nacos
unzip ./Nacos-2.2.0.zip
mv ./Nacos-2.2.0 ./nacos
4、编译
root@daima:/opt/nacos/nacos# mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Drat.skip=true -Dcheckstyle.skip=true clean install -U

编译完成的二进制文件输出到nacos/distribution目录下了,在本文中是输出到了/opt/nacos/nacos/distribution

3、修改数据库配置
nacos\distribution\conf\application.properties
root@daima:/opt/nacos/nacos# cd ./distribution/conf
root@daima:/opt/nacos/resources# vim application.properties
修改后的application.properties配置
配置文件中的环境变量,在k8s部署时通过环境变量来配置这些参数:
- NACOS_APPLICATION_PORT:nacos服务监听端口,不指定默认值为8848
- DB_NUM:数据库数量,不指定默认值为1
- DB_URL:数据库URL 【必填】
- DB_USER:数据库账号 【必填】
- DB_PASSWORD:数据库密码 【必填】
# spring
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=mysql
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${DB_NUM:1}
db.url.0=${DB_URL}
db.user.0=${DB_USER}
db.password.0=${DB_PASSWORD}
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
三、制作镜像
1、下载镜像
参考地址:https://blog.csdn.net/qq_36805343/article/details/129369976
下载Nacos-Docker
官方Nacos Docker 快速开始:https://nacos.io/zh-cn/docs/quick-start-docker.html
Nacos Docker Github官方说明:https://github.com/nacos-group/nacos-docker/blob/master/README_ZH.md
下载对应自己的nacos版本,博主为 nacos version 2.2.0
2.2.0版本下载地址:https://github.com/nacos-group/nacos-docker/archive/refs/tags/v2.2.0.tar.gz
2、解压
上传至服务器/opt/nacos/目录下

root@daima:/opt/nacos# tar -xzvf ./v2.2.0.tar.gz
root@daima:/opt/nacos# cd /opt/nacos/nacos-docker-2.2.0/build
# 将换了nacos源码编译打包(nacos/distribution/target/nacos-server-2.2.0.tar.gz)后的.tar.gz结尾的包,放到nacos-docker-2.2.0的build目录下。
root@daima:/opt/nacos/nacos-docker-2.2.0/build# cp /opt/nacos/nacos/distribution/target/nacos-server-2.2.0.tar.gz ./
3、修改Dockfile

root@daima:/opt/nacos/nacos-docker-2.2.0/build# vim ./Dockerfile
#FROM centos:7.9.2009
FROM registry.cn-hangzhou.aliyuncs.com/glg/sky-agent:8.8.0
MAINTAINER tyzwkj "duyanjun@tyzwkj.cn"
# set environment
ENV MODE="standalone" \
PREFER_HOST_MODE="ip"\
BASE_DIR="/home/nacos" \
CLASSPATH=".:/home/nacos/conf:$CLASSPATH" \
CLUSTER_CONF="/home/nacos/conf/cluster.conf" \
FUNCTION_MODE="all" \
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk" \
NACOS_USER="nacos" \
JAVA="/usr/lib/jvm/java-1.8.0-openjdk/bin/java" \
JVM_XMS="1g" \
JVM_XMX="1g" \
JVM_XMN="512m" \
JVM_MS="128m" \
JVM_MMS="320m" \
NACOS_DEBUG="n" \
TOMCAT_ACCESSLOG_ENABLED="false" \
TIME_ZONE="Asia/Shanghai"
ARG NACOS_VERSION=2.2.0
ARG HOT_FIX_FLAG=""
# 定义一个环境变量,用于存储数据库URL
ARG DB_NUM=1
ENV DB_NUM=$DB_NUM
ARG DB_URL="jdbc:mysql://default-host:3306/nacos"
ENV DB_URL=$DB_URL
ARG DB_USER="root"
ENV DB_USER=$DB_USER
ARG DB_PASSWORD="123456"
ENV DB_PASSWORD=$DB_PASSWORD
WORKDIR $BASE_DIR
RUN set -x \
&& yum update -y \
&& yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget iputils nc vim libcurl
#此处为从github下载nacos-server二进制包,我们自己编译好了,需要注释掉此处
#RUN wget https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}${HOT_FIX_FLAG}/nacos-server-${NACOS_VERSION}.tar.gz -P /home
# 从本地复制到镜像中
COPY nacos-server-${NACOS_VERSION}.tar.gz /home
RUN tar -xzvf /home/nacos-server-${NACOS_VERSION}.tar.gz -C /home \
&& rm -rf /home/nacos-server-${NACOS_VERSION}.tar.gz /home/nacos/bin/* /home/nacos/conf/*.properties /home/nacos/conf/*.example /home/nacos/conf/nacos-mysql.sql
RUN yum autoremove -y wget \
&& ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone \
&& yum clean all
ADD bin/docker-startup.sh bin/docker-startup.sh
ADD conf/application.properties conf/application.properties
# set startup log dir
RUN mkdir -p logs \
&& cd logs \
&& touch start.out \
&& ln -sf /dev/stdout start.out \
&& ln -sf /dev/stderr start.out
RUN chmod +x bin/docker-startup.sh
# 替换配置中的环境变量
RUN sed -i "s|\${DB_URL}|${DB_URL}|g" /home/nacos/conf/application.properties
EXPOSE 8848
EXPOSE 9848
EXPOSE 9849
ENTRYPOINT ["bin/docker-startup.sh"]
4、打包镜像
root@daima:/opt/nacos/nacos-docker-2.2.0/build# docker build -t jvs-nacos:2.2.0 .
四、上传Harbor私服
Harbor地址: http://192.168.255.140
1、上传Harbor
重点:在Kubernets集群所有节点上都要执行,否则会拉取失败
上传前需先修改docker.service中的配置,
- 1、需配置私有Harbor服务器的地址
–insecure-registry 192.168.255.140- 2、启动本地docker的远程服务端口
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
[root@daima ~]# vim /lib/systemd/system/docker.service
# 修改ExecStart参数,在参数中添加如下配置
#ExecStart=/usr/bin/dockerd --insecure-registry 192.168.255.140 -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
# 重新加载系统服务配置并启动Docker服务
[root@daima ~]# systemctl daemon-reload
[root@daima ~]# systemctl start docker
2、启动验证
root@daima:/opt/nacos/nacos-docker-2.2.0/build# docker run --name jvs-nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 -d jvs-nacos:2.2.0
访问http://ip:8848/nacos,用户名密码都是nacos,登录成功即验证
3、推送镜像
root@daima:/opt/nacos/nacos-docker-2.2.0/build# docker login 192.168.255.140
root@daima:/opt/nacos/nacos-docker-2.2.0/build# docker tag jvs-nacos:2.2.0 192.168.255.140/ybt/jvs-nacos:2.2.0
root@daima:/opt/nacos/nacos-docker-2.2.0/build# docker push 192.168.255.140/ybt/jvs-nacos:2.2.0


五、部署至Kubernets
1、登录Rancher Server管理画面

2、部署nacos服务
重点:环境变量配置
环境变量来配置参数:
- DB_URL:数据库URL 【必填】
- DB_USER:数据库账号 【必填】
- DB_PASSWORD:数据库密码 【必填】

3、验证nacos服务
1)、jvs-nac启动成功后,点击服务列中的端口


2)、在浏览器地址(http://192.168.255.143:30000/)添加nacos,完整的路径为http://192.168.255.143:30000/nacos

结束,以上就是通过RancherServer部署NacOS2.2.0的全部内容。
更多推荐

所有评论(0)