Difference between revisions of "Secret update k8s"
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
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 -