简介: x-pack是elasticsearch的一个收费的扩展包,将权限管理,警告,监视等功能捆绑在一个易于安装的软件包中,x-pack被设计为一个无缝的工作,但是你可以轻松的启用或者关闭一些功能。如果购买商业版需要每年支付十多万。为了使用几个不可或缺功能而花大钱去购买,有点不值得,特别是对于中小型企业来说。所以这里主要通过如何破解来启用x-pack的一些功能(注:本文章仅限于学习,禁止商业用途!)
理论上7.4.0~7.5.0版本都支持该方法,本教程修改版本为7.5;
1、准备所需文件
# 准备工作目录
mkdir -p ~/elasticsearch/{install,src,build}
# 下载并解压安装包
cd ~/elasticsearch/install
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz -O elasticsearch-7.5.0-linux-x86_64.tar.gz
tar zxvf elasticsearch-7.5.0-linux-x86_64.tar.gz
# 下载并解压源码包
cd ~/elasticsearch/src
wget https://github.com/elastic/elasticsearch/archive/v7.5.0.tar.gz -O elasticsearch-v7.5.0.tar.gz
tar zxvf elasticsearch-v7.5.0.tar.gz
2、修改并编译x-pack包
cd ~/elasticsearch/build
# lib module
ln -s ../install/elasticsearch-7.5.0/lib .
ln -s ../install/elasticsearch-7.5.0/modules .
# License.java
find ../src -name "License.java" | xargs -r -I {} cp {} .
sed -i 's#this.type = type;#this.type = "platinum";#g' License.java
sed -i 's#validate();#// validate();#g' License.java
# 编译
javac -cp "`ls lib/elasticsearch-7.5.0.jar`:`ls lib/elasticsearch-x-content-7.5.0.jar`:`ls lib/lucene-core-*.jar`:`ls modules/x-pack-core/x-pack-core-7.5.0.jar`" License.java
# x-pack-core-7.5.0.jar
mkdir src && cd src
find ../../install -name "x-pack-core-7.5.0.jar" | xargs -r -I {} cp {} .
jar xvf x-pack-core-7.5.0.jar
rm -f x-pack-core-7.5.0.jar
\cp -f ../License*.class org/elasticsearch/license/
jar cvf x-pack-core-7.5.0.jar .
使用方式:将编译后的x-pack-core-7.5.0.jar包覆盖到/usr/share/elasticsearch/modules/x-pack-core/目录中即可
3、创建Dockerfile并制作镜像
cd ~/elasticsearch/
# 创建Dockerfile,内容如下:
FROM docker.elastic.co/elasticsearch/elasticsearch:7.5.0
COPY build/src/x-pack-core-7.5.0.jar modules/x-pack-core/x-pack-core-7.5.0.jar
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["eswrapper"]
# 构建并上传到Harbor镜像仓库
docker build -t harbor.example.com/devops/elasticsearch:7.5.0 .
docker push harbor.example.com/devops/elasticsearch:7.5.0