API Samples

API Samples

authorization.dataservices.vmware.com/v1alpha1

DsmRoleBinding

For DSM Admin Role

apiVersion: authorization.dataservices.vmware.com/v1alpha1
kind: DsmRoleBinding
metadata:
    name: dsmadmin
role: DSM_ADMIN
subjects:
    - kind: User
    name: [email protected]

databases.dataservices.vmware.com/v1alpha1

DatabaseConfig

With a custom db param

apiVersion: databases.dataservices.vmware.com/v1alpha1
kind: DatabaseConfig
metadata:
    name: db-config-i4c35-1721685809783
    namespace: default
spec:
    params:
        max_connections: "300"

PostgresCluster

With custom db param, backup config & 1 replica

apiVersion: databases.dataservices.vmware.com/v1alpha1
kind: PostgresCluster
metadata:
    name: my-pg-cluster
    namespace: default
spec:
    adminUsername: pgadmin
    backupConfig:
        backupRetentionDays: 30
        schedules:
        - name: default-full-backup
            schedule: 59 23 * * 6
            type: full
        - name: default-incremental-backup
            schedule: 59 23 1/1 * *
            type: incremental
    backupLocation:
        name: default-backup-storage
    databaseConfig:
        name: db-config-i4c35-1721685809783
    databaseName: my-pg-cluster
    infrastructurePolicy:
        name: infra-policy-02-rp
    maintenanceWindow:
        duration: 6h0m0s
        startDay: SATURDAY
        startTime: "22:59"
    replicas: 1
    storagePolicyName: dsm-test
    storageSpace: 60Gi
    version: 14.15+vmware.v2.2.0
    vmClass:
        name: medium

With a seondary replica (Disaster Recovery)

// Primary
apiVersion: databases.dataservices.vmware.com/v1alpha1
kind: PostgresCluster
metadata:
    name: my-pg-cluster
    namespace: default
spec:
    adminUsername: pgadmin
    backupLocation:
        name: default-backup-storage
    databaseName: test-primary
    infrastructurePolicy:
        name: infra-policy-01
    maintenanceWindow:
        duration: 6h0m0s
        startDay: SATURDAY
        startTime: "04:59"
    replicas: 0
    replicationSlots:
    - slotName: test_rep_slot
        user: test-rep-slot
        description: "This represents the secondary cluster in Chicago"
    storagePolicyName: dsm-test
    storageSpace: 60Gi
    version: 16.6+vmware.v2.2.0
    vmClass:
        name: medium
// Secondary
---
apiVersion: v1
data:
    user: dGVzdC1yZXAtc2xvdA== # This is the username of the replication user encoded in base64
    password: SWFGZnh6SDZaOU5raDZoUzFyNnE4MTBJOUpVMHhw # This is the password of the replication user encoded in Base64.
    dbName: dGVzdC1wcmltYXJ5 # This is the database of the remote cluster encoded in Base64.
kind: Secret
metadata:
    name: my-pg-secondary-rep-secret
    namespace: default
