Deploying the Site24x7 PHP agent in a Kubernetes environment

How to deploy the Site24x7 PHP agent in a Kubernetes environment?

For PHP version 7.0 and above

The PHP agent (PHP version 7.0 and above) can be deployed in a Kubernetes environment using any of the following methods.
You can also keep the license keys in a configmap to avoid using them in the deployment files.

Modifying the Dockerfile

Follow the steps given in this help page to achieve the following:
  1. Install the PHP agent and S247DataExporter in the same docker container during the image build.
  2. Start the DataExporter using an Entry Point Script.
Notes
  Instead of using an Entry Point Script, you can modify the Helm chart to start the S247DataExporter.

Helm chart modification to start the S247DataExporter:
  1. lifecycle:
  2.         postStart:
  3.                    exec:
  4.                            command: ["/bin/sh", "-c", "/opt/S247DataExporter/bin/service.sh run"]

Without modifying the Dockerfile

  1. Download and install the PHP agent and S247DataExporter in the postStart lifecycle hook without modifying the Dockerfile. 
  2. Restart the web server and FastCGI Process Manager (FPM).
  3. lifecycle:
  4.         postStart:
  5.             exec:
  6.                 command: ["/bin/bash", "-c", "wget -O InstallAgentPHP.sh https://staticdownloads.site24x7.com/apminsight/agents/AgentPHP/linux/InstallAgentPHP.sh && sh InstallAgentPHP.sh -license.key \"licensekey\" -zpa.application_name \"PHP-Application\" && wget -O InstallDataExporter.sh https://staticdownloads.site24x7.com/apminsight/S247DataExporter/linux/InstallDataExporter.sh && sh InstallDataExporter.sh -root -nsvc -license.key \"licensekey\" && pkill -o -USR2 php-fpm"]

For PHP version below 7.0

The PHP agent (PHP version below 7.0) can be deployed in a Kubernetes environment using any of the following methods.

Without Helm charts

  1. You can include the installation script when building the container. This is similar to the docker installation method. For more information, please refer to our docker installation help documentation.
  2. You can include the installation script in the Post Life Cycle hooks of Kubernetes YAML.
Add the following in the Kubernetes deployment YAML file:
  1. lifecycle:
  2.        preStop:
  3.            exec:
  4.                command: ["/bin/bash", "-c", "service zpdpsvc stop;"]
  5.         postStart:
  6.             exec:
  7.                 command: ["/bin/bash", "-c", "wget https://staticdownloads.site24x7.com/apminsight/scripts/s247apmphpinstall.sh && ./s247apmphpinstall.sh -key=<site24x7 license key> -appname=<App name to be shown in APM> ; /etc/init.d/apache2 reload ;" ]
Notes
The /etc/init.d/apache2 reload command in the above example is for Apache-based server. If you are using NGINX or FPM based server, you'll need to add the command kill -USR2 1.

With Helm charts

If you are deploying with Helm, you can include the installation script in the Helm charts file.
Notes
Add the following to the template folder or deployment.yaml, or if you prefer to use values.yaml, configure as follows:
  1. site24x7:
  2.   apikey: <site24x7 license key>
  3.   appname: <App name to be shown in APM>
Use the following configuration in lifecycle hooks:
  1. lifecycle:
  2.       preStop:
  3.          exec:
  4.              command: ["/bin/bash", "-c", "service zpdpsvc stop;"]
  5.       postStart:
  6.           exec:
  7.                command: ["/bin/bash", "-c", "wget https://staticdownloads.site24x7.com/apminsight/scripts/s247apmphpinstall.sh && ./s247apmphpinstall.sh -key={{ .Values.site24x7.apikey }} -appname={{ .Values.site24x7.appname }} ; /etc/init.d/apache2 reload ;" ]
Notes
You can also keep the license keys in a configmap to avoid using them in the deployment files.