# Sosivio

Sosivio provides predictive troubleshooting for Kubernetes. Sosivio helps eliminate ambiguity in Kubernetes with a tightly coupled data collection and AI tool.

This recipe was contributed by Sosivio.

## Step 1: Create Namespace

- In the Console, select a project, then navigate to **Infrastructure > Namespaces**.
- Click **New Namespace**.
- Enter `sosivio` for the name.
- Select **Wizard** for the type.
- Click **Save**.
- Click **Save & Go To Placement**.

- Select the required clusters under **Placement Policy**.
- Click **Save & Go To Publish**.
- Click **Publish**.

## Step 2: Download Helm Chart

Note: This applies to both SaaS and Airgapped environments.

- Add the Sosivio Helm repository. See the [Helm Docs](https://helm.sh/docs/intro/install/) if you need to install Helm.
  
  ```
  helm repo add sosivio https://helm.sosiv.io
  ```

- Update the Helm repository.
  
  ```
  helm repo update
  ```

- Fetch the Helm chart.
  
  ```
  helm fetch sosivio/sosivio
  ```

- A sosivio-X.Y.Z.tgz file is created.

Note: The following applies to Airgapped environments.
- Copy the TGZ file to the server with access to the Kubernetes cluster.

## Step 3: Customize Values

- In the `values.yaml` file, uncomment the `expose` field and set the correct value. Supported values are: PortForward, Ingress, and LoadBalancer.

- If Ingress is selected, provide a base domain for the `domain` field.

Note: A subdomain is created from the provided domain. For instance, providing the domain `example.com` will create an Ingress for `sosivio-dashboard.example.com`.

- If a Pull Secret is required to pull from the registry:
  - Apply the pull secret into the namespace.
    
    ```
    kubectl apply -n sosivio -f <pull_secret_file>
    ```
  - Add the secret name to `pull_secret_name`.
  - If required by the operator image, add the secret under the `operator` subsection.
  - Update the registry key, operator image, and kubectlImage to the correct values for your environment.

## Step 4: Create Sosivio Add-On

- In the Console, navigate to **Infrastructure > Add-Ons**.
- Select **New Add-On > Create New Add-On**.
- Select **Bring Your Own**.
- Enter a name for the Add-On, like `sosivio`.
- For Type, select **Helm 3**.
- For Artifact Sync, select **Upload file manually**.
- Click **Create**.

- Click **New Version**.

- Enter a version name, like `1.5.3`.
- Upload the TGZ file created in Step 2.
- Upload the Sosivio **values.yaml** file created in Step 2.
- Click **Save Changes**.

## Step 5: Create Blueprint

You can assemble a custom cluster blueprint using the Sosivio addon. You can add other addons to the same custom blueprint.

- In the Console, navigate to **Infrastructure > Blueprints**.
- Click **New Blueprint**.
- Enter a name for the Blueprint, like `sosivio`.
- Click **Save**.
- Enter a unique version name for the cluster blueprint, like `1.5.3`.

- Select **Configure Addons**.
- Select the Sosivio addon. Select other addons, as required.

- Click **Save Changes**, then click **Save Changes** again.

## Step 6: Apply Blueprint

Apply the custom blueprint to the cluster.

- In the Console, navigate to the project that contains the cluster you want to apply the blueprint to.
- Click Settings (gear icon) for the cluster you want to apply the blueprint to, then select **Update Blueprint**.

- Select Sosivio blueprint for **Blueprint** and select the **Version**.
- Click **Save and Publish** to update the blueprint.

Note: This will start the deployment of the addons configured in the Sosivio blueprint to the target cluster. The blueprint sync process can take a few minutes. After the sync is complete, the cluster will display the current cluster blueprint details and whether the sync was successful or not.

## Step 7: Retrieve Sosivio Dashboard URL and One Time Password

- Run the following command in your CLI to retrieve the Sosivio Dashboard URL.

```
kubectl get ing dashboard -n sosivio
```

- Run the following command to retrieve the Sosivio one-time password.

```
kubectl get secret -n sosivio sosivio-admin-otp -o jsonpath='{.data.password}' | base64 -d
```

## Step 8: Using Sosivio

See the [Sosivio Product Documentation](https://docs.sosiv.io/) for more information.
