From f679e9a64bf20ccf43cd9636d781387c992e0160 Mon Sep 17 00:00:00 2001 From: Kiran Babu Date: Tue, 28 May 2024 18:57:42 +0530 Subject: [PATCH] Cleanup the PoC projects --- charts/BasicDeployment/ReadMe.txt | 35 ---- .../hdp-server-deploy/.helmignore | 23 --- .../hdp-server-deploy/Chart.yaml | 29 --- .../hdp-server-deploy/ReadMe.txt | 34 ---- .../charts/postgresql-13.4.4.tgz | Bin 67132 -> 0 bytes .../config/hdpdeploy.properties | 189 ------------------ .../secrets/hdp-secrets.yaml | 11 - .../secrets/postgres-secrets.yaml | 12 -- .../hdp-server-deploy/templates/NOTES.txt | 8 - .../hdp-server-deploy/templates/_helpers.tpl | 78 -------- .../templates/hdp-common-pvc.yaml | 13 -- .../templates/hdpService.yaml | 22 -- .../templates/hdpStatefulset.yaml | 47 ----- .../templates/hdpdeploy-configmap.yaml | 7 - .../templates/postgres-init-sql.yaml | 24 --- .../hdp-server-deploy/values.yaml | 40 ---- charts/LBDeployment/.project | 11 + .../LBDeployment/haproxy-deploy/.helmignore | 23 --- charts/LBDeployment/haproxy-deploy/Chart.yaml | 28 --- charts/LBDeployment/haproxy-deploy/ReadMe.txt | 43 ---- .../haproxy-deploy/templates/NOTES.txt | 0 .../haproxy-deploy/templates/_helpers.tpl | 62 ------ .../LBDeployment/haproxy-deploy/values.yaml | 8 - .../hdp-lb-server-deploy/.helmignore | 23 --- .../hdp-lb-server-deploy/Chart.yaml | 29 --- .../hdp-lb-server-deploy/ReadMe.txt | 41 ---- .../config/hdpdeploy.properties | 189 ------------------ .../secrets/hdp-secrets.yaml | 11 - .../secrets/postgres-secrets.yaml | 12 -- .../hdp-lb-server-deploy/templates/NOTES.txt | 0 .../templates/_helpers.tpl | 78 -------- .../templates/haproxy-ingress.yaml | 45 ----- .../templates/hdp-common-pvc.yaml | 13 -- .../templates/hdp-notification-service.yaml | 20 -- .../templates/hdp-opc-service.yaml | 19 -- .../templates/hdp-server-app-service.yaml | 22 -- .../templates/hdpStatefulset.yaml | 47 ----- .../templates/hdpdeploy-configmap.yaml | 7 - .../templates/postgres-init-sql.yaml | 24 --- .../hdp-lb-server-deploy/values.yaml | 40 ---- 40 files changed, 11 insertions(+), 1356 deletions(-) delete mode 100644 charts/BasicDeployment/ReadMe.txt delete mode 100644 charts/BasicDeployment/hdp-server-deploy/.helmignore delete mode 100644 charts/BasicDeployment/hdp-server-deploy/Chart.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/ReadMe.txt delete mode 100644 charts/BasicDeployment/hdp-server-deploy/charts/postgresql-13.4.4.tgz delete mode 100644 charts/BasicDeployment/hdp-server-deploy/config/hdpdeploy.properties delete mode 100644 charts/BasicDeployment/hdp-server-deploy/secrets/hdp-secrets.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/secrets/postgres-secrets.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/templates/NOTES.txt delete mode 100644 charts/BasicDeployment/hdp-server-deploy/templates/_helpers.tpl delete mode 100644 charts/BasicDeployment/hdp-server-deploy/templates/hdp-common-pvc.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/templates/hdpService.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/templates/hdpStatefulset.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/templates/hdpdeploy-configmap.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/templates/postgres-init-sql.yaml delete mode 100644 charts/BasicDeployment/hdp-server-deploy/values.yaml create mode 100644 charts/LBDeployment/.project delete mode 100644 charts/LBDeployment/haproxy-deploy/.helmignore delete mode 100644 charts/LBDeployment/haproxy-deploy/Chart.yaml delete mode 100644 charts/LBDeployment/haproxy-deploy/ReadMe.txt delete mode 100644 charts/LBDeployment/haproxy-deploy/templates/NOTES.txt delete mode 100644 charts/LBDeployment/haproxy-deploy/templates/_helpers.tpl delete mode 100644 charts/LBDeployment/haproxy-deploy/values.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/.helmignore delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/Chart.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/ReadMe.txt delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/config/hdpdeploy.properties delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/secrets/hdp-secrets.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/secrets/postgres-secrets.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/NOTES.txt delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/_helpers.tpl delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/haproxy-ingress.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-common-pvc.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-notification-service.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-opc-service.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-server-app-service.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/hdpStatefulset.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/hdpdeploy-configmap.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/templates/postgres-init-sql.yaml delete mode 100644 charts/LBDeployment/hdp-lb-server-deploy/values.yaml diff --git a/charts/BasicDeployment/ReadMe.txt b/charts/BasicDeployment/ReadMe.txt deleted file mode 100644 index 806d9a8..0000000 --- a/charts/BasicDeployment/ReadMe.txt +++ /dev/null @@ -1,35 +0,0 @@ -========= -Overview -========= -This is a HELM chart project to do a simple single node HDP deployment. -By default, uses PostgreSQL as account database - the required user accounts will be setup automatically during the project install. - -Optionally, we can use any other database as account database, but the required configurations need to be updated correctly. -Refer to the hdp-server-deploy/ReadMe.txt for more details. - -============== -Installing HDP -============== - -By running the following two commands HDP should be setup successfully. - -Steps: -1) Create the secrets used for this project setup - - kubectl create -f \hdp-server-deploy\secrets\hdp-secrets.yaml - - kubectl create -f \hdp-server-deploy\secrets\postgres-secrets.yaml -2) Setup HDP - helm install hdp-server-deploy hdp-server-deploy - -============== -Accessing HDP -============== -Access Hybrid Data Pipeline (HDP) using https://:8443>/hdpui or http://:8080>/hdpui - -To know the EXTERNAL-IP for the hdp-service, run the following command -kubectl get svc - -There are two users created by default named d2cadmin and d2cuser. -The passwords are created as part of hdpsecrets with the keys hdpAdminPwd and hdpUserPwd. - diff --git a/charts/BasicDeployment/hdp-server-deploy/.helmignore b/charts/BasicDeployment/hdp-server-deploy/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/BasicDeployment/hdp-server-deploy/Chart.yaml b/charts/BasicDeployment/hdp-server-deploy/Chart.yaml deleted file mode 100644 index d4781de..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -name: hdp-server-deploy -description: A Helm chart for Kubernetes - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.4 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "4.6.1" -dependencies: - - name: postgresql - version: "^13.2.30" - repository: https://charts.bitnami.com/bitnami - condition: postgres.enabled \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/ReadMe.txt b/charts/BasicDeployment/hdp-server-deploy/ReadMe.txt deleted file mode 100644 index a7310bc..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/ReadMe.txt +++ /dev/null @@ -1,34 +0,0 @@ -========================= -Building the HELM Project -========================= -This project uses PostgreSQL as HDP's account database by default, thus have a dependency on PostgreSQL Helm Chart project. - -To build the project, use the command ->> helm dependency build hdp-server-deploy - -=================== -Configurable Values -=================== -By default, this project installs PostgreSQL, runs a SQL Script to setup the user and admin accounts needed for HDP in a fresh install. -When the volumes are mounted, and a prior database exists, PostgreSQL will skip running the init SQL script. - -In case of a need to use any other supported database like Oralce or SQLServer, configure .values.postgres.enabled to false. -This will skip creating the init sql script as a config map and the installation of PostgreSQL database. -In addition, config/hdpdeploy.properties need to be updated to the right account database details for a successful HDP installation. - -============== -Installing HDP -============== - -By running the following two commands HDP should be setup successfully. - -Steps: -1) Create the secrets used for this project setup - - kubectl create -f \hdp-server-deploy\secrets\hdp-secrets.yaml - - kubectl create -f \hdp-server-deploy\secrets\postgres-secrets.yaml -2) Setup HDP - helm install hdp-server-deploy hdp-server-deploy - -You can refer to the hdp-secrets.yaml for the HDP Admin and User passwords. The passwords are base64 encoded in the file. \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/charts/postgresql-13.4.4.tgz b/charts/BasicDeployment/hdp-server-deploy/charts/postgresql-13.4.4.tgz deleted file mode 100644 index ef982e19de2b619d587a50d02818c3ea03dc4c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67132 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 diff --git a/charts/BasicDeployment/hdp-server-deploy/config/hdpdeploy.properties b/charts/BasicDeployment/hdp-server-deploy/config/hdpdeploy.properties deleted file mode 100644 index 5a79d14..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/config/hdpdeploy.properties +++ /dev/null @@ -1,189 +0,0 @@ -; This properties file is used to configure a Docker deployment of Hybrid Data -; Pipeline (HDP). Specify values for each property to suit your environment. A -; number of values can be set using environment variables. Environment variables -; must be specified in the Docker run command used to deploy the service. For -; example: -; docker run -dt -p 8080:8080 -p 8443:8443 -e "ACCEPT_EULA=true" -; -v /opt/hdpshare:/hdpshare --hostname hdp1 --name hdp1 -; --network hdp-net %HDP_DOCKER_IMAGE% -; -e HDP_USER_PASSWORD=MyHDPUserPassword -; -e HDP_ADMIN_PASSWORD=MyHDPAdminPassword -; The names of supported environment variables match the names of the properties -; in this file. For more information about using environment variables, refer to -; "Using environment variables for server and system database credentials": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/Using-environment-variables-for-server-and-system-database-credentials.html - -; HDP server hostname -; ------------------- -; The fully qualified hostname of the HDP server. In a Docker deployment, the -; hostname is the name of the Docker container host. If a hostname is not -; supplied, the Docker image will attempt to detect it. -HDP_SERVER= - -; HDP SSL certificate -; ------------------- -; The name of the SSL certificate file used by the HDP server to establish SSL -; connections with ODBC and JDBC client applications. The certificate file must -; be placed in the shared volume. (NOTE: The default location of the shared -; volume for each demo is C:\hdpshare.) The value provided depends on whether -; you are deploying HDP as a cluster or as a standalone node. -; For cluster deployments, the specified file must be the root certificate used -; to sign the certificate for the load balancer server. PEM, DER, and Base64 -; encodings are supported. -; For standalone deployments, you have two options. -; (1) Leave blank to use the self-signed certificate included with the -; deployment. -; (2) Specify the SSL certificate in PEM file format. The PEM file must consist -; of a private key, a public key certificate issued by a certificate authority -; (CA), and additional certificates that make up the trust chain. -; For more information about creating a PEM file, refer to "The PEM file": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/The-PEM-file.html. -HDP_SERVER_CERT_FILE= - -; System database properties -; ========================== -; An external system database is required for this Docker deployment of HDP. -; For supported databases and requirements, refer to "External system -; databases": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/External-system-databases.html. -; The following properties are used to configure the external database. Several -; properties are specific to the database vendor. - -; Required. The hostname of the system database. -; NOTE: If you are locally deploying the system database as a Docker container, -; the hostname does not resolve correctly if set to 'localhost'. Instead, you -; must use use the Docker-specific lookup name 'host.docker.internal'. -HDP_DATABASE_HOSTNAME={{.Values.hdp.deploy.properties.HDP_DATABASE_HOSTNAME}} - -; Required. The port of the system database. -HDP_DATABASE_PORT={{.Values.hdp.deploy.properties.HDP_DATABASE_PORT}} - -; Required for PostgreSQL and MySQL databases. The name of the system database. -HDP_DATABASE_NAME={{.Values.hdp.deploy.properties.HDP_DATABASE_NAME}} - -; Required. The name of the system database vendor. -; Valid values include: oracle | mssqlserver | postgresql | mysqlcommunity -HDP_DATABASE_VENDOR={{.Values.hdp.deploy.properties.HDP_DATABASE_VENDOR}} - -; Required if you are using a MySQL Community Edition system database. The -; MySQL Connector/J jar file must be placed in the hdpshare volume, and the name -; of the jar file must be specified with this property. -HDP_MYSQL_DRIVER= - -; Required if you are using an Oracle system database with the Oracle System -; Identifier (SID). Specify the SID for this property. Otherwise, leave this -; property blank. -HDP_ORACLE_SID= - -; Required if you are using an Oracle system database with the service name. For -; this property, provide the database service name that specifies the database -; that is used for the connection. The service name is a string that is the -; global database name. The global database name typically comprises the -; database name and domain name. Otherwise, leave this property blank. -HDP_ORACLE_SERVICE_NAME= - -; Required if you are using a SQL Server system database. Provide the name of -; the SQL Server database schema. -HDP_SQLSERVER_SCHEMA= - -; Additional connection parameters may be included in the database connection -; URL. For supported parameters, refer to the data store topic associated with -; your system database in the HDP user's guide: -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-46/page/Supported-data-stores.html -; Parameters should be provided as a list of key-value pairs. For a MySQL -; Community database, the key-value pairs should be separated by an ampersand. -; For other databases, the key-value pairs should be separated by a semicolon. -HDP_DATABASE_ADVANCED_OPTIONS= - -; Required but may be set as an environment variable. The name of the database -; user without administrator privileges. Required privileges depend on the type -; of database you are using. For details on required privileges, refer to -; "External system databases": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/External-system-databases.html. -HDP_DATABASE_USER={{ include "hdp-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbUser") | trim }} - -; Required but may be set as an environment variable. The password of the -; database user without administrator privileges. -HDP_DATABASE_USER_PASSWORD={{ include "hdp-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbUserPwd") | trim }} - -; Required but may be set as an environment variable. The name of the database -; user with administrator privileges. Required privileges depend on the type of -; database you are using. For details on required privileges, refer to "External -; system databases": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/External-system-databases.html. -HDP_DATABASE_ADMIN={{ include "hdp-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbAdmin") | trim }} - -; Required but may be set as an environment variable. The password of the -; database user with administrator privileges. -HDP_DATABASE_ADMIN_PASSWORD={{ include "hdp-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbAdminPwd") | trim }} - -; On-Premises Connector -; --------------------- -; Specify 'yes' if you plan to deploy the On-Premises Connector. -; Specify 'no' if you are not deploying the On-Premises Connector. -; If 'yes' is specified, the HDP server uses the On-Premises Access Port (40501) -; and the Notification Server Port (11443) to communicate with the On-Premises -; Connector. These ports must be made available across the firewall. The default -; value is 'yes'. -HDP_ENABLE_ONPREMISE_CONNECTOR=no - -; HDP Logon credentials -; ===================== -; HDP provides the default d2cadmin and d2cuser accounts. You must specify -; passwords for each of these accounts with the following properties. - -; Required but may be set as an environment variable. The password for the -; default administrator account. -HDP_ADMIN_PASSWORD={{ include "hdp-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpAdminPwd") | trim }} - -; Required but may be set as an environment variable. The password for the -; default user account. -HDP_USER_PASSWORD={{ include "hdp-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpUserPwd") | trim }} - -; Load balancer -; ------------- -; Required. Indicates whether or not a load balancer is being used. -; Valid values: none | tunnel | websocket -; * 'none' should be specified for standalone deployments. -; * 'tunnel' should be specified for load balancer routing using tunneling. -; Tunneling is generally used for network load balancing. -; * 'websocket' should be specified for load balancer routing using the -; WebSocket protocol. The WebSocket protocol is generally used for load -; balancing when using a hosted service such as AWS or Azure. -HDP_LOAD_BALANCER_TYPE=none - -; Load balancer name -; ------------------ -; Required if a load balancer is being used. The hostname or IP address of the -; machine where the load balancer is running. -HDP_LOAD_BALANCER_HOST_NAME= - -; License key -; ----------- -; Leave blank to deploy an evaluation version of the product. -; Provide a valid license key to deploy a licensed version of the product. -HDP_LICENSE_KEY= - -; FIPS configuration -; ------------------ -; Specify 'yes' to configure the server to be FIPS compliant. -; Specify 'no' if the server will not use FIPS. -; The default value is 'no'. -; For more information on FIPS requirements, refer to "FIPS (Federal Information -; Processing Standard)": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-46/page/FIPS-Federal-Information-Processing-Standard.html -HDP_ENABLE_FIPS= - -; JVM heap size -; ============= -; JVM heap size properties may be specified if you need to limit the memory -; allocated to HDP nodes. Specifying heap size may be particularly useful when -; running multiple Docker nodes on a single host machine. - -; The initial JVM heap size in megabytes. The default is 4096 megabytes. -HDP_HEAP_INITIAL= - -; The maximum JVM heap size in megabytes. This value cannot be less than the -; initial JVM heap size. The default value is the value specified for the -; HDP_HEAP_INITIAL property. -HDP_HEAP_MAX= \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/secrets/hdp-secrets.yaml b/charts/BasicDeployment/hdp-server-deploy/secrets/hdp-secrets.yaml deleted file mode 100644 index 0730d6d..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/secrets/hdp-secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: hdp-secrets -data: - hdpDbUser: cGd1c2Vy - hdpDbUserPwd: dXNlcjEyMzQ= - hdpDbAdmin: cGdhZG1pbg== - hdpDbAdminPwd: YWRtaW4xMjM0 - hdpAdminPwd: ZDJjYWRtaW4= - hdpUserPwd: ZDJjdXNlcg== diff --git a/charts/BasicDeployment/hdp-server-deploy/secrets/postgres-secrets.yaml b/charts/BasicDeployment/hdp-server-deploy/secrets/postgres-secrets.yaml deleted file mode 100644 index 8c563c9..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/secrets/postgres-secrets.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: postgres-secrets -data: - postgres.db.name: cG9zdGdyZXM= - postgres.db.username: cG9zdGdyZXM= - postgres.db.password: ZG9ja2Vy - postgres.hdp.pgadmin.user: cGdhZG1pbg== - postgres.hdp.pgadmin.pwd: YWRtaW4xMjM0 - postgres.hdp.pguser.user: cGd1c2Vy - postgres.hdp.pguser.pwd: dXNlcjEyMzQ= \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/templates/NOTES.txt b/charts/BasicDeployment/hdp-server-deploy/templates/NOTES.txt deleted file mode 100644 index 431fe80..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/templates/NOTES.txt +++ /dev/null @@ -1,8 +0,0 @@ - -Access Hybrid Data Pipeline (HDP) using https://:8443>/hdpui or http://:8080>/hdpui - -To know the EXTERNAL-IP for the hdp-service, run the following command -kubectl get svc - -There are two users created by default named d2cadmin and d2cuser. -The passwords are created as part of hdpsecrets with the keys hdpAdminPwd and hdpUserPwd. \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/templates/_helpers.tpl b/charts/BasicDeployment/hdp-server-deploy/templates/_helpers.tpl deleted file mode 100644 index e3dd127..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/templates/_helpers.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "hdp-server-deploy.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "hdp-server-deploy.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "hdp-server-deploy.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "hdp-server-deploy.labels" -}} -helm.sh/chart: {{ include "hdp-server-deploy.chart" . }} -{{ include "hdp-server-deploy.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "hdp-server-deploy.selectorLabels" -}} -app.kubernetes.io/name: {{ include "hdp-server-deploy.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "hdp-server-deploy.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "hdp-server-deploy.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - -{{/* -Helper function to retrieve a value from a Kubernetes Secret -Arguments in Order - namespace, secretname, secretkey -Usage: {{ include "hdp-server-deploy.secretValue" (list "default" "hdp-secrets" "userpwd") | trim | b64dec}} -*/}} -{{- define "hdp-server-deploy.secretValue" -}} -{{- $namespace := index . 0 }} -{{- $secretName := index . 1 }} -{{- $key := index . 2 }} -{{- $existingSecret := (lookup "v1" "Secret" $namespace $secretName) }} -{{- if $existingSecret.data }} -{{- $userPassword := index $existingSecret.data $key}} -{{ $userPassword | b64dec}} -{{- end -}} -{{- end }} diff --git a/charts/BasicDeployment/hdp-server-deploy/templates/hdp-common-pvc.yaml b/charts/BasicDeployment/hdp-server-deploy/templates/hdp-common-pvc.yaml deleted file mode 100644 index b047e76..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/templates/hdp-common-pvc.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: hdp-common-pvc - annotations: - "helm.sh/resource-policy": keep -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: {{.Values.hdp.resources.storage.size}} - storageClassName: azurefile-csi \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/templates/hdpService.yaml b/charts/BasicDeployment/hdp-server-deploy/templates/hdpService.yaml deleted file mode 100644 index cbb266a..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/templates/hdpService.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: hdp-service - namespace: default -spec: - type: LoadBalancer - selector: - hdp: test - ports: - - name: http - port: {{.Values.hdp.ports.http.containerPort}} - targetPort: {{.Values.hdp.ports.http.containerPort}} - nodePort: {{.Values.hdp.ports.http.nodePort}} - - name: https - port: {{.Values.hdp.ports.https.containerPort}} - targetPort: {{.Values.hdp.ports.https.containerPort}} - nodePort: {{.Values.hdp.ports.https.nodePort}} - sessionAffinity: ClientIP - sessionAffinityConfig: - clientIP: - timeoutSeconds: 86400 \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/templates/hdpStatefulset.yaml b/charts/BasicDeployment/hdp-server-deploy/templates/hdpStatefulset.yaml deleted file mode 100644 index 5921a6a..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/templates/hdpStatefulset.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: hdp - namespace: default -spec: - replicas: 1 - selector: - matchLabels: - hdp: test - template: - metadata: - labels: - hdp: test - spec: - initContainers: - - name: init-hdpdeployprops - image: {{.Values.hdp.image.repository}} - command: ["/bin/sh", "-c", "mkdir -p /hdpshare && cp /hdpdeployprops/hdpdeploy.properties /hdpshare/ && echo \'Config Map mounted and hdpdeploy.properties copied to /hdpshare!\'"] - volumeMounts: - - name: hdpdeployprops - mountPath: /hdpdeployprops - - name: common-storage - mountPath: /hdpshare - containers: - - name: kube-hdp - image: {{.Values.hdp.image.repository}} - ports: - - name: http - containerPort: {{.Values.hdp.ports.http.containerPort}} - - name: https - containerPort: {{.Values.hdp.ports.https.containerPort}} - env: - - name: ACCEPT_EULA - value: "true" - volumeMounts: - - name: hdpdeployprops - mountPath: /hdpdeployprops - - name: common-storage - mountPath: {{ .Values.hdp.deploy.mountPath }} - volumes: - - name: common-storage - persistentVolumeClaim: - claimName: hdp-common-pvc - - name: hdpdeployprops - configMap: - name: hdpdeploy-configmap \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/templates/hdpdeploy-configmap.yaml b/charts/BasicDeployment/hdp-server-deploy/templates/hdpdeploy-configmap.yaml deleted file mode 100644 index 3ae6620..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/templates/hdpdeploy-configmap.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: hdpdeploy-configmap -data: - hdpdeploy.properties: |- -{{ tpl (.Files.Get "config/hdpdeploy.properties") . | indent 4 }} \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/templates/postgres-init-sql.yaml b/charts/BasicDeployment/hdp-server-deploy/templates/postgres-init-sql.yaml deleted file mode 100644 index bcfbdeb..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/templates/postgres-init-sql.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Creates the initial script to setup the PostgresSQL Database for HDP as an external Account Database -# Expects the secrets to be created prior to setup the ConfigMap -{{- if (.Values.postgres.enabled) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: postgres-initsql -data: - init.sh: |- - set -e - export PGPASSWORD='{{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.db.password") | trim }}' - psql -v ON_ERROR_STOP=1 --username {{.Values.postgres.init.postgres_user}} --dbname {{.Values.postgres.init.dbname}} <<-EOSQL - create database {{.Values.postgres.hdp.dbname}}; - create user {{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.user") | trim }} with PASSWORD '{{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.pwd") | trim }}'; - create user {{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.user") | trim }} with PASSWORD '{{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.pwd") | trim }}'; - EOSQL - psql -v ON_ERROR_STOP=1 --username {{.Values.postgres.init.postgres_user}} --dbname {{.Values.postgres.hdp.dbname}} <<-EOSQL - create schema {{.Values.postgres.hdp.schemaname}} authorization {{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.user") | trim }}; - create extension citext with schema {{.Values.postgres.hdp.schemaname}}; - grant usage on schema {{.Values.postgres.hdp.schemaname}} to {{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.user") | trim }}; - alter user {{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.user") | trim }} SET search_path TO {{.Values.postgres.hdp.schemaname}}; - alter user {{ include "hdp-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.user") | trim }} SET search_path TO {{.Values.postgres.hdp.schemaname}}; - EOSQL -{{- end }} \ No newline at end of file diff --git a/charts/BasicDeployment/hdp-server-deploy/values.yaml b/charts/BasicDeployment/hdp-server-deploy/values.yaml deleted file mode 100644 index ad62f2b..0000000 --- a/charts/BasicDeployment/hdp-server-deploy/values.yaml +++ /dev/null @@ -1,40 +0,0 @@ -hdp: - image: - repository: dcihdp.azurecr.io/hdp-docker-4.6.1:2057 - ports: - http: - containerPort: 8080 - nodePort: 30080 - https: - containerPort: 8443 - nodePort: 30443 - deploy: - properties: - HDP_DATABASE_HOSTNAME: hdp-server-deploy-postgresql.default.svc.cluster.local - HDP_DATABASE_PORT: 5432 - HDP_DATABASE_NAME: hdp - HDP_DATABASE_VENDOR: postgresql - mountPath: /hdpshare - resources: - storage: - size: 1Gi -postgres: - enabled: true - init: - postgres_user: postgres - dbname: postgres - hdp: - schemaname: hdp - dbname: hdp -postgresql: - global: - postgresql: - auth: - existingSecret: "postgres-secrets" - secretKeys: - adminPasswordKey: "postgres.db.password" - primary: - initdb: - scriptsConfigMap: "postgres-initsql" - persistence: - size: 2Gi \ No newline at end of file diff --git a/charts/LBDeployment/.project b/charts/LBDeployment/.project new file mode 100644 index 0000000..b968f82 --- /dev/null +++ b/charts/LBDeployment/.project @@ -0,0 +1,11 @@ + + + LBDeployment + + + + + + + + diff --git a/charts/LBDeployment/haproxy-deploy/.helmignore b/charts/LBDeployment/haproxy-deploy/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/charts/LBDeployment/haproxy-deploy/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/LBDeployment/haproxy-deploy/Chart.yaml b/charts/LBDeployment/haproxy-deploy/Chart.yaml deleted file mode 100644 index 750eefd..0000000 --- a/charts/LBDeployment/haproxy-deploy/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -name: haproxy-deploy -description: A Helm chart for Kubernetes that deploys haproxy - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.2 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "1.11.0" -dependencies: - - name: kubernetes-ingress - version: "^1.38.2" - repository: https://haproxytech.github.io/helm-charts/ diff --git a/charts/LBDeployment/haproxy-deploy/ReadMe.txt b/charts/LBDeployment/haproxy-deploy/ReadMe.txt deleted file mode 100644 index ba6400f..0000000 --- a/charts/LBDeployment/haproxy-deploy/ReadMe.txt +++ /dev/null @@ -1,43 +0,0 @@ -======== -Overview -======== - -This HELM project wraps Haproxy Ingress Controller helm chart as a dependency, when installed - this will setup a HAProxy Ingress Controller with two pods and a service. - -To build this project, run - - helm dep up hdp-lb-server-deploy - -This will download the chart to /charts directory. - -The .values.yaml has the basic configuration needed for the HAProxy Ingress Controller HELM project setup. Based on the need, values can be finetuned further. - -Refer to this wiki page for more details - https://progresssoftware.atlassian.net/wiki/spaces/DataDirectRandD/pages/541753550/Deploying+HDP+Server+on+Azure+Kubernetes+Service+AKS - -================ -Steps to Install -================ - -helm install haproxy-deploy haproxy-deploy --namespace haproxy-controller -create-namespace -f values.yaml - -This would install necessary resources, to get the external IP for the HAProxy Controller Service, -run the command kubectl get svc and check the External - IP column. - -'A' record should be mapped to this IP address for the valid dns hostname in a valid dns zone. - -As an example, this is the default dns zone offerred by Azure AKS accessible over public internet. -To access HDP would be something like - http://hdp.2565fbe255034c49a07b.eastus.aksapp.io/ - -================ -Useful Commands -================ - -helm install haproxy-deploy haproxy-deploy --namespace haproxy-controller --create-namespace -f values.yaml - -helm list --namespace haproxy-controller - -kubectl get svc --namespace haproxy-controller - -kubectl get pods --namespace haproxy-controller - -helm uninstall haproxy-deploy --namespace haproxy-controller - diff --git a/charts/LBDeployment/haproxy-deploy/templates/NOTES.txt b/charts/LBDeployment/haproxy-deploy/templates/NOTES.txt deleted file mode 100644 index e69de29..0000000 diff --git a/charts/LBDeployment/haproxy-deploy/templates/_helpers.tpl b/charts/LBDeployment/haproxy-deploy/templates/_helpers.tpl deleted file mode 100644 index b248920..0000000 --- a/charts/LBDeployment/haproxy-deploy/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "haproxy-deploy.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "haproxy-deploy.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "haproxy-deploy.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "haproxy-deploy.labels" -}} -helm.sh/chart: {{ include "haproxy-deploy.chart" . }} -{{ include "haproxy-deploy.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "haproxy-deploy.selectorLabels" -}} -app.kubernetes.io/name: {{ include "haproxy-deploy.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "haproxy-deploy.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "haproxy-deploy.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/charts/LBDeployment/haproxy-deploy/values.yaml b/charts/LBDeployment/haproxy-deploy/values.yaml deleted file mode 100644 index d4d83dc..0000000 --- a/charts/LBDeployment/haproxy-deploy/values.yaml +++ /dev/null @@ -1,8 +0,0 @@ -kubernetes-ingress: - controller: - ingressClass: "haproxy" - service: - type: "LoadBalancer" - externalTrafficPolicy: Local - annotations: - service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: "/healthz" \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/.helmignore b/charts/LBDeployment/hdp-lb-server-deploy/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/LBDeployment/hdp-lb-server-deploy/Chart.yaml b/charts/LBDeployment/hdp-lb-server-deploy/Chart.yaml deleted file mode 100644 index 542a183..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -name: hdp-lb-server-deploy -description: A Helm chart for Kubernetes - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.1 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "4.6.1" -dependencies: - - name: postgresql - version: "^13.2.30" - repository: https://charts.bitnami.com/bitnami - condition: postgres.enabled \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/ReadMe.txt b/charts/LBDeployment/hdp-lb-server-deploy/ReadMe.txt deleted file mode 100644 index 026146c..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/ReadMe.txt +++ /dev/null @@ -1,41 +0,0 @@ -======== -Overview -======== - -This HELM project wraps PostgreSQL helm chart as a dependency, when installed - this will setup a PostgreSQL database. - -To build this project, run - - helm dep up hdp-lb-server-deploy - -This will download the chart to /charts - -The .values.yaml has the defaults for the HAProxy HELM project setup. Based on the need, values can be finetuned. - -Note: This project does not configure the Ingress Controller to run over SSL yet. - -================ -Steps to Install -================ - -helm install hdp-lb-server-deploy hdp-lb-server-deploy --namespace hdp-deployment -create-namespace -f values.yaml - -This would install necessary resources. - -================ -Useful Commands -================ - -helm install hdp-lb-server-deploy hdp-lb-server-deploy --namespace hdp-deployment --create-namespace -f values.yaml - -helm list --namespace hdp-deployment - -kubectl get svc --namespace hdp-deployment - -kubectl get pods --namespace hdp-deployment - -kubectl logs hdp-0 --namespace hdp-deployment - -kubectl exec -it hdp-0 --namespace hdp-deployment -- bash - -helm uninstall hdp-lb-server-deploy --namespace hdp-deployment - diff --git a/charts/LBDeployment/hdp-lb-server-deploy/config/hdpdeploy.properties b/charts/LBDeployment/hdp-lb-server-deploy/config/hdpdeploy.properties deleted file mode 100644 index 5b039ee..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/config/hdpdeploy.properties +++ /dev/null @@ -1,189 +0,0 @@ -; This properties file is used to configure a Docker deployment of Hybrid Data -; Pipeline (HDP). Specify values for each property to suit your environment. A -; number of values can be set using environment variables. Environment variables -; must be specified in the Docker run command used to deploy the service. For -; example: -; docker run -dt -p 8080:8080 -p 8443:8443 -e "ACCEPT_EULA=true" -; -v /opt/hdpshare:/hdpshare --hostname hdp1 --name hdp1 -; --network hdp-net %HDP_DOCKER_IMAGE% -; -e HDP_USER_PASSWORD=MyHDPUserPassword -; -e HDP_ADMIN_PASSWORD=MyHDPAdminPassword -; The names of supported environment variables match the names of the properties -; in this file. For more information about using environment variables, refer to -; "Using environment variables for server and system database credentials": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/Using-environment-variables-for-server-and-system-database-credentials.html - -; HDP server hostname -; ------------------- -; The fully qualified hostname of the HDP server. In a Docker deployment, the -; hostname is the name of the Docker container host. If a hostname is not -; supplied, the Docker image will attempt to detect it. -HDP_SERVER=hdp-server-app-headless - -; HDP SSL certificate -; ------------------- -; The name of the SSL certificate file used by the HDP server to establish SSL -; connections with ODBC and JDBC client applications. The certificate file must -; be placed in the shared volume. (NOTE: The default location of the shared -; volume for each demo is C:\hdpshare.) The value provided depends on whether -; you are deploying HDP as a cluster or as a standalone node. -; For cluster deployments, the specified file must be the root certificate used -; to sign the certificate for the load balancer server. PEM, DER, and Base64 -; encodings are supported. -; For standalone deployments, you have two options. -; (1) Leave blank to use the self-signed certificate included with the -; deployment. -; (2) Specify the SSL certificate in PEM file format. The PEM file must consist -; of a private key, a public key certificate issued by a certificate authority -; (CA), and additional certificates that make up the trust chain. -; For more information about creating a PEM file, refer to "The PEM file": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/The-PEM-file.html. -HDP_SERVER_CERT_FILE= - -; System database properties -; ========================== -; An external system database is required for this Docker deployment of HDP. -; For supported databases and requirements, refer to "External system -; databases": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/External-system-databases.html. -; The following properties are used to configure the external database. Several -; properties are specific to the database vendor. - -; Required. The hostname of the system database. -; NOTE: If you are locally deploying the system database as a Docker container, -; the hostname does not resolve correctly if set to 'localhost'. Instead, you -; must use use the Docker-specific lookup name 'host.docker.internal'. -HDP_DATABASE_HOSTNAME={{.Values.hdp.deploy.properties.HDP_DATABASE_HOSTNAME}} - -; Required. The port of the system database. -HDP_DATABASE_PORT={{.Values.hdp.deploy.properties.HDP_DATABASE_PORT}} - -; Required for PostgreSQL and MySQL databases. The name of the system database. -HDP_DATABASE_NAME={{.Values.hdp.deploy.properties.HDP_DATABASE_NAME}} - -; Required. The name of the system database vendor. -; Valid values include: oracle | mssqlserver | postgresql | mysqlcommunity -HDP_DATABASE_VENDOR={{.Values.hdp.deploy.properties.HDP_DATABASE_VENDOR}} - -; Required if you are using a MySQL Community Edition system database. The -; MySQL Connector/J jar file must be placed in the hdpshare volume, and the name -; of the jar file must be specified with this property. -HDP_MYSQL_DRIVER= - -; Required if you are using an Oracle system database with the Oracle System -; Identifier (SID). Specify the SID for this property. Otherwise, leave this -; property blank. -HDP_ORACLE_SID= - -; Required if you are using an Oracle system database with the service name. For -; this property, provide the database service name that specifies the database -; that is used for the connection. The service name is a string that is the -; global database name. The global database name typically comprises the -; database name and domain name. Otherwise, leave this property blank. -HDP_ORACLE_SERVICE_NAME= - -; Required if you are using a SQL Server system database. Provide the name of -; the SQL Server database schema. -HDP_SQLSERVER_SCHEMA= - -; Additional connection parameters may be included in the database connection -; URL. For supported parameters, refer to the data store topic associated with -; your system database in the HDP user's guide: -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-46/page/Supported-data-stores.html -; Parameters should be provided as a list of key-value pairs. For a MySQL -; Community database, the key-value pairs should be separated by an ampersand. -; For other databases, the key-value pairs should be separated by a semicolon. -HDP_DATABASE_ADVANCED_OPTIONS= - -; Required but may be set as an environment variable. The name of the database -; user without administrator privileges. Required privileges depend on the type -; of database you are using. For details on required privileges, refer to -; "External system databases": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/External-system-databases.html. -HDP_DATABASE_USER={{ include "hdp-lb-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbUser") | trim }} - -; Required but may be set as an environment variable. The password of the -; database user without administrator privileges. -HDP_DATABASE_USER_PASSWORD={{ include "hdp-lb-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbUserPwd") | trim }} - -; Required but may be set as an environment variable. The name of the database -; user with administrator privileges. Required privileges depend on the type of -; database you are using. For details on required privileges, refer to "External -; system databases": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/External-system-databases.html. -HDP_DATABASE_ADMIN={{ include "hdp-lb-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbAdmin") | trim }} - -; Required but may be set as an environment variable. The password of the -; database user with administrator privileges. -HDP_DATABASE_ADMIN_PASSWORD={{ include "hdp-lb-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpDbAdminPwd") | trim }} - -; On-Premises Connector -; --------------------- -; Specify 'yes' if you plan to deploy the On-Premises Connector. -; Specify 'no' if you are not deploying the On-Premises Connector. -; If 'yes' is specified, the HDP server uses the On-Premises Access Port (40501) -; and the Notification Server Port (11443) to communicate with the On-Premises -; Connector. These ports must be made available across the firewall. The default -; value is 'yes'. -HDP_ENABLE_ONPREMISE_CONNECTOR=yes - -; HDP Logon credentials -; ===================== -; HDP provides the default d2cadmin and d2cuser accounts. You must specify -; passwords for each of these accounts with the following properties. - -; Required but may be set as an environment variable. The password for the -; default administrator account. -HDP_ADMIN_PASSWORD={{ include "hdp-lb-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpAdminPwd") | trim }} - -; Required but may be set as an environment variable. The password for the -; default user account. -HDP_USER_PASSWORD={{ include "hdp-lb-server-deploy.secretValue" (list "default" "hdp-secrets" "hdpUserPwd") | trim }} - -; Load balancer -; ------------- -; Required. Indicates whether or not a load balancer is being used. -; Valid values: none | tunnel | websocket -; * 'none' should be specified for standalone deployments. -; * 'tunnel' should be specified for load balancer routing using tunneling. -; Tunneling is generally used for network load balancing. -; * 'websocket' should be specified for load balancer routing using the -; WebSocket protocol. The WebSocket protocol is generally used for load -; balancing when using a hosted service such as AWS or Azure. -HDP_LOAD_BALANCER_TYPE=cloud - -; Load balancer name -; ------------------ -; Required if a load balancer is being used. The hostname or IP address of the -; machine where the load balancer is running. -HDP_LOAD_BALANCER_HOST_NAME=hdplb.hdpaks.com - -; License key -; ----------- -; Leave blank to deploy an evaluation version of the product. -; Provide a valid license key to deploy a licensed version of the product. -HDP_LICENSE_KEY= - -; FIPS configuration -; ------------------ -; Specify 'yes' to configure the server to be FIPS compliant. -; Specify 'no' if the server will not use FIPS. -; The default value is 'no'. -; For more information on FIPS requirements, refer to "FIPS (Federal Information -; Processing Standard)": -; https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-46/page/FIPS-Federal-Information-Processing-Standard.html -HDP_ENABLE_FIPS= - -; JVM heap size -; ============= -; JVM heap size properties may be specified if you need to limit the memory -; allocated to HDP nodes. Specifying heap size may be particularly useful when -; running multiple Docker nodes on a single host machine. - -; The initial JVM heap size in megabytes. The default is 4096 megabytes. -HDP_HEAP_INITIAL= - -; The maximum JVM heap size in megabytes. This value cannot be less than the -; initial JVM heap size. The default value is the value specified for the -; HDP_HEAP_INITIAL property. -HDP_HEAP_MAX= \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/secrets/hdp-secrets.yaml b/charts/LBDeployment/hdp-lb-server-deploy/secrets/hdp-secrets.yaml deleted file mode 100644 index 0730d6d..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/secrets/hdp-secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: hdp-secrets -data: - hdpDbUser: cGd1c2Vy - hdpDbUserPwd: dXNlcjEyMzQ= - hdpDbAdmin: cGdhZG1pbg== - hdpDbAdminPwd: YWRtaW4xMjM0 - hdpAdminPwd: ZDJjYWRtaW4= - hdpUserPwd: ZDJjdXNlcg== diff --git a/charts/LBDeployment/hdp-lb-server-deploy/secrets/postgres-secrets.yaml b/charts/LBDeployment/hdp-lb-server-deploy/secrets/postgres-secrets.yaml deleted file mode 100644 index 8c563c9..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/secrets/postgres-secrets.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: postgres-secrets -data: - postgres.db.name: cG9zdGdyZXM= - postgres.db.username: cG9zdGdyZXM= - postgres.db.password: ZG9ja2Vy - postgres.hdp.pgadmin.user: cGdhZG1pbg== - postgres.hdp.pgadmin.pwd: YWRtaW4xMjM0 - postgres.hdp.pguser.user: cGd1c2Vy - postgres.hdp.pguser.pwd: dXNlcjEyMzQ= \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/NOTES.txt b/charts/LBDeployment/hdp-lb-server-deploy/templates/NOTES.txt deleted file mode 100644 index e69de29..0000000 diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/_helpers.tpl b/charts/LBDeployment/hdp-lb-server-deploy/templates/_helpers.tpl deleted file mode 100644 index b4328a8..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/_helpers.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "hdp-lb-server-deploy.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "hdp-lb-server-deploy.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "hdp-lb-server-deploy.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "hdp-lb-server-deploy.labels" -}} -helm.sh/chart: {{ include "hdp-lb-server-deploy.chart" . }} -{{ include "hdp-lb-server-deploy.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "hdp-lb-server-deploy.selectorLabels" -}} -app.kubernetes.io/name: {{ include "hdp-lb-server-deploy.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "hdp-lb-server-deploy.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "hdp-lb-server-deploy.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - -{{/* -Helper function to retrieve a value from a Kubernetes Secret -Arguments in Order - namespace, secretname, secretkey -Usage: {{ include "hdp-lb-server-deploy.secretValue" (list "default" "hdp-secrets" "userpwd") | trim | b64dec}} -*/}} -{{- define "hdp-lb-server-deploy.secretValue" -}} -{{- $namespace := index . 0 }} -{{- $secretName := index . 1 }} -{{- $key := index . 2 }} -{{- $existingSecret := (lookup "v1" "Secret" $namespace $secretName) }} -{{- if $existingSecret.data }} -{{- $userPassword := index $existingSecret.data $key}} -{{ $userPassword | b64dec}} -{{- end -}} -{{- end }} diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/haproxy-ingress.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/haproxy-ingress.yaml deleted file mode 100644 index ea5c7b1..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/haproxy-ingress.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - haproxy.org/affinity: "true" - haproxy.org/cookie-persistence: HDP-SESSION - haproxy.org/forwarded-for: "true" - haproxy.org/load-balance: roundrobin - haproxy.org/timeout-check: 5m - haproxy.org/timeout-server: 5m - ingress.class: haproxy - #kubernetes.io/ingress.class: addon-http-application-routing - name: hdp-ingress - namespace: default -spec: - ingressClassName: haproxy - rules: - - host: hdp.2565fbe255034c49a07b.eastus.aksapp.io - http: - paths: - - backend: - service: - name: hdp-server-app-headless - port: - number: 8080 - path: / - pathType: Prefix - - backend: - service: - name: hdp-notification-headless - port: - number: 11280 - path: /connect/X_DataDirect_Notification_Server - pathType: Prefix - - backend: - service: - name: hdp-opa-headless - port: - number: 40501 - path: /connect/opa_hdp-server-app-headless_40501 - pathType: Prefix - #tls: - #- hosts: - # - xxxxxxxx - # secretName: hdp-tls-secret \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-common-pvc.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-common-pvc.yaml deleted file mode 100644 index b047e76..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-common-pvc.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: hdp-common-pvc - annotations: - "helm.sh/resource-policy": keep -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: {{.Values.hdp.resources.storage.size}} - storageClassName: azurefile-csi \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-notification-service.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-notification-service.yaml deleted file mode 100644 index ac39fdc..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-notification-service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - haproxy.org/check: "true" - haproxy.org/check-http: HEAD / - haproxy.org/check-interval: 5m - haproxy.org/route-acl: path_end -i /connect/X_DataDirect_Notification_Server - name: hdp-notification-headless - namespace: default -spec: - ports: - - name: hdp-notification-headless - port: 11280 - protocol: TCP - targetPort: 11280 - selector: - app: hdp-server-app - sessionAffinity: None - type: ClusterIP \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-opc-service.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-opc-service.yaml deleted file mode 100644 index a821ca2..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-opc-service.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - haproxy.org/check: "true" - haproxy.org/check-http: HEAD / - haproxy.org/check-interval: 5m - haproxy.org/route-acl: path_end -i /connect/opa_hdp-server-app-headless_40501 - name: hdp-opa-headless - namespace: default -spec: - ports: - - name: hdp-opa - port: 40501 - protocol: TCP - targetPort: 40501 - selector: - app: hdp-server-app - type: ClusterIP \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-server-app-service.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-server-app-service.yaml deleted file mode 100644 index 975227a..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdp-server-app-service.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - haproxy.org/check: "true" - haproxy.org/check-http: HEAD /api/healthcheck - haproxy.org/check-interval: 5m - name: hdp-server-app-headless - namespace: default -spec: - #type: LoadBalancer - type: ClusterIP - ports: - - name: http - port: 8080 - targetPort: 8080 - selector: - app: hdp-server-app - sessionAffinity: ClientIP - sessionAffinityConfig: - clientIP: - timeoutSeconds: 86400 \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdpStatefulset.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/hdpStatefulset.yaml deleted file mode 100644 index ec14d02..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdpStatefulset.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: hdp - namespace: default -spec: - replicas: 1 - selector: - matchLabels: - app: hdp-server-app - template: - metadata: - labels: - app: hdp-server-app - spec: - initContainers: - - name: init-hdpdeployprops - image: {{.Values.hdp.image.repository}} - command: ["/bin/sh", "-c", "mkdir -p /hdpshare && cp /hdpdeployprops/hdpdeploy.properties /hdpshare/ && echo \'Config Map mounted and hdpdeploy.properties copied to /hdpshare!\'"] - volumeMounts: - - name: hdpdeployprops - mountPath: /hdpdeployprops - - name: common-storage - mountPath: /hdpshare - containers: - - name: kube-hdp - image: {{.Values.hdp.image.repository}} - ports: - - name: http - containerPort: {{.Values.hdp.ports.http.containerPort}} - - name: https - containerPort: {{.Values.hdp.ports.https.containerPort}} - env: - - name: ACCEPT_EULA - value: "true" - volumeMounts: - - name: hdpdeployprops - mountPath: /hdpdeployprops - - name: common-storage - mountPath: {{ .Values.hdp.deploy.mountPath }} - volumes: - - name: common-storage - persistentVolumeClaim: - claimName: hdp-common-pvc - - name: hdpdeployprops - configMap: - name: hdpdeploy-configmap \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdpdeploy-configmap.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/hdpdeploy-configmap.yaml deleted file mode 100644 index 3ae6620..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/hdpdeploy-configmap.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: hdpdeploy-configmap -data: - hdpdeploy.properties: |- -{{ tpl (.Files.Get "config/hdpdeploy.properties") . | indent 4 }} \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/templates/postgres-init-sql.yaml b/charts/LBDeployment/hdp-lb-server-deploy/templates/postgres-init-sql.yaml deleted file mode 100644 index a9acb0a..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/templates/postgres-init-sql.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if (.Values.postgres.enabled) }} -# Creates the initial script to setup the PostgresSQL Database for HDP as an external Account Database -# Expects the secrets to be created prior to setup the ConfigMap -apiVersion: v1 -kind: ConfigMap -metadata: - name: postgres-initsql -data: - init.sh: |- - set -e - export PGPASSWORD='{{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.db.password") | trim }}' - psql -v ON_ERROR_STOP=1 --username {{.Values.postgres.init.postgres_user}} --dbname {{.Values.postgres.init.dbname}} <<-EOSQL - create database {{.Values.postgres.hdp.dbname}}; - create user {{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.user") | trim }} with PASSWORD '{{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.pwd") | trim }}'; - create user {{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.user") | trim }} with PASSWORD '{{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.pwd") | trim }}'; - EOSQL - psql -v ON_ERROR_STOP=1 --username {{.Values.postgres.init.postgres_user}} --dbname {{.Values.postgres.hdp.dbname}} <<-EOSQL - create schema {{.Values.postgres.hdp.schemaname}} authorization {{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.user") | trim }}; - create extension citext with schema {{.Values.postgres.hdp.schemaname}}; - grant usage on schema {{.Values.postgres.hdp.schemaname}} to {{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.user") | trim }}; - alter user {{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pgadmin.user") | trim }} SET search_path TO {{.Values.postgres.hdp.schemaname}}; - alter user {{ include "hdp-lb-server-deploy.secretValue" (list "default" "postgres-secrets" "postgres.hdp.pguser.user") | trim }} SET search_path TO {{.Values.postgres.hdp.schemaname}}; - EOSQL -{{- end }} \ No newline at end of file diff --git a/charts/LBDeployment/hdp-lb-server-deploy/values.yaml b/charts/LBDeployment/hdp-lb-server-deploy/values.yaml deleted file mode 100644 index 180c745..0000000 --- a/charts/LBDeployment/hdp-lb-server-deploy/values.yaml +++ /dev/null @@ -1,40 +0,0 @@ -hdp: - image: - repository: dcihdp.azurecr.io/hdp-docker-4.6.1:2057 - ports: - http: - containerPort: 8080 - nodePort: 30080 - https: - containerPort: 8443 - nodePort: 30443 - deploy: - properties: - HDP_DATABASE_HOSTNAME: hdp-lb-server-deploy-postgresql.default.svc.cluster.local - HDP_DATABASE_PORT: 5432 - HDP_DATABASE_NAME: hdp - HDP_DATABASE_VENDOR: postgresql - mountPath: /hdpshare - resources: - storage: - size: 1Gi -postgres: - enabled: true - init: - postgres_user: postgres - dbname: postgres - hdp: - schemaname: hdp - dbname: hdp -postgresql: - global: - postgresql: - auth: - existingSecret: "postgres-secrets" - secretKeys: - adminPasswordKey: "postgres.db.password" - primary: - initdb: - scriptsConfigMap: "postgres-initsql" - persistence: - size: 1Gi \ No newline at end of file