Configuración de perfiles de confianza para el complemento OpenShift Data Foundation
Nube privada virtual Clusters clásicos
Puede utilizar perfiles de confianza para ODF para limitar el acceso que tienen los pods en ejecución de su cluster a otros recursos de su cuenta o cluster. Para obtener más información sobre los perfiles de confianza, consulte Creación de perfiles de confianza.
Habilitación del complemento OpenShift Data Foundation
-
Activa el complemento en tu clúster. Revise la Referencia de parámetros.
Mandato de ejemplo:
ibmcloud oc cluster addon enable openshift-data-foundation -c CLUSTER_NAME --version 4.X.X -
Verifique que el estado del complemento sea
normaly el estado seaready.ibmcloud oc cluster addon ls --cluster CLUSTER-ID -
Verifique que el pod del agente de métricas se haya desplegado y que el estado sea
Running.kubectl get pods -n kube-system | grep ibm-storage-metrics-agentSalida de ejemplo:
ibm-storage-metrics-agent-644cd95b5b-rh2gd 2/2 Running 0 7h42m
Configuración de perfiles de confianza para ODF
-
Siga los pasos para crear un perfil de confianza. En las Condiciones del perfil, asegúrese de especificar el acceso siguiente.
- Permitir acceso cuando Espacio de nombres sea igual a
kube-system - Satellite- Satellite Link Administrator, Reader
- Roles de Kubernetes Service-Gestor, Editor
- Roles de servicio de facturación-Lector, Operador
- Permitir acceso cuando Espacio de nombres sea igual a
-
Después de crear el perfil de confianza, copie el ID de la página Perfiles de confianza en la consola.
-
Decida si desea utilizar el ID de perfil o una clave de API en el secreto de Kubernetes que utiliza el complemento. Puede crear el secreto utilizando el ID o la clave de API para el perfil de confianza. Guarde el texto siguiente y especifique sus credenciales. Puede seguir los pasos para crear el secreto manualmente o puede utilizar el script de shell para crear automáticamente el secreto en el clúster.
Credenciales de ejemplo con identidad de pod:
IBMCLOUD_AUTHTYPE=pod-identity IBMCLOUD_PROFILEID=<TRUSTED-PROFILE-ID>Credenciales de ejemplo con una clave de API.
IBMCLOUD_AUTHTYPE=iam IBMCLOUD_APIKEY=<API-KEY> -
Codifica las credenciales en base64.
echo -n "IBMCLOUD_AUTHTYPE=<IAM-OR-POD-IDENTITY> IBMCLOUD_APIKEY=<API-KEY>" | base64 -
Cree un secreto en el clúster que contenga las credenciales para el perfil de confianza. Guarde el siguiente archivo YAML en un archivo denominado
ibm-cloud-credentials.yaml. En el campoibm-credentials.env:, especifique la clave de API codificada base64 o el ID del perfil de confianza.apiVersion: v1 data: ibm-credentials.env: # Trusted profile ID kind: Secret metadata: name: ibm-cloud-credentials namespace: kube-system type: Opaque -
Cree el secreto en el clúster.
kubectl apply -f ibm-cloud-credentials.yaml -
Reinicie los pods de agente.
kubectl delete pod <ibm-storage-metrics-agent> -n kube-system>
Creación automática de un secreto utilizando un script de shell
-
Siga los pasos para crear un perfil de confianza. En las Condiciones del perfil, asegúrese de especificar el acceso siguiente.
- Permitir acceso cuando Espacio de nombres sea igual a
kube-system - Satellite- Satellite Link Administrator, Reader
- Roles de Kubernetes Service-Gestor, Editor
- Roles de servicio de facturación-Lector, Operador
- Permitir acceso cuando Espacio de nombres sea igual a
-
Guarde el script siguiente en un archivo denominado
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 "$@" -
Ejecute el script
generate-secret.shy especifiqueiamopod-identitycomoIBMCLOUD_AUTHTYPEyPROFILE-IDoAPI-KEY.Mandato de ejemplo para ejecutar
generate-secret.shutilizandopod-identitycon el ID de perfil de confianza.sh ./generate-secret.sh pod-identity PROFILE-IDMandato de ejemplo para ejecutar
generate-secret.shutilizandoiamcon una clave de API.sh ./generate-secret.sh iam API-KEY -
Reinicie los pods de agente.
oc delete pod <ibm-storage-metrics-agent> -n kube-sysem -
Obtenga los registros del pod de agente para verificar que el controlador está utilizando las credenciales correctas buscando
secret typeen la salida. Por ejemplo,"secret-used":"ibm-cloud-credentials","type":"pod-identity".oc logs ibm-storage-metrics-agent-xxx -c storage-secret-sidecar -n kube-system