From 4dd900cf357fc76e6219807cf62764903ae4d93a Mon Sep 17 00:00:00 2001 From: parth-gr Date: Thu, 22 Jun 2023 21:02:58 +0530 Subject: [PATCH] external: make import script idempotent import script may be need a re-run if other resources need to be configured for ex: if rbd is configured and later on point someone want to also configure rgw, it will have a choice Closes: https://github.com/rook/rook/issues/12412 Signed-off-by: parth-gr (cherry picked from commit 483c432b260de6b5d0486ae335a4c99e0c889536) --- deploy/examples/import-external-cluster.sh | 174 +++++++++++++-------- 1 file changed, 112 insertions(+), 62 deletions(-) diff --git a/deploy/examples/import-external-cluster.sh b/deploy/examples/import-external-cluster.sh index c988a50a6..b8e1be010 100644 --- a/deploy/examples/import-external-cluster.sh +++ b/deploy/examples/import-external-cluster.sh @@ -76,87 +76,124 @@ function importClusterID() { } function importSecret() { - kubectl -n "$NAMESPACE" \ - create \ - secret \ - generic \ - --type="kubernetes.io/rook" \ - "$MON_SECRET_NAME" \ - --from-literal="$MON_SECRET_CLUSTER_NAME_KEYNAME"="$ROOK_EXTERNAL_CLUSTER_NAME" \ - --from-literal="$MON_SECRET_FSID_KEYNAME"="$ROOK_EXTERNAL_FSID" \ - --from-literal="$MON_SECRET_ADMIN_KEYRING_KEYNAME"="$ROOK_EXTERNAL_ADMIN_SECRET" \ - --from-literal="$MON_SECRET_MON_KEYRING_KEYNAME"="$ROOK_EXTERNAL_MONITOR_SECRET" \ - --from-literal="$MON_SECRET_CEPH_USERNAME_KEYNAME"="$ROOK_EXTERNAL_USERNAME" \ - --from-literal="$MON_SECRET_CEPH_SECRET_KEYNAME"="$ROOK_EXTERNAL_USER_SECRET" + secret=$(kubectl -n "$NAMESPACE" get secret "$MON_SECRET_NAME") + if [ $? != 0 ]; then + kubectl -n "$NAMESPACE" \ + create \ + secret \ + generic \ + --type="kubernetes.io/rook" \ + "$MON_SECRET_NAME" \ + --from-literal="$MON_SECRET_CLUSTER_NAME_KEYNAME"="$ROOK_EXTERNAL_CLUSTER_NAME" \ + --from-literal="$MON_SECRET_FSID_KEYNAME"="$ROOK_EXTERNAL_FSID" \ + --from-literal="$MON_SECRET_ADMIN_KEYRING_KEYNAME"="$ROOK_EXTERNAL_ADMIN_SECRET" \ + --from-literal="$MON_SECRET_MON_KEYRING_KEYNAME"="$ROOK_EXTERNAL_MONITOR_SECRET" \ + --from-literal="$MON_SECRET_CEPH_USERNAME_KEYNAME"="$ROOK_EXTERNAL_USERNAME" \ + --from-literal="$MON_SECRET_CEPH_SECRET_KEYNAME"="$ROOK_EXTERNAL_USER_SECRET" + else + echo "secret $secret already exists" + fi } function importConfigMap() { - kubectl -n "$NAMESPACE" \ - create \ - configmap \ - "$MON_ENDPOINT_CONFIGMAP_NAME" \ - --from-literal=data="$ROOK_EXTERNAL_CEPH_MON_DATA" \ - --from-literal=mapping="$ROOK_EXTERNAL_MAPPING" \ - --from-literal=maxMonId="$ROOK_EXTERNAL_MAX_MON_ID" + configmap=$(kubectl -n "$NAMESPACE" get configmap "$MON_ENDPOINT_CONFIGMAP_NAME") + if [ $? != 0 ]; then + kubectl -n "$NAMESPACE" \ + create \ + configmap \ + "$MON_ENDPOINT_CONFIGMAP_NAME" \ + --from-literal=data="$ROOK_EXTERNAL_CEPH_MON_DATA" \ + --from-literal=mapping="$ROOK_EXTERNAL_MAPPING" \ + --from-literal=maxMonId="$ROOK_EXTERNAL_MAX_MON_ID" + else + echo "configmap $configmap already exists" + fi } function importCsiRBDNodeSecret() { - kubectl -n "$NAMESPACE" \ - create \ - secret \ - generic \ - --type="kubernetes.io/rook" \ - "rook-""$CSI_RBD_NODE_SECRET_NAME" \ - --from-literal=userID="$CSI_RBD_NODE_SECRET_NAME" \ - --from-literal=userKey="$CSI_RBD_NODE_SECRET" + secret=$(kubectl -n "$NAMESPACE" get secret "rook-""$CSI_RBD_NODE_SECRET_NAME") + if [ $? != 0 ]; then + kubectl -n "$NAMESPACE" \ + create \ + secret \ + generic \ + --type="kubernetes.io/rook" \ + "rook-""$CSI_RBD_NODE_SECRET_NAME" \ + --from-literal=userID="$CSI_RBD_NODE_SECRET_NAME" \ + --from-literal=userKey="$CSI_RBD_NODE_SECRET" + else + echo "secret $secret already exists" + fi } function importCsiRBDProvisionerSecret() { - kubectl -n "$NAMESPACE" \ - create \ - secret \ - generic \ - --type="kubernetes.io/rook" \ - "rook-""$CSI_RBD_PROVISIONER_SECRET_NAME" \ - --from-literal=userID="$CSI_RBD_PROVISIONER_SECRET_NAME" \ - --from-literal=userKey="$CSI_RBD_PROVISIONER_SECRET" + secret=$(kubectl -n "$NAMESPACE" get secret "rook-""$CSI_RBD_PROVISIONER_SECRET_NAME") + if [ $? != 0 ]; then + kubectl -n "$NAMESPACE" \ + create \ + secret \ + generic \ + --type="kubernetes.io/rook" \ + "rook-""$CSI_RBD_PROVISIONER_SECRET_NAME" \ + --from-literal=userID="$CSI_RBD_PROVISIONER_SECRET_NAME" \ + --from-literal=userKey="$CSI_RBD_PROVISIONER_SECRET" + else + echo "secret $secret already exists" + fi } function importCsiCephFSNodeSecret() { - kubectl -n "$NAMESPACE" \ - create \ - secret \ - generic \ - --type="kubernetes.io/rook" \ - "rook-""$CSI_CEPHFS_NODE_SECRET_NAME" \ - --from-literal=adminID="$CSI_CEPHFS_NODE_SECRET_NAME" \ - --from-literal=adminKey="$CSI_CEPHFS_NODE_SECRET" + secret=$(kubectl -n "$NAMESPACE" get secret "rook-""$CSI_CEPHFS_NODE_SECRET_NAME") + if [ $? != 0 ]; then + kubectl -n "$NAMESPACE" \ + create \ + secret \ + generic \ + --type="kubernetes.io/rook" \ + "rook-""$CSI_CEPHFS_NODE_SECRET_NAME" \ + --from-literal=adminID="$CSI_CEPHFS_NODE_SECRET_NAME" \ + --from-literal=adminKey="$CSI_CEPHFS_NODE_SECRET" + else + echo "secret $secret already exists" + fi } function importCsiCephFSProvisionerSecret() { - kubectl -n "$NAMESPACE" \ - create \ - secret \ - generic \ - --type="kubernetes.io/rook" \ - "rook-""$CSI_CEPHFS_PROVISIONER_SECRET_NAME" \ - --from-literal=adminID="$CSI_CEPHFS_PROVISIONER_SECRET_NAME" \ - --from-literal=adminKey="$CSI_CEPHFS_PROVISIONER_SECRET" + secret=$(kubectl -n "$NAMESPACE" get secret "rook-""$CSI_CEPHFS_PROVISIONER_SECRET_NAME") + if [ $? != 0 ]; then + kubectl -n "$NAMESPACE" \ + create \ + secret \ + generic \ + --type="kubernetes.io/rook" \ + "rook-""$CSI_CEPHFS_PROVISIONER_SECRET_NAME" \ + --from-literal=adminID="$CSI_CEPHFS_PROVISIONER_SECRET_NAME" \ + --from-literal=adminKey="$CSI_CEPHFS_PROVISIONER_SECRET" + else + echo "secret $secret already exists" + fi } function importRGWAdminOpsUser() { - kubectl -n "$NAMESPACE" \ - create \ - secret \ - generic \ - --type="kubernetes.io/rook" \ - "$RGW_ADMIN_OPS_USER_SECRET_NAME" \ - --from-literal=accessKey="$RGW_ADMIN_OPS_USER_ACCESS_KEY" \ - --from-literal=secretKey="$RGW_ADMIN_OPS_USER_SECRET_KEY" + secret=$(kubectl -n "$NAMESPACE" get secret "$RGW_ADMIN_OPS_USER_SECRET_NAME") + if [ $? != 0 ]; then + kubectl -n "$NAMESPACE" \ + create \ + secret \ + generic \ + --type="kubernetes.io/rook" \ + "$RGW_ADMIN_OPS_USER_SECRET_NAME" \ + --from-literal=accessKey="$RGW_ADMIN_OPS_USER_ACCESS_KEY" \ + --from-literal=secretKey="$RGW_ADMIN_OPS_USER_SECRET_KEY" + else + echo "secret $secret already exists" + fi } function createECRBDStorageClass() { - cat <