type: Opaque
---
apiVersion: v1
data:
tls.crt: |-
    -----BEGIN CERTIFICATE-----
    MIIC7TCCAdWgAwIBAgIGAZRCYKIkMA0GCSqGSIb3DQEBCwUAMCgxFTATBgNVBAMM
    DFZNd2FyZS1EQi1DQTEPMA0GA1UECgwGVk13YXJlMB4XDTI1MDEwNDIwMDY1NloX
    DTM1MDEwNzIwMDY1NlowKDEVMBMGA1UEAwwMVk13YXJlLURCLUNBMQ8wDQYDVQQK
    DAZWTXdhcmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBTP4Vj8/j
    FFuQ9cmg4KqavYghsoNTuEs0DOmwKD+zZLVEhfWpdiaMZDaG5JvCVig1rGu5Z3LU
    rfN/FGEEW6ixrYRdFpdFdcdWqctyY/POED0fjV1kU2XCRSTpy3OGtytGVY9rWJkl
    G0kPuyqKYNK/hX1OBUn6ANfmlhZKR4rkZxBjFsDpGyQDHmkl+Zzu5hIy88uALxtT
    VDNLljtsW/DBMtvSN5owiAJ9gLjzZSLA9ySocEjdgS60c8AwRoVcN8UTTyvMSTUW
    WyLG+s8cCNxRqyyn9ZoRR4tUaDTSFbwiCK2ejJ+coZ0Sxi0U23TKxrqnOhFSHilJ
    /9scNDd+h2CNAgMBAAGjHTAbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MA0G
    CSqGSIb3DQEBCwUAA4IBAQAcFdNFhBl0ZpGxj2Tzqjr8hUm2fr/F3yikmrnvwchO
    /4PZHUGb1cPAqTF8nvnI0CvxCYIH3assg+5qWwgPLjpuYY3LC1y7P5EDvlOYpux8
    OIJkcVX9AxTsm8lKDXoZcsJVb6s/pxjJ74jIfPtOInU6gErV12aHzuHtjLTdCN2F
    RlDqSVczJC4sqKrw8He/nzH35+vFDWgmxvoDo2n/6EEeymwaGWhQTjaF3mvUYcO5
    fRbO+OAGi+kPwgtj5PJH8l3Ou7A+88CUz3I3+GU6QaIj3dnPrgf9pwLurU+kpru9
    tIQF6AjyEL5tmnIwF9hQxEL9v7tYDFanpc9EjhQF3/oE
    -----END CERTIFICATE-----
kind: ConfigMap
metadata:
    name: sample-my-pg-primary-ca
    namespace: default
---
apiVersion: databases.dataservices.vmware.com/v1alpha1
kind: PostgresCluster
metadata:
    name: my-pg-secondary
    namespace: default
spec:
    adminUsername: pgadmin
    basedOn:
        continuousRecovery:
        enabled: true
        replicationSlot:
            credentials:
                name: my-pg-secondary-rep-secret
            hostname: 10.161.88.93
            port: 5432
            slotName: test_rep_slot
            trustBundle:
                name: sample-my-pg-primary-ca
                namespace: default
    databaseName: test-primary
    infrastructurePolicy:
        name: infra-policy-01
    maintenanceWindow:
        duration: 6h0m0s
        startDay: SATURDAY
        startTime: "04:59"
    replicas: 0
    storagePolicyName: dsm-test
    storageSpace: 60Gi
    version: 16.6+vmware.v2.2.0
    vmClass:
        name: medium

MySQLCluster

With a custom db param, backup config and 1 replica.

apiVersion: databases.dataservices.vmware.com/v1alpha1
kind: MySQLCluster
metadata:
    name: foo-db
    namespace: default
spec:
    backupConfig:
        backupRetentionDays: 30
        schedules:
        - name: default-full-backup
            schedule: 59 23 * * 6
            type: full
    backupLocation:
        name: default-backup-storage
    databaseConfig:
        name: db-config-87o9b-1721686239818
    infrastructurePolicy:
        name: infra-policy-02-rp
    maintenanceWindow:
        duration: 6h0m0s
        startDay: SATURDAY
        startTime: "22:59"
    members: 3
    storagePolicyName: dsm-test
    storageSpace: 60Gi
    version: 8.0.34+vmware.v2.1.0
    vmClass:
        name: medium

infrastructure.dataservices.vmware.com/v1alpha1

IPPool

With 2 IP ranges

apiVersion: infrastructure.dataservices.vmware.com/v1alpha1
kind: IPPool
metadata:
    name: test-ippool
spec:
    addresses:
    - 1.1.1.1
    - 1.1.1.12-1.1.1.50
    - 1.1.1.65-1.1.1.90
    gateway: 10.10.10.10
    prefix: 24

VMClass

With 8 vCPU and 16 Gi memory.

apiVersion: infrastructure.dataservices.vmware.com/v1alpha1
kind: VMClass
metadata:
    name: large
spec:
    requests:
        cpu: "8"
        memory: "16"

InfrastructurePolicy

With a resource pool.

apiVersion: infrastructure.dataservices.vmware.com/v1alpha1
kind: InfrastructurePolicy
metadata:
    name: infra-policy-02-rp
