Difference between revisions of "Secret update k8s"

From UVOO Tech Wiki
Jump to navigation Jump to search
 
Line 50: Line 50:
 
     echo "Data has not changed. No update needed."
 
     echo "Data has not changed. No update needed."
 
fi
 
fi
 +
```
 +
 +
 +
 +
# Issues with large
 +
```
 +
# kubectl get secrets ssl-certs -o json \
 +
#        | jq -n ".data[\"ca-certificates.crt\"] |= \"$CA_CRT\"" \
 +
#        | kubectl apply -f -
 
```
 
```

Latest revision as of 17:11, 28 February 2024

OK

kubectl create secret generic ssl-certs --from-file=ca-certificates.crt=./etc-ssl-certs/ca-certificates.crt --save-config --dry-run=client -o yaml | kubectl apply --server-side=true -f -

Better

https://stackoverflow.com/questions/45879498/how-can-i-update-a-secret-on-kubernetes-when-it-is-generated-from-a-file

TLS_KEY=$(base64 < "./tls.key" | tr -d '\n')
TLS_CRT=$(base64 < "./tls.crt" | tr -d '\n')
kubectl get secrets production-tls -o json \
        | jq ".data[\"tls.key\"] |= \"$TLS_KEY\"" \
        | jq ".data[\"tls.crt\"] |= \"$TLS_CRT\"" \
        | kubectl apply -f -

Patch

kubectl \
        patch \
        secret \
        production-tls \
        -p "{\"data\":{\"tls.key\":\"${TLS_KEY}\",\"tls.crt\":\"${TLS_CRT}\"}}"

Foo

#!/bin/bash

SECRET_NAME="your-secret-name"
NAMESPACE="your-namespace"
DATA_FILE="your-data-file.yaml"

# Generate a hash of the new data
new_hash=$(shasum -a 256 "$DATA_FILE" | cut -d ' ' -f1)

# Get the current hash from the existing secret (if it exists)
existing_hash=$(kubectl get secret "$SECRET_NAME" -n "$NAMESPACE" -o jsonpath='{.data.hash}' || echo "")

# Compare the hashes
if [ "$new_hash" != "$existing_hash" ]; then
    echo "Data has changed. Updating secret..."

    # Apply the updated secret
    kubectl apply -f "$DATA_FILE" -n "$NAMESPACE"

    # Update the hash in the secret
    kubectl patch secret "$SECRET_NAME" -n "$NAMESPACE" -p '{"data":{"hash":"'$(echo -n $new_hash | base64)'"}}'
else
    echo "Data has not changed. No update needed."
fi

Issues with large

# kubectl get secrets ssl-certs -o json \
#         | jq -n ".data[\"ca-certificates.crt\"] |= \"$CA_CRT\"" \
#         | kubectl apply -f -