Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: (IAC-629) Support SingleStore (DAC) #277

Merged
merged 4 commits into from
Aug 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ This project contains Ansible code that creates a baseline cluster in an existin
- SAS Viya Multi-tenant Deployment
- Multi-tenancy in SAS Viya creates and manages separate and secure cloud-computing units. See [SAS Viya Multi-Tenancy Documentation](./docs/user/Multi-Tenancy.md) for details.

- SAS Viya SingleStore Deployment
- SingleStore is a cloud-native database designed for data-intensive applications. See [SAS Viya SingleStore Documentation](./docs/user/SingleStore.md) for details.

## Prerequisites

Use of these tools requires operational knowledge of the following technologies:
Expand Down
27 changes: 27 additions & 0 deletions docs/user/SingleStore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# SAS Viya Support for SingleStore

SAS Viya supports SingleStore. SingleStore is a cloud-native database designed for data-intensive applications. A distributed, relational, SQL database management system that features ANSI SQL support, it is known for speed in data ingest, transaction processing, and query processing.

## Requirements for a SingleStore SAS Viya deployment

If your SAS software order included SAS Viya with SingleStore, there are additional requirements that may apply to your deployment. The SAS Viya _IT Operations Guide_ provides detailed information about requirements for a SingleStore enabled deployment of SAS Viya. Access it [here](https://documentation.sas.com/doc/en/itopscdc/default/itopssr/n0jq6u1duu7sqnn13cwzecyt475u.htm#n0qs42c42o8jjzn12ib4276fk7pb)

## Deploying SingleStore with SAS Viya Deployment

You can deploy SAS Viya with SingleStore into a Kubernetes cluster that is running in Microsoft Azure. The [SAS Viya 4 Infrastructure as Code (IaC) for Microsoft Azure](https://github.com/sassoftware/viya4-iac-azure) GitHub project can automatically provision the required infrastructure components that support SAS Viya with SingleStore deployments. Refer to the [SingleStore sample input file](https://github.com/sassoftware/viya4-iac-azure/blob/main/examples/sample-input-singlestore.tfvars) for terraform configuration values that create an Azure cluster suitable for deploying Viya and SingleStore to.

## Customizing SingleStore Deployment Overlays

Refer to the SAS Viya Deployment instructions [Getting Started](https://github.com/sassoftware/viya4-deployment#getting-started) and the [SAS Viya Customizations](https://github.com/sassoftware/viya4-deployment#sas-viya-customizations) section for information on how users can make changes to their deployment by adding custom overlays into subfolders under the `/site-config` folder.

After running SAS Viya Deployment with the setting DEPLOY=false in your ansible-vars.yaml file, locate the `sas-bases/` folder which is a peer to the `site-config/` folder underneath your deployments <base_dir>.

Follow each step under the `SingleStore Cluster Definition` heading in the `sas-bases/examples/sas-singlestore/README.md` file to configure your SingleStore deployment noting the exceptions below:

Add the new Step 1a after Step 1.

1a. Copy `$deploy/sas-bases/components/sas-singlestore` into `$deploy/site-config/sas-singlestore/component`.

Skip Step 3. The SAS Viya Deployment playbook will automatically add the SingleStore component and overlays to the base kustomization.yaml file that you have copied to `site-config/` and edited per the README.md file steps.

After completing the README.md steps for SingleStore, set DEPLOY=true in your ansible-vars.yaml file and run SAS Viya Deployment with the "viya, install" tags to deploy Viya with SingleStore into your cluster.
2 changes: 1 addition & 1 deletion roles/vdm/library/siteconfig_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def traverse(self, folder):
yamlblock = yaml.safe_load(file)
# handle components
if "kind" in yamlblock and yamlblock['kind'] == "Component":
self.add_overlays(Overlay.COMPONENT, kustomizefilefullpath)
self.add_overlays(Overlay.COMPONENT, folder)
else:
# handle kustomization
self.add_overlays(Overlay.RESOURCE, folder)
Expand Down
14 changes: 7 additions & 7 deletions roles/vdm/tasks/tls.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@
- { transformers: "overlays/network/ingress/security/transformers/ingress-tls-transformers.yaml", max: "2021.1.2", priority: 51 }
- { transformers: "overlays/network/ingress/security/transformers/product-tls-transformers.yaml", max: "2021.1.2", priority: 51 }
- { transformers: "overlays/network/ingress/security/transformers/backend-tls-transformers.yaml", max: "2021.1.2", priority: 51 }
- { components: "components/security/core/base/full-stack-tls", min: "2021.1.3" }
- { components: "components/security/network/networking.k8s.io/ingress/nginx.ingress.kubernetes.io/full-stack-tls", min: "2021.1.3" }
- { components: "components/security/core/base/full-stack-tls", min: "2021.1.3", priority: 51 }
- { components: "components/security/network/networking.k8s.io/ingress/nginx.ingress.kubernetes.io/full-stack-tls", min: "2021.1.3", priority: 51 }
when:
- V4_CFG_TLS_MODE == "full-stack"
tags:
Expand All @@ -89,8 +89,8 @@
add:
- { transformers: "overlays/network/ingress/security/transformers/cas-connect-tls-transformers.yaml", max: "2021.1.2", priority: 51 }
- { transformers: "overlays/network/ingress/security/transformers/ingress-tls-transformers.yaml", max: "2021.1.2", priority: 51 }
- { components: "components/security/core/base/front-door-tls", min: "2021.1.3" }
- { components: "components/security/network/networking.k8s.io/ingress/nginx.ingress.kubernetes.io/front-door-tls", min: "2021.1.3" }
- { components: "components/security/core/base/front-door-tls", min: "2021.1.3", priority: 51 }
- { components: "components/security/network/networking.k8s.io/ingress/nginx.ingress.kubernetes.io/front-door-tls", min: "2021.1.3", priority: 51 }
when:
- V4_CFG_TLS_MODE == "front-door"
tags:
Expand All @@ -116,8 +116,8 @@
cadence_number: "{{ V4_CFG_CADENCE_VERSION }}"
existing: "{{ vdm_overlays }}"
add:
- { components: "components/security/core/ingress-only-tls", min: "2021.2.4" }
- { components: "components/security/network/networking.k8s.io/ingress/nginx.ingress.kubernetes.io/front-door-tls", min: "2021.2.4" }
- { components: "components/security/core/ingress-only-tls", min: "2021.2.4", priority: 51 }
- { components: "components/security/network/networking.k8s.io/ingress/nginx.ingress.kubernetes.io/front-door-tls", min: "2021.2.4", priority: 51 }
when:
- V4_CFG_TLS_MODE == "ingress-only"
tags:
Expand All @@ -132,7 +132,7 @@
existing: "{{ vdm_overlays }}"
add:
- { transformers: "overlays/network/ingress/security/transformers/truststore-transformers-without-backend-tls.yaml", max: "2021.1.2", priority: 51 }
- { components: "components/security/core/base/truststores-only", min: "2021.1.3" }
- { components: "components/security/core/base/truststores-only", min: "2021.1.3", priority: 51 }
when:
- V4_CFG_TLS_MODE == "disabled"
- V4_CFG_TLS_TRUSTED_CA_CERTS is not none
Expand Down
10 changes: 9 additions & 1 deletion roles/vdm/templates/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,12 @@ namespace: {{ NAMESPACE }}
{% endif %}

{% endfor %}

{% if "components" not in ordered_overlays.result %}
Copy link
Member Author

@dhoucgitter dhoucgitter Aug 12, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lines 29-36 added to the kustomization.yaml template handle the scenario when DAC does not contribute any hard-coded component entries into ordered_overlays (as when TLS is disabled) and then skips over adding user submitted components under site-config such as SingleStore.

{% if "components" in user_customizations.overlays %}
components:
## user defined components
{% for item in user_customizations.overlays['components']|sort %}
- {{ item }}
{% endfor %}
{% endif %}
{% endif %}