spec:
    enabled: true
    ipRanges:
    - poolName: ippools-test-01
        portGroups:
        - datacenter: dbaas-dc
        name: Mgmt
    placements:
    - cluster: dbaas-cluster
        datacenter: dbaas-dc
        folder: DSM
        portGroups:
        - Mgmt
        resourcePool: rp1
    storagePolicies:
    - dsm-test
    vmClasses:
    - name: small
    - name: medium
    - name: large

DirectoryService

With ldap configured.

apiVersion: v1
kind: Secret
metadata:
    name: sample-ldap-ca
    namespace: dsm-system
data:
    tls.crt: |
        -----BEGIN CERTIFICATE-----
        MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET
        MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp
        bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B
        CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa
        MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ
        bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB
        IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa
        RRcYersNGqP-this-is-a-dummy-cert-uidhasaFSJSAKCvrtWhN+haKbSp+QWX
        SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p
        1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB
        aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau
        ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID
        AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy
        YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw
        HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD
        ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0
        +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV
        vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1
        fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh
        PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY
        cbTV5RDkrlaYwm5yqlTIglvCv7o=
        -----END CERTIFICATE-----
---
apiVersion: v1
kind: Secret
metadata:
    name: sample-ldap-credentials
    namespace: dsm-system
type: "kubernetes.io/basic-auth"
data:
    username: bGRhcGFkbWlu  # This is 'ldapadmin' encoded in Base64
    password: cGFzc3dvcmQ=  # This is 'password' encoded in Base64
---
apiVersion: infrastructure.dataservices.vmware.com/v1alpha1
kind: DirectoryService
metadata:
    name: ldap-default
    namespace: dsm-system
spec:
    type: "ActiveDirectory"
    domain: vmware.com
    baseDnUsers: dc=vmware,dc=com
    bindCredentials:
        name: sample-ldap-credentials
    primaryServerUrl: ldaps://ldap.vmware.com:3269
    secondaryServerUrls:
        - ldaps://scrootdc1.vmware.com:3269
        - ldaps://scdc2rootdc04.vmware.com:3269
    trustBundle:
        name: sample-ldap-ca
        namespace: dsm-system
    userSearchAttribute: "userPrincipalName"

observability.dataservices.vmware.com/v1alpha1

LogBundle

Support bundle for Postgres

apiVersion: observability.dataservices.vmware.com/v1alpha1
kind: LogBundle
metadata:
    name: test-logs
    namespace: default
spec:
    retentionPeriod: 48h
    targetRef:
        kind: PostgresCluster
        name: cluster

system.dataservices.vmware.com/v1alpha1

DsmSystemConfig

With ntp configured.

apiVersion: system.dataservices.vmware.com/v1alpha1
kind: DsmSystemConfig
metadata:
    name: dsm-system-config
spec:
    ceipConsent: true
    dnsServers:
    - 1.2.3.4
    dsmProviderId: f9b039f9-2683-43b1-aae0-5602614cde0b
    externalLogDestination:
        enabled: false
        trustBundle: {}
    gateway: 10.11.12.13
    ip: 5.6.7.8
    netmask: 255.255.224.0
    ntpServers:
    - time.vmware.com

With external log destination - udp configured.

apiVersion: system.dataservices.vmware.com/v1alpha1
kind: DsmSystemConfig
...
spec:
    externalLogDestination:
        enabled: true
        remoteLogDestinationProvider: syslog server
        remoteLogUrl: udp://0.0.1.1:514
            trustBundle: {}

With external log destination - tls configured.

apiVersion: system.dataservices.vmware.com/v1alpha1
kind: DsmSystemConfig
...
spec:
externalLogDestination:
    enabled: true
    remoteLogDestinationProvider: syslog server
    remoteLogUrl: ssl://0.0.1.1:1514
    trustBundle:
        name: trusted-root-ca
        namespace: dsm-system

Image Registry

Pointing to a public repo (https://quay.io/organization/minio/)

apiVersion: system.dataservices.vmware.com/v1alpha1
kind: ImageRegistry
metadata:
    name: quay-minio
    namespace: dsm-system
spec:
    endpoint: quay.io
    repo: minio
    dataServiceSelector:
        matchExpressions:
        - key: dsm.vmware.com/data-service-type
        operator: In
        values:
        - vmware-objectstore-minio