Vertrauenswürdige Profile für das Add-on OpenShift Data Foundation einrichten
Virtuelle private Cloud Klassische Cluster
Sie können vertrauenswürdige Profile für ODF verwenden, um den Zugriff von laufenden Pods in Ihrem Cluster auf andere Ressourcen in Ihrem Konto oder Cluster zu beschränken. Weitere Informationen zu vertrauenswürdigen Profilen finden Sie unter Vertrauenswürdige Profile erstellen.
OpenShift Data Foundation-Add-on aktivieren
-
Aktivieren Sie das Add-on in Ihrem Cluster. Überprüfen Sie die Parameterreferenz.
Beispielbefehl:
ibmcloud oc cluster addon enable openshift-data-foundation -c CLUSTER_NAME --version 4.X.X -
Stellen Sie sicher, dass der Add-on-Status
normalund der Statusreadylautet.ibmcloud oc cluster addon ls --cluster CLUSTER-ID -
Überprüfen Sie, dass der Pod des Metrikagenten bereitgestellt wurde und der Status
Runninglautet.kubectl get pods -n kube-system | grep ibm-storage-metrics-agentBeispielausgabe:
ibm-storage-metrics-agent-644cd95b5b-rh2gd 2/2 Running 0 7h42m
Einrichten von vertrauenswürdigen Profilen für ODF
-
Führen Sie die Schritte zum Erstellen eines vertrauenswürdigen Profils aus. Geben Sie in den Bedingungen für das Profil den folgenden Zugriff an:
- Zugriff zulassen, wenn Namensbereich gleich
kube-systemist - Satellite-Servicerollen- Satellite Link-Administrator, Leseberechtigter
- Rollen Kubernetes Service-Manager, Editor
- Abrechnungsservicerollen-Leser, Bediener
- Zugriff zulassen, wenn Namensbereich gleich
-
Nachdem Sie Ihr vertrauenswürdiges Profil erstellt haben, kopieren Sie die ID von der Seite Vertrauenswürdige Profile in der Konsole.
-
Legen Sie fest, ob Sie die Profil-ID oder einen API-Schlüssel im geheimen Kubernetes-Schlüssel verwenden möchten, den das Add-on verwendet. Sie können den geheimen Schlüssel mithilfe der ID oder des API-Schlüssels für das vertrauenswürdige Profil erstellen. Speichern Sie den folgenden Text und geben Sie Ihre Berechtigungsnachweise ein. Sie können die Schritte zum manuellen Erstellen des geheimen Schlüssels ausführen oder das Shell-Script verwenden, um den geheimen Schlüssel automatisch in Ihrem Cluster zu erstellen.
Beispielberechtigungsnachweise mit Pod-Identität:
IBMCLOUD_AUTHTYPE=pod-identity IBMCLOUD_PROFILEID=<TRUSTED-PROFILE-ID>Beispielberechtigungsnachweise mit einem API-Schlüssel.
IBMCLOUD_AUTHTYPE=iam IBMCLOUD_APIKEY=<API-KEY> -
Verschlüsseln Sie die Anmeldedaten unter base64.
echo -n "IBMCLOUD_AUTHTYPE=<IAM-OR-POD-IDENTITY> IBMCLOUD_APIKEY=<API-KEY>" | base64 -
Erstellen Sie einen geheimen Schlüssel in Ihrem Cluster, der die Berechtigungsnachweise für das vertrauenswürdige Profil enthält. Speichern Sie die folgende YAML-Datei in einer Datei namens
ibm-cloud-credentials.yaml. Geben Sie im Feldibm-credentials.env:den base64-codierten API-Schlüssel oder die ID des vertrauenswürdigen Profils ein.apiVersion: v1 data: ibm-credentials.env: # Trusted profile ID kind: Secret metadata: name: ibm-cloud-credentials namespace: kube-system type: Opaque -
Erstellen Sie den geheimen Schlüssel in Ihrem Cluster.
kubectl apply -f ibm-cloud-credentials.yaml -
Starten Sie die Agentenpods erneut.
kubectl delete pod <ibm-storage-metrics-agent> -n kube-system>
Geheimen Schlüssel mithilfe eines Shell-Scripts automatisch erstellen
-
Führen Sie die Schritte zum Erstellen eines vertrauenswürdigen Profils aus. Geben Sie in den Bedingungen für das Profil den folgenden Zugriff an:
- Zugriff zulassen, wenn Namensbereich gleich
kube-systemist - Satellite-Servicerollen- Satellite Link-Administrator, Leseberechtigter
- Rollen Kubernetes Service-Manager, Editor
- Abrechnungsservicerollen-Leser, Bediener
- Zugriff zulassen, wenn Namensbereich gleich
-
Speichern Sie das folgende Script in einer Datei namens
generate-secret.sh.IBMCLOUD_AUTHTYPE= SECRET= error() { if [[ $? != 0 ]]; then echo "$1"; exit 1 fi } #validate_arguments validates the arguments provided to the script validate_arguments() { if [[ "$#" -eq 1 ]]; then if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then usage; exit 1 fi fi #number of arguments provided to the script must be 2 if [[ "$#" -ne 2 ]]; then echo "Invalid number of arguments provided" usage; exit 1 fi #1st argument must be 'iam' or 'pod-identity' if [[ "$1" != "iam" ]] && [[ "$1" != "pod-identity" ]]; then echo "Provide a valid auth-type" usage; exit 1 fi IBMCLOUD_AUTHTYPE=$1 SECRET=$2 } #usage - prints the usage for execution of script usage() { echo "USAGE: bash generate-secret.sh <auth-type> <apikey/profile-id> auth-type: auth-type should be either iam or pod-identity. Provide iam to use api key, pod-identity to use trusted profile" } #main main() { validate_arguments "$@" auth_type="IBMCLOUD_AUTHTYPE=$IBMCLOUD_AUTHTYPE" secret= if [[ "$IBMCLOUD_AUTHTYPE" == "iam" ]]; then secret="IBMCLOUD_APIKEY=$SECRET" else secret="IBMCLOUD_PROFILEID=$SECRET" fi encodedValue=$(echo -e "$auth_type\n$secret" | base64) #on certain os, base64 encoding introduces newline, removing the same here. encodedValue=${encodedValue//$'\n'/} #fetch the agent pod name agentPodName=$(kubectl get pods -n kube-system | grep ibm-storage-metrics-agent | awk '{print $1}') error "$(date +"%b %d %G %H:%M:%S"): Unable to fetch ODF agent pod." if [[ "$agentPodName" == "" ]]; then echo "$(date +"%b %d %G %H:%M:%S"): Error - ibm-storage-metrics-agent pod not found" exit 1 fi echo "apiVersion: v1 data: ibm-credentials.env: $encodedValue kind: Secret metadata: name: ibm-cloud-credentials namespace: kube-system type: Opaque" > ibm-cloud-credentials.yaml #create the k8s secret kubectl apply -f ibm-cloud-credentials.yaml &> /dev/null error "$(date +"%b %d %G %H:%M:%S"): Error creating ibm-cloud-credentials secret." echo "$(date +"%b %d %G %H:%M:%S"): Created ibm-cloud-credentials secret" #restart the ODF agent pod echo "$(date +"%b %d %G %H:%M:%S"): Restarting $agentPodName pod" kubectl delete pod "$agentPodName" -n kube-system &> /dev/null error "$(date +"%b %d %G %H:%M:%S"): Error restarting $agentPodName pod in kube-system namespace." agentPodStatus= for i in {1..12} do sleep 5 agentPodStatus=$(kubectl get pods -n kube-system | grep ibm-storage-metrics-agent | awk '{print $3}') if [[ "$agentPodStatus" == "Running" ]]; then echo "$(date +"%b %d %G %H:%M:%S"): $i: ODF billing agent is now using ibm-cloud-credentials secret" rm ibm-cloud-credentials.yaml error "Error deleting ibm-cloud-credentials.yaml." exit 0 fi done error "$(date +"%b %d %G %H:%M:%S"): Error - ibm-storage-metrics-agent is in $agentPodStatus state" } main "$@" -
Führen Sie das Script
generate-secret.shaus und geben Sieiamoderpod-identityalsIBMCLOUD_AUTHTYPEund IhrePROFILE-IDoderAPI-KEYan.Beispielbefehl zum Ausführen von
generate-secret.shunter Verwendung vonpod-identitymit Ihrer vertrauenswürdigen Profil-ID.sh ./generate-secret.sh pod-identity PROFILE-IDBeispielbefehl für die Ausführung von
generate-secret.shmithilfe voniammit API-Schlüssel.sh ./generate-secret.sh iam API-KEY -
Starten Sie die Agentenpods erneut.
oc delete pod <ibm-storage-metrics-agent> -n kube-sysem -
Rufen Sie die Protokolle des Agentenpods ab, um zu überprüfen, ob der Treiber die richtigen Berechtigungsnachweise verwendet, indem Sie in der Ausgabe nach
secret typesuchen. Beispiel:"secret-used":"ibm-cloud-credentials","type":"pod-identity".oc logs ibm-storage-metrics-agent-xxx -c storage-secret-sidecar -n kube-system