Installing SCM using Helm
This topic describes the steps to install SCM on a Kubernetes cluster on premises or in the cloud or in your data center on OC3 using Helm.
This topic includes the following sections:
Before Installing SCM
You must perform the following preinstallation tasks before installing SCM on a Kubernetes cluster:
- Ensure you've access to the installation directory and container registry provided in Siebel Installer.
- Create an image pull secret: A pod uses a secret to pull an image from the
                    container registry. To use the SCM image and SCM Helm chart from the container
                    registry, create a secret using the kubectlcommand as follows:kubectl -n <namespace> create secret docker-registry <secretName> --docker-server=<registryURL> --docker-username=<userName> --docker-password=<password> --docker-email=<email>The variables in the example have the following values: - <namespace>is the name of the namespace you want to install SCM in.
- <secretName>is the name of the secret.
- <registryURL>is the container registry URL to which the SCM image and SCM Helm chart were pushed by Siebel Installer.
- <userName>is the container registry user name.
- <password>is the container registry user password.
- <email>is the container registry user email.
 
- Update the values.yamlfile: The SCM Helm package includes a defaultvalues.yamlfile which determines how SCM will be configured. Before installing SCM, you must update thevalues.yamlfile to configure SCM as per your requirements. To update thevalues.yamlfile:- Open the values.yamlfile. You can use thevalues.yamlfile in either:- The installation directory on the Linux host machine that was used to run Siebel installer, or
- The SCM Helm chart in your container registry. To use the
                                        values.yamlin the container registry:- Sign in to the container registry as
                                                follows:helm registry login <registry>In this example, <registry>is the basename of the container registry.
- Pull the SCM Helm chart from the container
                                                registry:helm pull oci://<registry>/<repositoryPath> --version <releaseVersion>The variables in the example have the following values: - <registry>is the container registry basename.
- <repositoryPath>is the SCM Helm chart (- cloudmanager) repository path.
- <releaseVersion>is the SCM release version.
 
 
- Sign in to the container registry as
                                                follows:
 
- Unzip the SCM Helm chart zip file as
                                follows:tar -zxf cloudmanager_CM_<releaseVersion>.tgzIn this example, <releaseVersion>is the SCM release build version that you downloaded.
- Update the following sections in the values.yamlfile:- The imagesection with the container registry details (provided in the Siebel Installer configuration tasks) from which the SCM image and SCM Helm chart will be used for deployment, as follows:image: registry: "<registryURL>" repository: "<imageRepository>" tag: "<imageTag>" imagePullPolicy: IfNotPresentThe variables in the example have the following values: - <registryURL>is the container registry URL that was provided in the installer configuration tasks.
- <imageRepository>is the container registry prefix that was provided in the installer configuration tasks.
- <imageTag>is the SCM release version.
- <imagePullPolicy>determines when the SCM image is pulled from container registry. It can take the following values: IfNotPresent, Always or Never.
 
- (Optional) The resourcessection with resource (CPU, memory, and ephemeral storage) allocation for the SCM pod. The default limits and requests values already specified for the resources in thevalues.yamlare sufficient for Siebel CRM deployment, but you can update these values as required as per the size of your Siebel CRM deployment.
- The storagesection with the network file system (NFS) path for SCM and Siebel CRM deployment as follows:storage: nfsServer: <nfsServer> nfsPath: <nfsPath> storageSize: 200GiThe variables in the example have the following values: - <nfsServer>is the IP address or fully qualified domain name of the NFS server.
- <nfsPath>is the export path in the NFS server to access the SCM file system.
 
- The imagePullSecretssection with the secret name required to pull the SCM image from the container registry as follows:imagePullSecrets: name: <secretName>In this example, <secretName>is the name of the secret you created in the step 1 of this section.
- The sshKeysectionwith the public and private key file names required for establishing connection between Git repository and Fluxcd operator as follows:- Create a SSH key pair as
                                                follows:% ssh-keygen Generating public/private ed25519 key pair. Enter file in which to save the key (/Users/<uname>/.ssh/id_ed25519): /Users/<uname>/sample Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/<uname>/sample Your public key has been saved in /Users/<uname>/sample.pubIn this example, <uname>is the user name.
- Copy the private and public key files to the
                                                sshdirectory in the SCM Helm chart home directory (cloudmanager).
- Update the sshKeysection with the private and public key file names:sshKey: pvtKeyFilename: <privateKeyFilename> pubKeyFilename: <publicKeyFilename>The variables in the example have the following values: - <privateKeyFilename>is the private key file name.
- <publicKeyFilename>is the public key file name.
 
 
- Create a SSH key pair as
                                                follows:
- The ociConfigsection with the details of the files required for OCI API authentication to access OCI infrastructure services in an OC3 environment as follows:Note: You must configure thecaCrtFilenameandociCliRcFilenameparameters only when deploying Siebel CRM in OC3.ociConfig: ociPvtKeyFilename:<ociPrivateKeyFilename> caCrtFilename: <caCertificateFileName> ociCliRcFilename : <cliRCFileName>The variables in the example have the following values: - <ociPrivateKeyFilename>is the private key PEM file name. For example, oci_api_key.pem.
- <caCertificateFileName>is the CA certificate file name. For example, ca.crt.
- <cliRCFileName>is the OCI CLI RC configuration file name.For example, oci_cli_rc.
 
