|
1 | 1 | #!/usr/bin/env bash |
2 | 2 |
|
3 | | -ACCOUNT_ID="${1:?CLUSTER_NAME is required}" |
| 3 | +ACCOUNT_ID="${1:?ACCOUNT_ID is required}" |
4 | 4 | CLUSTER_NAME="${2:?CLUSTER_NAME is required}" |
5 | 5 | REGION="${3:?REGION is required}" |
6 | 6 | NAMESPACES="${4:?NAMESPACES is required}" |
@@ -107,6 +107,8 @@ spec: |
107 | 107 | useClusterChecksRunners: true |
108 | 108 | orchestratorExplorer: |
109 | 109 | enabled: true |
| 110 | + npm: |
| 111 | + enabled: true |
110 | 112 | usm: |
111 | 113 | enabled: true |
112 | 114 | apm: |
@@ -168,13 +170,64 @@ EOF |
168 | 170 | } |
169 | 171 | } |
170 | 172 |
|
| 173 | +function ensure-backup() { |
| 174 | + helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts |
| 175 | + helm repo update |
| 176 | + helm upgrade --install velero -n velero --create-namespace vmware-tanzu/velero -f "${DIRNAME}/velero.yaml" \ |
| 177 | + --set configuration.backupStorageLocation[0].name="default" \ |
| 178 | + --set configuration.backupStorageLocation[0].provider="aws" \ |
| 179 | + --set configuration.backupStorageLocation[0].bucket="${ACCOUNT_ID}-${CLUSTER_NAME}-velero-backups" \ |
| 180 | + --set configuration.backupStorageLocation[0].config.region="${REGION}" \ |
| 181 | + --set configuration.volumeSnapshotLocation[0].name="default" \ |
| 182 | + --set configuration.volumeSnapshotLocation[0].provider="aws" \ |
| 183 | + --set configuration.volumeSnapshotLocation[0].config.region="${REGION}" \ |
| 184 | + --set serviceAccount.server.annotations."eks\\.amazonaws\\.com/role-arn"="arn:aws:iam::${ACCOUNT_ID}:role/${CLUSTER_NAME}-velero-irsa" |
| 185 | + |
| 186 | + for NAMESPACE in $(echo "${NAMESPACES}" | jq -cr '.[]'); do |
| 187 | + |
| 188 | + NS="$(echo "${NAMESPACE}" | jq -r ".name")" |
| 189 | + |
| 190 | + cat <<EOF | oc apply -f - |
| 191 | +apiVersion: velero.io/v1 |
| 192 | +kind: Schedule |
| 193 | +metadata: |
| 194 | + name: ${NS}-daily-backup |
| 195 | + namespace: velero |
| 196 | +spec: |
| 197 | + schedule: "0 1 * * *" # Daily at 1 AM, so RPO is 24h |
| 198 | + template: |
| 199 | + includedNamespaces: |
| 200 | + - ${NS} |
| 201 | + ttl: 168h0m0s # 7 days retention |
| 202 | +EOF |
| 203 | + done |
| 204 | + |
| 205 | + NAMESPACES_NAMES="$(echo "${NAMESPACES}" | jq -cr '[.[].name]')" |
| 206 | + cat <<EOF | oc apply -f - |
| 207 | +apiVersion: velero.io/v1 |
| 208 | +kind: Schedule |
| 209 | +metadata: |
| 210 | + name: cluster-daily-backup |
| 211 | + namespace: velero |
| 212 | +spec: |
| 213 | + schedule: "0 2 * * *" # Daily at 2 AM, RPO = 24h |
| 214 | + template: |
| 215 | + includedNamespaces: |
| 216 | + - "*" # all namespaces |
| 217 | + excludedNamespaces: ${NAMESPACES_NAMES} |
| 218 | + includeClusterResources: true |
| 219 | + ttl: 168h # 7 days retention |
| 220 | +EOF |
| 221 | + |
| 222 | +} |
171 | 223 | # Main |
172 | 224 | login-to-eks |
173 | 225 | ensure-cluster-config |
174 | 226 | ensure-datadog-agent |
175 | 227 | configure-namespaces |
176 | 228 | ensure-nginx |
177 | 229 | ensure-externaldns |
| 230 | +ensure-backup |
178 | 231 |
|
179 | 232 | # TODO install SecretManager integration |
180 | 233 | # https://github.com/aws/secrets-store-csi-driver-provider-aws |
0 commit comments