HAP Microservices
Download Images
In a Kubernetes cluster environment, this operation needs to be performed separately on the server where each microservice node is located.
- Servers with Internet Access
- Servers without Internet Access
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hap:7.2.4
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-doc:2.0.0
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node1018-python36
Offline image download link, upload to deployment server after download:
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-hap-linux-amd64-7.2.4.tar.gz
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-doc-linux-amd64-2.0.0.tar.gz
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-command-linux-amd64-node1018-python36.tar.gz
Unzip offline images on the server:
gunzip -d mingdaoyun-hap-linux-amd64-7.2.4.tar.gz
gunzip -d mingdaoyun-doc-linux-amd64-2.0.0.tar.gz
gunzip -d mingdaoyun-command-linux-amd64-node1018-python36.tar.gz
Import the unzipped offline images:
ctr -n k8s.io image import mingdaoyun-hap-linux-amd64-7.2.4.tar
ctr -n k8s.io image import mingdaoyun-doc-linux-amd64-2.0.0.tar
ctr -n k8s.io image import mingdaoyun-command-linux-amd64-node1018-python36.tar
Deployment Manager
By default, operate only on the first Kubernetes Master server.
-
Download the manager
- Servers with Internet Access
- Servers without Internet Access
wget https://pdpublic.mingdao.com/private-deployment/7.2.4/mingdaoyun_private_deployment_captain_linux_amd64.tar.gz# Manager download link, upload to deployment server after downloadhttps://pdpublic.mingdao.com/private-deployment/7.2.4/mingdaoyun_private_deployment_captain_linux_amd64.tar.gz -
Create a directory and extract the manager into the newly created directory
mkdir /usr/local/MDPrivateDeployment/tar -zxvf mingdaoyun_private_deployment_captain_linux_amd64.tar.gz -C /usr/local/MDPrivateDeployment/ -
Set up the systemd unit file for the manager service required by the HAP Manager
cat > /etc/systemd/system/hap-manager.service <<'EOF'[Unit]Description=HAP ManagerAfter=network-online.targetWants=network-online.target[Service]Type=oneshotWorkingDirectory=/usr/local/MDPrivateDeploymentExecStart=/usr/bin/bash ./service.sh startRemainAfterExit=yes[Install]WantedBy=multi-user.targetEOF -
Comment out the
docker-related check items in the manager scriptsed -ri '/^function check\(\)/,/^}/{s/^([[:space:]]*)(checkExecList|checkDockerRuntime|checkDockerVersion)/\1# \2/}' /usr/local/MDPrivateDeployment/service.sh -
Run the manager startup check
bash /usr/local/MDPrivateDeployment/service.sh check -
Start the manager service
systemctl daemon-reloadsystemctl start hap-managersystemctl enable hap-manager
Deploy Microservices
By default, operate only on the first Kubernetes Master server.
-
Generate the initial configuration file
cd /usr/local/MDPrivateDeployment/bash ./service.sh install https://hap.domain.comecho -n 'StageStart' > installer.stage -
Configure the ConfigMap information in the
config.yamlfileconfig.yamlis located by default at/data/mingdao/script/kubernetes
Execute
vim config.yamlto edit the file and update the variable values to match your deployment environment:apiVersion: v1kind: ConfigMapmetadata:name: env-listnamespace: defaultdata:ENV_APP_VERSION: "7.2.4"ENV_MYSQL_HOST: "192.168.10.2"ENV_MYSQL_PORT: "3306"ENV_MYSQL_USERNAME: "root"ENV_MYSQL_PASSWORD: "123456"ENV_MONGODB_URI: "mongodb://hap:123456@192.168.10.4:27017,192.168.10.5:27017,192.168.10.6:27017"ENV_MONGODB_OPTIONS: "?maxIdleTimeMS=600000&maxLifeTimeMS=1800000"ENV_REDIS_HOST: "192.168.10.13"ENV_REDIS_PORT: "6379"ENV_REDIS_PASSWORD: "123456"ENV_KAFKA_ENDPOINTS: "192.168.10.7:9092,192.168.10.8:9092,192.168.10.9:9092"ENV_ELASTICSEARCH_ENDPOINTS: "http://192.168.10.10:9200,http://192.168.10.11:9200,http://192.168.10.12:9200"ENV_ELASTICSEARCH_PASSWORD: "elastic:123456"ENV_FILE_ENDPOINTS: "192.168.10.16:9001,192.168.10.17:9002,192.168.10.18:9003,192.168.10.19:9004"ENV_FILE_ACCESSKEY: "storage"ENV_FILE_SECRETKEY: "123456"ENV_MINGDAO_INTRANET_ENDPOINT: "www:8880"ENV_ADDRESS_MAIN: "https://hap.domain.com"ENV_ADDRESS_ALLOWLIST: ""ENV_CAPTAIN_ENDPOINT: "http://192.168.10.20:38880"ENV_HEALTHCHECK: "off"ENV_API_TOKEN: "4PrArcXYquO1sHlV9evsDqFKUUJ1kWVAg7v6oGcTKRNG9fUY"ENV_TIME_ZONE: "Asia/Shanghai"The above example configures MySQL and Redis in standalone or master-slave mode. If your environment uses MySQL MGR or Redis Sentinel mode, click to expand for configuration instructions.
MySQL MGR Mode
If MySQL uses MGR (Group Replication) + Router architecture, update
ENV_MYSQL_HOSTto the address of any Router node,ENV_MYSQL_PORTto the Router read-write port6446, and append the following variables:ENV_RDB_TYPE: "10"ENV_RDB_URI_MDPROJECT: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDProject;uid=root;password=actual_password;"ENV_RDB_URI_MDLOG: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDLog;uid=root;password=actual_password;"ENV_RDB_URI_MDSTRUCTURE: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDStructure;uid=root;password=actual_password;"ENV_RDB_URI_MDCALENDAR: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDCalendar;uid=root;password=actual_password;"ENV_RDB_URI_MDAPPLICATION: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDApplication;uid=root;password=actual_password;"Additional variable descriptions:
ENV_RDB_TYPE: Fixed value10, enables MGR multi-node connection modeENV_RDB_URI_*connection string fields:Server: All Router node IPs, separated by commasPort: Fixed at6446(Router read-write port), do not modifyDatabase: Fixed database name, do not modifyuid: MySQL login usernamepassword: Login password for theuiduser, replace the placeholder with the actual password
Redis Sentinel Mode
If Redis uses Sentinel architecture, remove
ENV_REDIS_HOST,ENV_REDIS_PORT, andENV_REDIS_PASSWORDfrom the example, and replace them with the following three Sentinel variables (the two sets cannot coexist):ENV_REDIS_SENTINEL_ENDPOINTS: "192.168.10.21:26379,192.168.10.22:26379,192.168.10.23:26379"ENV_REDIS_SENTINEL_MASTER: "mymaster"ENV_REDIS_SENTINEL_PASSWORD: "123456"Variable descriptions:
ENV_REDIS_SENTINEL_ENDPOINTS: All Sentinel node addresses inIP:portformat, separated by commas. Default Sentinel port is26379ENV_REDIS_SENTINEL_MASTER: Redis Sentinel master name, typicallymymasterby defaultENV_REDIS_SENTINEL_PASSWORD: Redis authentication password, replace the placeholder with the actual password
Environment variables to configure for initial deployment:
Variable Name Description ENV_MYSQL_HOST[MySQL standalone or master-slave] Enter the MySQL primary node address; if using MGR + Router architecture, enter the address of any Router node. ENV_MYSQL_PORT[MySQL standalone or master-slave] Enter the MySQL service port; if using MGR + Router architecture, enter the Router read-write port 6446.ENV_MYSQL_USERNAMEEnter the MySQL database login username. ENV_MYSQL_PASSWORDEnter the MySQL database login password. ENV_RDB_TYPE[MySQL MGR mode] Fixed value 10, enables MGR multi-node connection mode.ENV_RDB_URI_MDPROJECT[MySQL MGR mode] Connection string for the MDProject database, see the MGR configuration above for format. ENV_RDB_URI_MDLOG[MySQL MGR mode] Connection string for the MDLog database, see the MGR configuration above for format. ENV_RDB_URI_MDSTRUCTURE[MySQL MGR mode] Connection string for the MDStructure database, see the MGR configuration above for format. ENV_RDB_URI_MDCALENDAR[MySQL MGR mode] Connection string for the MDCalendar database, see the MGR configuration above for format. ENV_RDB_URI_MDAPPLICATION[MySQL MGR mode] Connection string for the MDApplication database, see the MGR configuration above for format. ENV_MONGODB_URIEnter the MongoDB connection address, which can be in standalone, replica set, or sharded cluster format. ENV_REDIS_HOST[Redis standalone or master-slave mode] Enter the Redis service host address. ENV_REDIS_PORT[Redis standalone or master-slave mode] Enter the Redis service port. ENV_REDIS_PASSWORD[Redis standalone or master-slave mode] Enter the Redis service access password. ENV_REDIS_SENTINEL_ENDPOINTS[Redis Sentinel mode] Enter the Sentinel node addresses, separated by commas (e.g., 192.168.10.21:26379,192.168.10.22:26379,192.168.10.23:26379).ENV_REDIS_SENTINEL_MASTER[Redis Sentinel mode] Enter the Redis Sentinel master name. ENV_REDIS_SENTINEL_PASSWORD[Redis Sentinel mode] Enter the Redis authentication password. ENV_KAFKA_ENDPOINTSEnter the Kafka cluster node addresses, separated by commas (e.g., 192.168.10.7:9092,192.168.10.8:9092).ENV_ELASTICSEARCH_ENDPOINTSEnter the Elasticsearch node access addresses; in cluster mode, separate multiple nodes with commas and prepend each with http://(e.g.,http://192.168.10.10:9200,http://192.168.10.11:9200).ENV_ELASTICSEARCH_PASSWORDEnter the Elasticsearch access credentials in the format username:password.ENV_FILE_ENDPOINTSEnter the HAP file service node addresses, separated by commas (e.g., 192.168.10.16:9001,192.168.10.17:9002).ENV_FILE_ACCESSKEYEnter the HAP file service AccessKey. ENV_FILE_SECRETKEYEnter the HAP file service SecretKey. ENV_ADDRESS_MAINEnter the actual access address for the HAP system (e.g., https://hap.domain.com).ENV_ADDRESS_ALLOWLISTOptional. Enter additional allowed access addresses for the HAP system, separated by commas. ENV_CAPTAIN_ENDPOINTEnter the deployment manager server address (e.g., http://192.168.10.20:38880). -
After modification, save and exit. Ensure all configurations match the current deployment environment before proceeding.
-
Start the HAP Microservices
cd /data/mingdao/script/kubernetes/bash start.shIn the
/data/mingdao/script/kubernetes/directory:start.shis used to start the HAP microservicesstop.shis used to stop the HAP microservices
-
Check the status of the HAP Microservices
kubectl get pod -o wide-
Under normal circumstances, the Pod status is 2/2 and Running.
-
If a Pod fails to start or has an abnormal status, use the following command to view its restart or error logs:
kubectl logs -p <pod-name>
-
-
Once Nginx completes the proxy configuration for the access address, the HAP system can be accessed via the configured address.