镜像制作
MindIE MS服务端可以采用镜像方式部署在Kubernetes的Deployment管理的容器中,以下操作步骤指导用户如何完成MindIE MS服务端镜像的制作。
不建议用户直接在物理机上部署MindIE MS服务端,通过Kubernetes集群集成部署的方式可实现进程故障恢复,增强可靠性。
操作步骤
以下操作对路径没有要求,用户自行选择路径进行操作,这里以/home/{用户名称}/package路径为例。
- 单击链接获取MindIE软件包(Ascend-mindie_{version}_linux-aarch64.run)并上传至/home/{用户名称}/package目录。
- 使用以下命令进入/home/{用户名称}/package目录。
cd /home/{用户名称}/package
- 使用以下命令增加对MindIE软件包的可执行权限。
chmod +x Ascend-mindie_{version}_linux-aarch64.run
- 使用以下命令解压MindIE软件包到当前路径下的mindie目录,获取mindie-service的run安装包。
./Ascend-mindie_{version}_linux-aarch64.run --extract=mindie
- 使用以下命令安装Ascend-mindie-service_{version}_linux-aarch64.run到当前目录。
./mindie/Ascend-mindie-service_{version}_linux-aarch64.run --install-path=$PWD
- 使用以下命令进入/home/{用户名称}/package目录。
- 配置ms_server.json文件,更多参数解释请参见配置说明 。
使用以下命令打开ms_server.json文件。
vi mindie-service/latest/conf/ms_server.json
配置以下参数:
k8s_apiserver_ip:配置为Kubernetes管理节点的物理机IP地址。
- 使用以下命令拉取ubuntu基础镜像。
docker pull ubuntu:22.04
- 执行以下命令检查ubuntu镜像,查询结果如图1所示。
- 使用MindIE证书管理工具导入准备TLS证书中所有的证书和私钥,并生成KMC加密口令文件。MindIE证书导入工具的详细用法请参见CertTools。
cd mindie-service/latest export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib mkdir -p -m 700 security/msserver mkdir -p -m 700 security/mindieclient mkdir -p -m 700 ./security/kubeclient cp -r ./bin ./security/kubeclient mkdir -p -m 700 ./security/kubeclient/security/ca mkdir -p -m 700 ./security/kubeclient/security/certs mkdir -p -m 700 ./security/kubeclient/security/keys mkdir -p -m 700 ./security/kubeclient/security/pass cp -r ./security/kubeclient/* ./security/msserver cp -r ./security/kubeclient/* ./security/mindieclient # 可选,为保证通信安全,建议选择。导入MS Deployer服务端与MindIE Server通信的证书 python3 ./scripts/config_mindie_server_tls_cert.py ./security/mindieclient import_ca {CA文件路径} python3 ./scripts/config_mindie_server_tls_cert.py ./security/mindieclient import_cert {证书文件路径} {加密私钥文件路径} #必须,导入MS Deployer服务端证书 export KUBE_CA_CERT_PATH=/etc/kubernetes/pki/ca.crt #Kubernetes根CA证书文件路径 cp $KUBE_CA_CERT_PATH ./security/msserver/security/ca/ca.pem chmod 400 ./security/msserver/security/ca/ca.pem mkdir -p msserver_chain cat /home/{用户名称}/cas/msserver/cert.pem /home/{用户名称}/cas/mindiems/cert.pem > ./msserver_chain/cert.pem #/home/{用户名称}/cas/msserver/cert.pem:MindIE MS服务端证书文件路径;/home/{用户名称}/cas/mindiems/cert.pem:中间CA证书文件路径 chmod 400 ./msserver_chain/cert.pem python3 ./scripts/config_mindie_server_tls_cert.py ./security/msserver import_cert ./msserver_chain/cert.pem /home/{用户名称}/cas/msserver/cert.key.pem #/home/{用户名称}/cas/msserver/cert.key.pem:MindIE MS服务端私钥文件路径 rm -rf msserver_chain # 可选,为保证通信安全,建议选择。导入MS Deployer服务端与kube API-Server通信的证书 cp $KUBE_CA_CERT_PATH ./security/kubeclient/security/ca/ca.pem chmod 400 ./security/kubeclient/security/ca/ca.pem mkdir -p kubeclient_chian cat /home/{用户名称}/cas/kubeclient/cert.pem /home/{用户名称}/cas/mindiems/cert.pem > ./kubeclient_chian/cert.pem #/home/{用户名称}/cas/kubeclient/cert.pem:MindIE MS服务端与kube API-Server通信的客户端证书文件路径;/home/{用户名称}/cas/mindiems/cert.pem:中间CA证书文件路径 chmod 400 ./kubeclient_chian/cert.pem python3 ./scripts/config_mindie_server_tls_cert.py ./security/kubeclient import_cert ./kubeclient_chian/cert.pem /home/{用户名称}/cas/kubeclient/cert.key.pem #/home/cas/kubeclient/cert.key.pem:MindIE MS服务端与kube API-Server通信的客户端私钥文件路径 rm -rf kubeclient_chian cd ../..
- 在当前路径下编写Dockerfile文件,用于MindIE MS服务端镜像的制作,样例如下所示(格式必须和样例保持一致)。
以下为制作非root用户权限的MindIE MS服务端镜像,出于安全考虑,不建议用户制作root用户权限的MindIE MS服务端镜像。
FROM ubuntu:22.04 ARG USER_GROUP={用户群组} ARG USER={用户名} ARG UID={用户ID} ARG USER_HOME_DIR=/home/${USER} RUN useradd -d ${USER_HOME_DIR} -u ${UID} -m -s /usr/sbin/nologin ${USER} &&\ usermod root -s /usr/sbin/nologin COPY ./mindie-service /home/${USER}/mindie-service RUN rm -rf /home/${USER}/mindie-service/latest/security ARG MIES_INSTALL_PATH=/home/${USER}/mindie-service/latest ENV LD_LIBRARY_PATH=${MIES_INSTALL_PATH}/lib:$LD_LIBRARY_PATH ENV HSECEASY_PATH=${MIES_INSTALL_PATH}/lib RUN chown -R ${USER}:${USER_GROUP} ${MIES_INSTALL_PATH} USER ${USER}
参数解释:
- USER_GROUP:自定义MindIE MS的专用用户组名称,和USER保持一致;可使用cat /etc/passwd命令查看,回显中第四列即为该参数的值。
- USER:自定义MindIE MS的专用用户名称。
- UID:自定义用户UID,不要和已有用户ID冲突,且不能是rootID或者0;可使用cat /etc/passwd命令查看,回显中第三列即为该参数的值。
- USER_HOME_DIR:用户的home目录。
- chmod权限:500用于可执行文件,400用于so动态库,440用于json配置文件,750用于文件夹权限。
- 修改证书相关文件属主为容器内用户群组,其中UID为上述Dockerfile中配置的UID
chown -R ${UID}:${UID} ./mindie-service/latest/security
- 执行以下命令开始镜像制作,执行完成后回显如图2所示即制作成功。
父主题: 部署Deployer服务端