- The instanceMetaDatasection with the applicable region and compartment OCID values as follows:instanceMetaData: vaultEnabled: "False" region: <region> compartmentOcid: <compartmentOCID> ociDeployment: <deploymentType>The variables in the example have the following values: - <region>is the canonical region name. For example, us-ashburn-1.
- <compartmentOCID>is the OCID of the compartment used for Oracle Cloud Infrastructure (OCI) calls.
- <deploymentType>determines the environment on which you are deploying Siebel CRM. If you are deploying Siebel CRM on:- A CNCF certified Kubernetes cluster on premises or in the cloud, set the value of this parameter to "false". This parameter is of string type, so ensure you enclose false in quotes.
- OC3 in your data center, set the value of this parameter to "oc3".
- OCI, set the value of this parameter to "public".
 
 
- The userEncryptionKeysection, enable this section and update it only when thevaultEnabledparameter is set tofalse.userEncryptionKey: uek: "<encryptionkey>"In this example, <encryptionkey>is a key which matches the following expression: ^[a-zA-Z0-9]{56,60}$
- The servicesection with the service type that will be used to expose SCM deployment as follows:service: serviceType: <servicetype>In this example, <servicetype>is one of the following: ClusterIP, NodePort or LoadBalancer. Based on the service type selected, configure the other parameters applicable for the service type. For example, forNodePortservice type configure theNodePortsection under the service section as follows:NodePort: name: "scm-node-port" customMetadata: {} customLabels: {} customAnnotations: {} secret: name: "scm-node-port-ssl-secret" sslCertificatePath: "/etc/ssl/certs/scm.crt" sslKeyPath: "/etc/ssl/private/scm.key" customMetadata: {} customLabels: {} customAnnotations: {} selfSignedCert: country: "US" state: "California" locality: "San Francisco" organization: "Oracle Corporations" commonName: "oracle.com" dnsName: "scm-cluster-ip-service"Note: When deploying Siebel CRM on OC3 using LoadBalancer as theserviceType, you must configure thecustomAnnotationsandsecretsections appropriately as per the instructions in thevalues.yamlfile. An example of thecustomAnnotationsandsecretsections when deploying Siebel CRM in OC3 using LoadBalancer as theserviceTypeis as follows:service: serviceType: LoadBalancer customAnnotations: oci.oraclecloud.com/load-balancer-type: "lb" service.beta.kubernetes.io/oci-load-balancer-tls-secret: scm-lb-cert-lb-secret service.beta.kubernetes.io/oci-load-balancer-internal: "false" service.beta.kubernetes.io/oci-load-balancer-shape: "flexible" service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10" service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100" service.beta.kubernetes.io/oci-load-balancer-subnet1: ocid1.xxxxx.xxx.xx.xxxxxxxxx................speygundxpjuhu23lorqq oci.oraclecloud.com/oci-load-balancer-listener-ssl-config: '{"CipherSuiteName":"oci-default-http2-tls-12-13-ssl-cipher-suite-v1", "Protocols":["TLSv1.2","TLSv1.3"]}' service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443" secret: certFileSecretNameLbTlsTermination: scm-lb-cert-lb-secretNote: If you updated thevalues.yamlthat you pulled from the container registry, you can push the updated SCM Helm chart in to the container registry after updating thevalues.yamlfile as follows:tar -zcf cloudmanager_CM_updated_<releaseVersion>.tgz helm push cloudmanager_CM_updated_<releaseVersion>.tgz oci://<registry>/<repositoryPath>The variables in the example have the following values: - <registry>is the container registry basename.
- <repositoryPath>is the SCM Helm chart (- cloudmanager) repository path.
- <releaseVersion>is the SCM release version.
 
 
- The 
 
- Open the 
Installing SCM
This section describes the steps to install SCM on a Kubernetes cluster on premises or in the cloud or in your data center on OC3 using Helm.
To install SCM using Helm:
- Go to the SCM Helm chart directory and run the Helm install command as
                        follows:cd cloudmanager helm install <releaseName> . -n <namespace>The variables in the example have the following values: - <releaseName>is the SCM Helm chart instance identifier.
- <namespace>is the name of the namespace to install SCM in.
 
- Verify that the SCM pod is running and fetch the endpoint URL for SCM using the
                    following
                    command:kubectl get pods -n <namespace>
- Build the SCM application URL (when the service type is
                        NodePort) as follows:- Get a node IP address:
                                kubectl get nodes –wideNote: The SCM application port is mapped to all active nodes, hence any node IP can be used to build the SCM application URL. You can copy the external IP (if available) or the internal IP as per your Kubernetes configuration.
- Get the assigned node port number from the service (Port Range 30000 –
                            32767):kubectl get svc/scm-app-service -n <namespace>
- Build the SCM application URL using the node IP address and node port as
                            follows:
                                https://<nodeIPAddress>:<nodePortNumber>The variables in the example have the following values: - <nodeIPaddress>is any active node IP address.
- <nodePortNumber>is the assigned node port number.
 
 Note: When theserviceTypeis set toLoadBalancer, build the SCM application URL as follows:- Get the external IP and
                                port:kubectl get svc -n <namespace>
- Build the SCM application URL using the external IP and port number
                                as
                                follows:https://<externalIP>:<PortNumber>
 
- Get a node IP address:
                                
- Access the SCM application URL and verify that the swagger page is loading correctly.