Install CDR Components
Finally, you can install the CDR Platform services. For these charts, ensure that you set the image tag to the corresponding tag found in the release notes.
The examples below are pre-populated with the values for v2.10.0:
Engine
To integrate Halo with Reversing Labs, set the enable_reversing_labs variable to true below. Make sure to create Reversing Labs secrets in the Vault as mentioned in the Step 3.
enable_reversing_labs=""
helm upgrade --install cdrplatform-engine cdrplatform-engine -n cdrplatform \
--set image.tag=141890 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-engine \
--set cloud_provider=oracle \
--set configuration.ENABLE_REVERSING_LABS="${enable_reversing_labs}" \
--atomic
Sync API
helm upgrade --install cdrplatform-sync-api cdrplatform-sync-api -n cdrplatform \
--set image.tag=140931 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-sync-api \
--set cloud_provider=oracle
API Access service
The API Access service acts as a gateway service to access CDR Platform Sync API and Policy API. It exposes the CDR functionality via HTTP - in your environment you may require this to be done with TLS/SSL via HTTPS, if this is the case follow the instructions to install with TLS/SSL. Otherwise follow the instructions to install without.
For deployments without TLS/SSL
helm upgrade --install cdrplatform-api-access -n cdrplatform cdrplatform-api-access \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-api-access \
--atomic --set image.tag=141985
To use SSL certificates on CDR API, create a private key and certificate for the domain to be used.
Create a Kubernetes secret using the key and crt files using the command below. With this command we create a secret with the name "tls-secret" from the files server.key (private key) and server.crt (certificate). The key should not be passphrase protected in this example.
kubectl create secret tls tls-secret --key server.key --cert server.crt
This secret can then be used to enable TLS on the ingress ensuring that the domain name is set on the command below:
helm upgrade --install cdrplatform-api-access -n cdrplatform cdrplatform-api-access \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-api-access \
--set image.tag=141985 \
--set cloud_provider=oracle \
--set ingress.tls.enabled=true \
--set ingress.tls.domain=<domain name> \
--set ingress.tls.secretName=tls-secret \
--atomic
To enable API authentication
The Authentication in the CDR Platform API is disabled by default. If authentication needs to be enabled:
- Add two new entries to the Vault Secret
vault_secret_name, one for the organisation ID and another for orgnisation tokens. When passing multiple tokens seperate them with a comma (","). As a result, the token itself cannot have a comma. - The secrets in Vault should follow the below naming convention
- The secret for organisation ID should start with
organisationand end with-idwith a number in between. For exampleorganisation1-id,organisation2-id,organisation3-idetc. - The secret for the organisation tokens should start with
organisationand end with-tokenswith a number in between. For exampleorganisation1-tokens,organisation2-tokens,organisation3-tokensetc.
- The secret for organisation ID should start with
{
"organisation1-id": "org-1",
"organisation1-tokens": "org-1-token-1,org-1-token-2"
}
- Set
configuration.AuthenticationScheme=Basicwhile deploying the helm chart. For example,
helm upgrade --install cdrplatform-api-access -n cdrplatform cdrplatform-api-access \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-api-access \
--set image.tag=141985 \
--set configuration.AuthenticationScheme=Basic \
--set cloud_provider=oracle \
--atomic
Portal
For deployments without TLS/SSL
To deploy the Portal service, run the below commands.
Note that the
<IP-address>mentioned in this command refers to the Load Balancer's public IP address. This can be retrieved through the "Portal & API Access" steps below
helm upgrade --install cdrplatform-portal cdrplatform-portal -n cdrplatform \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-portal \
--set configuration.OIDC=null \
--set image.tag=141353 \
--set configuration.BackendUrl=http://<IP-address> \
--set configuration.HaloVersion=2.10.0 \
--atomic
For deployments with TLS/SSL
To enable TLS, add the --set ingress.tls.enable_tls=true and --set ingress.tls.domain=<domain name> parameters - in the below example, it will use the same Kubernetes secret that was created for the API Access to retrieve the certificates.
helm upgrade --install cdrplatform-portal cdrplatform-portal -n cdrplatform \
--set image.tag=141353 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-portal \
--set ingress.tls.enabled=true \
--set ingress.tls.domain=<domain name> \
--set ingress.tls.secretName=tls-secret \
--set configuration.BackendUrl=https://<domain name> \
--set configuration.OIDC=null \
--set configuration.HaloVersion=2.10.0 \
--atomic
MongoDB
MongoDB is a pre-requisite for Policy API and Async API.
helm upgrade -i cdrplatform-mongodb cdrplatform-mongodb -n cdrplatform --atomic \
--set cloud_provider=oracle
After the MongoDB is deployed, get the connection string of the MongoDB and add it to the vaule secret.
- Retreive the connection string from the k8s secret
kubectl get secret mongodb-cdrplatform-cdrp-user -o jsonpath='{.data.connectionString\.standard}' | base64 -d
- Update the Oracle Vault secret by adding the key-value pair
{
"mongodb-connectionstring": "<output-from-previous-step>"
}
- After updating the Oracle Vault, to sync the secrets to the Kubernetes secrets, run below command.
kubectl annotate externalsecret external-secret updated_at=$(date +%s) --overwrite -n cdrplatform
- Describe the
cdrplatform-secretskubernetes secret and make suremongodb-connectionstringis synced and present in the secret. Then proceed to deploying next helm charts.
kubectl describe secret cdrplatform-secrets
Policy API
The policy API is to manage policies for CDR Platform content management flags. This is an optional service, install this if you would like to create and use custom polices.
helm upgrade --install cdrplatform-policy-api -n cdrplatform cdrplatform-policy-api \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-policy-api \
--set image.tag=141461 \
--set cloud_provider=oracle
Portal Access
Portal Access acts a backend for Portal. It enables Portal to access Policy API and Sync API
For deployments with TLS/SSL
If TLS needs to be enabled, add the --set ingress.tls.enable_tls=true and --set ingress.tls.domain=<domain name> parameters - in the below example, it will use the same Kubernetes secret that was created for the API Access to retrieve the certificates.
helm upgrade --install cdrplatform-portal-access -n cdrplatform cdrplatform-portal-access \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-portal-access \
--set image.tag=140258 \
--set ingress.tls.enabled=true \
--set ingress.tls.domain=<domain-name> \
--set ingress.tls.secretName=tls-secret \
--set configuration.AuthenticationScheme=None \
--atomic
For deployments without TLS/SSL
helm upgrade --install cdrplatform-portal-access -n cdrplatform cdrplatform-portal-access \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-portal-access \
--set configuration.AuthenticationScheme=None \
--set image.tag=140258 \
--atomic
License management
License management service is used to manage the license in the CDR Platform
helm upgrade --install cdrplatform-license-management cdrplatform-license-management \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-license-management \
--set image.tag=137274 \
-n license-management \
--atomic
Clean up service
Clean up service deletes the original and rebuilt files from the persistent storage after the files are processed
helm upgrade --install cdrplatform-cleanup cdrplatform-cleanup \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-cleanup \
--set cloud_provider=oracle \
--set image.tag=137267 \
--atomic
Async API
The Asynchronous API can be deployed using the command below. A MongoDB database is a pre-requisite for the Async API
helm upgrade --install cdrplatform-async-api cdrplatform-async-api \
--set image.tag=140934 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-async-api \
--atomic
## Metrics collation (Removed from version 2.6.2)
Metrics collation service captures events from the CDRPlatform and stores in MongoDB. Deploy when using Halo version 2.6.1 and below.
helm upgrade --install cdrplatform-metrics-collation cdrplatform-metrics-collation \
--set image.tag=120018 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-metrics-collation \
--set cloud_provider=oracle \
--atomic
Metrics projection
Metrics projection service is used to pull reporting data from MongoDB to display in the Portal UI.
helm upgrade --install cdrplatform-metrics-projection cdrplatform-metrics-projection \
--set image.tag=141124 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-metrics-projection \
--set cloud_provider=oracle \
--atomic
Report extractor
Report extractor service extracts analysis reports and publish them for reporting
helm upgrade --install cdrplatform-report-extractor cdrplatform-report-extractor \
--set image.tag=138596 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-report-extractor \
--wait --atomic
Tally Accumulator
The Tally accumulator service tracks and maintains a tally of usage statistics.
helm upgrade --install cdrplatform-tally-accumulator cdrplatform-tally-accumulator \
--set image.tag=139233 \
--set image.repository=glasswallhub.azurecr.io/cdrplatform-tally-accumulator \
--set cloud_provider=oracle \
--wait --atomic
Portal & API Access
Use the below command to determine the External-IP associated with your cluster:
External-IP will be the same as Public IP address attached to the Oracle Cloud load balancer.
kubectl get services --namespace cdrplatform nginx-ingress-ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'
You can now use the IP returned above to navigate to the Portal and API documentation (use https if TLS enabled):
Portal: http://<ip>
API Documentation: http://<ip>/swagger