@grucloud/module-k8s-crunchy-postgres
Version:
GruCloud Module for the Kubernetes Crunchy Data Postgres Operator
178 lines (172 loc) • 8.24 kB
JavaScript
// Generated by k8s-manifest2code from crunchy-postgres.yaml
const assert = require("assert");
exports.createResources = ({ provider }) => {
const pgopgoDeployerSaServiceAccount = provider.makeServiceAccount({
properties: () => ({
apiVersion: "v1",
metadata: {
name: "pgo-deployer-sa",
namespace: "pgo",
},
}),
});
const pgoDeployerCrClusterRole = provider.makeClusterRole({
properties: () => ({
apiVersion: "rbac.authorization.k8s.io/v1",
metadata: {
name: "pgo-deployer-cr",
},
rules: [
{
apiGroups: [""],
resources: ["namespaces"],
verbs: ["get", "list", "create", "patch", "delete"],
},
{
apiGroups: [""],
resources: ["pods"],
verbs: ["list"],
},
{
apiGroups: [""],
resources: ["secrets"],
verbs: ["list", "get", "create", "delete"],
},
{
apiGroups: [""],
resources: ["configmaps", "services", "persistentvolumeclaims"],
verbs: ["get", "create", "delete", "list"],
},
{
apiGroups: [""],
resources: ["serviceaccounts"],
verbs: ["get", "create", "delete", "patch", "list"],
},
{
apiGroups: ["apps", "extensions"],
resources: ["deployments", "replicasets"],
verbs: ["get", "list", "watch", "create", "delete"],
},
{
apiGroups: ["apiextensions.k8s.io"],
resources: ["customresourcedefinitions"],
verbs: ["get", "create", "delete"],
},
{
apiGroups: ["rbac.authorization.k8s.io"],
resources: [
"clusterroles",
"clusterrolebindings",
"roles",
"rolebindings",
],
verbs: ["get", "create", "delete", "bind", "escalate"],
},
{
apiGroups: ["rbac.authorization.k8s.io"],
resources: ["roles"],
verbs: ["create", "delete"],
},
{
apiGroups: ["batch"],
resources: ["jobs"],
verbs: ["delete", "list"],
},
{
apiGroups: ["crunchydata.com"],
resources: ["pgclusters", "pgreplicas", "pgpolicies", "pgtasks"],
verbs: ["delete", "list"],
},
],
}),
});
const pgopgoDeployerCmConfigMap = provider.makeConfigMap({
properties: () => ({
apiVersion: "v1",
metadata: {
name: "pgo-deployer-cm",
namespace: "pgo",
},
data: {
"values.yaml":
'# =====================\n# Configuration Options\n# More info for these options can be found in the docs\n# https://access.crunchydata.com/documentation/postgres-operator/latest/installation/configuration/\n# =====================\narchive_mode: "true"\narchive_timeout: "60"\nbackrest_aws_s3_bucket: ""\nbackrest_aws_s3_endpoint: ""\nbackrest_aws_s3_key: ""\nbackrest_aws_s3_region: ""\nbackrest_aws_s3_secret: ""\nbackrest_aws_s3_uri_style: ""\nbackrest_aws_s3_verify_tls: "true"\nbackrest_port: "2022"\nbadger: "false"\nccp_image_prefix: "registry.developers.crunchydata.com/crunchydata"\nccp_image_pull_secret: ""\nccp_image_pull_secret_manifest: ""\nccp_image_tag: "centos8-13.2-4.6.2"\ncreate_rbac: "true"\ncrunchy_debug: "false"\ndb_name: ""\ndb_password_age_days: "0"\ndb_password_length: "24"\ndb_port: "5432"\ndb_replicas: "0"\ndb_user: "testuser"\ndefault_instance_memory: "128Mi"\ndefault_pgbackrest_memory: "48Mi"\ndefault_pgbouncer_memory: "24Mi"\ndefault_exporter_memory: "24Mi"\ndelete_operator_namespace: "false"\ndelete_watched_namespaces: "false"\ndisable_auto_failover: "false"\ndisable_fsgroup: "false"\nreconcile_rbac: "true"\nexporterport: "9187"\nmetrics: "false"\nnamespace: "pgo"\nnamespace_mode: "dynamic"\npgbadgerport: "10000"\npgo_add_os_ca_store: "false"\npgo_admin_password: "examplepassword"\npgo_admin_perms: "*"\npgo_admin_role_name: "pgoadmin"\npgo_admin_username: "admin"\npgo_apiserver_port: "8443"\npgo_apiserver_url: "https://postgres-operator"\npgo_client_cert_secret: "pgo.tls"\npgo_client_container_install: "false"\npgo_client_install: "true"\npgo_client_version: "4.6.2"\npgo_cluster_admin: "false"\npgo_disable_eventing: "false"\npgo_disable_tls: "false"\npgo_image_prefix: "registry.developers.crunchydata.com/crunchydata"\npgo_image_pull_secret: ""\npgo_image_pull_secret_manifest: ""\npgo_image_tag: "centos8-4.6.2"\npgo_installation_name: "devtest"\npgo_noauth_routes: ""\npgo_operator_namespace: "pgo"\npgo_tls_ca_store: ""\npgo_tls_no_verify: "false"\npod_anti_affinity: "preferred"\npod_anti_affinity_pgbackrest: ""\npod_anti_affinity_pgbouncer: ""\nscheduler_timeout: "3600"\nservice_type: "ClusterIP"\nsync_replication: "false"\nbackrest_storage: "default"\nbackup_storage: "default"\nprimary_storage: "default"\nreplica_storage: "default"\nwal_storage: ""\nstorage1_name: "default"\nstorage1_access_mode: "ReadWriteOnce"\nstorage1_size: "1G"\nstorage1_type: "dynamic"\nstorage2_name: "hostpathstorage"\nstorage2_access_mode: "ReadWriteMany"\nstorage2_size: "1G"\nstorage2_type: "create"\nstorage3_name: "nfsstorage"\nstorage3_access_mode: "ReadWriteMany"\nstorage3_size: "1G"\nstorage3_type: "create"\nstorage3_supplemental_groups: "65534"\nstorage4_name: "nfsstoragered"\nstorage4_access_mode: "ReadWriteMany"\nstorage4_size: "1G"\nstorage4_match_labels: "crunchyzone=red"\nstorage4_type: "create"\nstorage4_supplemental_groups: "65534"\nstorage5_name: "storageos"\nstorage5_access_mode: "ReadWriteOnce"\nstorage5_size: "5Gi"\nstorage5_type: "dynamic"\nstorage5_class: "fast"\nstorage6_name: "primarysite"\nstorage6_access_mode: "ReadWriteOnce"\nstorage6_size: "4G"\nstorage6_type: "dynamic"\nstorage6_class: "primarysite"\nstorage7_name: "alternatesite"\nstorage7_access_mode: "ReadWriteOnce"\nstorage7_size: "4G"\nstorage7_type: "dynamic"\nstorage7_class: "alternatesite"\nstorage8_name: "gce"\nstorage8_access_mode: "ReadWriteOnce"\nstorage8_size: "300M"\nstorage8_type: "dynamic"\nstorage8_class: "standard"\nstorage9_name: "rook"\nstorage9_access_mode: "ReadWriteOnce"\nstorage9_size: "1Gi"\nstorage9_type: "dynamic"\nstorage9_class: "rook-ceph-block"',
},
}),
});
const pgoDeployerCrbClusterRoleBinding = provider.makeClusterRoleBinding({
properties: () => ({
apiVersion: "rbac.authorization.k8s.io/v1",
metadata: {
name: "pgo-deployer-crb",
},
roleRef: {
apiGroup: "rbac.authorization.k8s.io",
kind: "ClusterRole",
name: "pgo-deployer-cr",
},
subjects: [
{
kind: "ServiceAccount",
name: "pgo-deployer-sa",
namespace: "pgo",
},
],
}),
});
const pgopgoDeployJob = provider.makeJob({
properties: () => ({
apiVersion: "batch/v1",
metadata: {
name: "pgo-deploy",
namespace: "pgo",
},
spec: {
backoffLimit: 0,
template: {
metadata: {
name: "pgo-deploy",
},
spec: {
serviceAccountName: "pgo-deployer-sa",
restartPolicy: "Never",
containers: [
{
name: "pgo-deploy",
image:
"registry.developers.crunchydata.com/crunchydata/pgo-deployer:centos8-4.6.2",
imagePullPolicy: "IfNotPresent",
env: [
{
name: "DEPLOY_ACTION",
value: "install",
},
],
volumeMounts: [
{
name: "deployer-conf",
mountPath: "/conf",
},
],
},
],
volumes: [
{
name: "deployer-conf",
configMap: {
name: "pgo-deployer-cm",
},
},
],
},
},
},
}),
});
return {
pgopgoDeployerSaServiceAccount,
pgoDeployerCrClusterRole,
pgopgoDeployerCmConfigMap,
pgoDeployerCrbClusterRoleBinding,
pgopgoDeployJob,
};
};