github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/backup/helpers/constants.go (about) 1 // Copyright (c) 2022, 2023, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package helpers 5 6 const ( 7 ObjectStoreCredsAccessKeyName = "aws_access_key_id" //nolint:gosec //#gosec G101 //#gosec G204 8 ObjectStoreCredsSecretAccessKeyName = "aws_secret_access_key" //nolint:gosec //#gosec G101 //#gosec G204 9 RancherUserCount = 1 10 KeycloakUserCount = 3 11 BackupResource = "backups" 12 RestoreResource = "restores" 13 BackupStorageLocationResource = "backupstoragelocations" 14 BackupPodVolumeResource = "podvolumebackups" 15 RestorePodVolumeResource = "podvolumerestores" 16 InnoDBClusterName = "mysql" 17 ) 18 19 // SecretsData template for creating backup credentials 20 const SecretsData = //nolint:gosec //#gosec G101 //#gosec G204 21 `[default] 22 {{ .AccessName }}={{ .ObjectStoreAccessValue }} 23 {{ .ScrtName }}={{ .ObjectStoreScrt }} 24 ` 25 26 // ProfileData template for creating backup credentials 27 const ProfileData = `[default] 28 region={{ .Region }} 29 ` 30 31 // VeleroBackupLocation template for creating velero backup storage location object. 32 const VeleroBackupLocation = ` 33 apiVersion: velero.io/v1 34 kind: BackupStorageLocation 35 metadata: 36 name: {{ .VeleroBackupStorageName }} 37 namespace: {{ .VeleroNamespaceName }} 38 spec: 39 provider: aws 40 objectStorage: 41 bucket: {{ .VeleroObjectStoreBucketName }} 42 prefix: {{ .VeleroBackupStorageName }} 43 credential: 44 name: {{ .VeleroSecretName }} 45 key: cloud 46 config: 47 region: {{ .VeleroBackupRegion }} 48 s3ForcePathStyle: "true" 49 s3Url: https://{{ .VeleroObjectStorageNamespaceName }}.compat.objectstorage.{{ .VeleroBackupRegion }}.oraclecloud.com` 50 51 // VeleroBackup template for creating velero backup object. 52 const VeleroBackup = ` 53 --- 54 apiVersion: velero.io/v1 55 kind: Backup 56 metadata: 57 name: {{ .VeleroBackupName }} 58 namespace: {{ .VeleroNamespaceName }} 59 spec: 60 includedNamespaces: 61 - verrazzano-logging 62 labelSelector: 63 matchLabels: 64 opster.io/opensearch-cluster: opensearch 65 defaultVolumesToRestic: false 66 storageLocation: {{ .VeleroBackupStorageName }} 67 hooks: 68 resources: 69 - 70 name: {{ .VeleroOpensearchHookResourceName }} 71 includedNamespaces: 72 - verrazzano-logging 73 labelSelector: 74 matchLabels: 75 statefulset.kubernetes.io/pod-name: opensearch-es-master-0 76 post: 77 - 78 exec: 79 container: opensearch 80 command: 81 - /usr/share/opensearch/bin/verrazzano-backup-hook 82 - -operation 83 - backup 84 - -velero-backup-name 85 - {{ .VeleroBackupName }} 86 onError: Fail 87 timeout: 10m` 88 89 // VeleroRestore template for creating velero restore object. 90 const VeleroRestore = ` 91 --- 92 apiVersion: velero.io/v1 93 kind: Restore 94 metadata: 95 name: {{ .VeleroRestore }} 96 namespace: {{ .VeleroNamespaceName }} 97 spec: 98 backupName: {{ .VeleroBackupName }} 99 includedNamespaces: 100 - verrazzano-logging 101 labelSelector: 102 matchLabels: 103 opster.io/opensearch-cluster: opensearch 104 restorePVs: false 105 hooks: 106 resources: 107 - name: {{ .VeleroOpensearchHookResourceName }} 108 includedNamespaces: 109 - verrazzano-logging 110 labelSelector: 111 matchLabels: 112 statefulset.kubernetes.io/pod-name: opensearch-es-master-0 113 postHooks: 114 - init: 115 timeout: 30m 116 initContainers: 117 - args: 118 - /usr/share/opensearch/bin/verrazzano-backup-hook --operation=pre-restore --velero-backup-name={{ .VeleroBackupName }} 119 command: 120 - sh 121 - -c 122 image: iad.ocir.io/odsbuilddev/sandboxes/saket.m.mahto/opensearch-security:latest 123 imagePullPolicy: Always 124 name: pre-hook 125 - exec: 126 container: opensearch 127 command: 128 - /usr/share/opensearch/bin/verrazzano-backup-hook 129 - -operation 130 - restore 131 - -velero-backup-name 132 - {{ .VeleroBackupName }} 133 waitTimeout: 30m 134 execTimeout: 30m 135 onError: Fail` 136 137 // EsQueryBody template for opensearch query 138 const EsQueryBody = ` 139 { 140 "query": { 141 "terms": { 142 "_id": ["{{ .BackupIDBeforeBackup }}"] 143 } 144 } 145 } 146 ` 147 148 // RancherUserTemplate template body for creating rancher test user 149 const RancherUserTemplate = ` 150 { 151 "description":"Automated Tests", 152 "mustChangePassword":false, 153 "enabled": true, 154 "name": {{ .FullName }}, 155 "password": {{ .Password }}, 156 "username": {{ .Username }} 157 } 158 ` 159 160 // RancherBackup template for creating rancher backup object. 161 const RancherBackup = ` 162 --- 163 apiVersion: resources.cattle.io/v1 164 kind: Backup 165 metadata: 166 name: {{ .RancherBackupName }} 167 spec: 168 storageLocation: 169 s3: 170 credentialSecretName: {{ .RancherSecretData.RancherSecretName }} 171 credentialSecretNamespace: {{ .RancherSecretData.RancherSecretNamespaceName }} 172 bucketName: {{ .RancherSecretData.RancherObjectStoreBucketName }} 173 folder: rancher-backup 174 region: {{ .RancherSecretData.RancherBackupRegion }} 175 endpoint: {{ .RancherSecretData.RancherObjectStorageNamespaceName }}.compat.objectstorage.{{ .RancherSecretData.RancherBackupRegion }}.oraclecloud.com 176 resourceSetName: rancher-resource-set 177 ` 178 179 // RancherRestore template for creating rancher restore object. 180 const RancherRestore = ` 181 --- 182 apiVersion: resources.cattle.io/v1 183 kind: Restore 184 metadata: 185 name: {{ .RancherRestoreName }} 186 spec: 187 backupFilename: {{ .BackupFileName }} 188 storageLocation: 189 s3: 190 credentialSecretName: {{ .RancherSecretData.RancherSecretName }} 191 credentialSecretNamespace: {{ .RancherSecretData.RancherSecretNamespaceName }} 192 bucketName: {{ .RancherSecretData.RancherObjectStoreBucketName }} 193 folder: rancher-backup 194 region: {{ .RancherSecretData.RancherBackupRegion }} 195 endpoint: {{ .RancherSecretData.RancherObjectStorageNamespaceName }}.compat.objectstorage.{{ .RancherSecretData.RancherBackupRegion }}.oraclecloud.com 196 ` 197 198 const VeleroMySQLBackup = ` 199 --- 200 apiVersion: velero.io/v1 201 kind: Backup 202 metadata: 203 name: {{ .VeleroMysqlBackupName }} 204 namespace: {{ .VeleroNamespaceName }} 205 spec: 206 includedNamespaces: 207 - keycloak 208 defaultVolumesToRestic: true 209 storageLocation: {{ .VeleroMysqlBackupStorageName }} 210 hooks: 211 resources: 212 - 213 name: {{ .VeleroMysqlHookResourceName }} 214 includedNamespaces: 215 - keycloak 216 labelSelector: 217 matchLabels: 218 app: mysql 219 pre: 220 - 221 exec: 222 container: mysql 223 command: 224 - bash 225 - /etc/mysql/conf.d/mysql-hook.sh 226 - -o backup 227 - -f {{ .VeleroMysqlBackupName }}.sql 228 onError: Fail 229 timeout: 5m` 230 231 const VeleroMySQLRestore = ` 232 --- 233 apiVersion: velero.io/v1 234 kind: Restore 235 metadata: 236 name: {{ .VeleroMysqlRestore }} 237 namespace: {{ .VeleroNamespaceName }} 238 spec: 239 backupName: {{ .VeleroMysqlBackupName }} 240 includedNamespaces: 241 - keycloak 242 restorePVs: false 243 hooks: 244 resources: 245 - name: {{ .VeleroMysqlHookResourceName }} 246 includedNamespaces: 247 - keycloak 248 labelSelector: 249 matchLabels: 250 app: mysql 251 postHooks: 252 - exec: 253 container: mysql 254 command: 255 - bash 256 - /etc/mysql/conf.d/mysql-hook.sh 257 - -o restore 258 - -f {{ .VeleroMysqlBackupName }}.sql 259 waitTimeout: 5m 260 execTimeout: 5m 261 onError: Fail` 262 263 const InnoDBBackupS3 = ` 264 --- 265 apiVersion: mysql.oracle.com/v2 266 kind: MySQLBackup 267 metadata: 268 name: {{ .InnoDBBackupName }} 269 namespace: {{ .InnoDBNamespaceName }} 270 spec: 271 clusterName: {{ .InnoDBClusterName }} 272 backupProfile: 273 name: {{ .InnoDBBackupProfileName}} 274 dumpInstance: 275 storage: 276 s3: 277 bucketName: {{ .InnoDBBackupObjectStoreBucketName }} 278 config: {{ .InnoDBBackupCredentialsName }} 279 endpoint: "https://{{ .InnoDBObjectStorageNamespaceName }}.compat.objectstorage.{{ .InnoDBBackupRegion }}.oraclecloud.com" 280 prefix: {{ .InnoDBBackupStorageName }} 281 profile: default` 282 283 const InnoDBBackupOci = ` 284 --- 285 apiVersion: mysql.oracle.com/v2 286 kind: MySQLBackup 287 metadata: 288 name: {{ .InnoDBBackupName }} 289 namespace: {{ .InnoDBNamespaceName }} 290 spec: 291 clusterName: {{ .InnoDBClusterName }} 292 backupProfile: 293 name: {{ .InnoDBBackupProfileName}} 294 dumpInstance: 295 storage: 296 ociObjectStorage: 297 prefix: {{ .InnoDBBackupStorageName }} 298 bucketName: {{ .InnoDBBackupObjectStoreBucketName }} 299 credentials: {{ .InnoDBBackupCredentialsName }}`