如何检查 Noobaa 存储桶的内容

How to check content of a Noobaa bucket

我可以使用 noobaa bucket status <bucket> 命令检查 Nooba 存储桶的状态。

$ noobaa bucket status XYZ
INFO[0005] ✅ Exists: NooBaa "noobaa"                    
INFO[0005] ✅ Exists: Service "noobaa-mgmt"              
INFO[0006] ✅ Exists: Secret "noobaa-operator"           
INFO[0006] ✅ Exists: Secret "noobaa-admin"              
INFO[0008] ✈️  RPC: bucket.read_bucket() Request: {Name:XYZ} 
INFO[0010] ✅ RPC: bucket.read_bucket() Response OK: took 14.3ms 

Bucket status:
  Bucket                 : XYZ
  OBC Namespace          : xyz-namespace
  OBC BucketClass        : default-bucket-class
  Type                   : REGULAR
  Mode                   : OPTIMAL
  ResiliencyStatus       : OPTIMAL
  QuotaStatus            : QUOTA_NOT_SET
  Num Objects            : 1
  Data Size              : 3.000 B
  Data Size Reduced      : 5.000 B
  Data Space Avail       : 1.000 PB

但我无法检查 Noobaa 存储桶中的内容。

我们如何查看 Noobaa 存储桶的内容?使用 Noobaa CLI 或任何其他方式?

你的问题让我意识到 noobaa CLI 应该有 noobaa object list 命令所以我在 operator github 仓库上打开了一个 new issue for this enhancement。谢谢:)

在此添加之前,我们可以使用多种方式列出对象:

  1. 运行 noobaa ui - 请注意它会快速打开浏览器,但在终端上它会打印用于登录的凭据。您可能可以自己找到存储桶并深入了解 UI 中的对象,您还可以查看一些导航 UI 的录制视频 - 例如 this video

  2. noobaa status 获取管理员 S3 凭据和端点,然后使用您最喜欢的 s3 客户端 - 我目前使用 aws-cli 或 rclone:

    alias s3='AWS_ACCESS_KEY_ID=$NOOBAA_ACCESS_KEY AWS_SECRET_ACCESS_KEY=$NOOBAA_SECRET_KEY aws --endpoint $NOOBAA_S3_ENDPOINT --no-verify-ssl s3'
    

    然后:

    s3 ls XYZ
    
  3. 没有多少人注意到,但 NooBaa 系统 CR 在其状态中包含一个有用的自述文本,其中包含 "Test S3 client" 命令 - 准备好复制粘贴以设置您的 aws-cli,包括kubectl port-forward 以支持安全网络和从秘密中读取凭证。用 kubectl describe noobaa 检查一下。 This 40 seconds youtube video 简要说明了这一点。顺便说一句,自述文本是为系统生成的,但它的文本不包含实际的秘密,只有 kubectl 命令在允许的情况下读取这些秘密。

    $ kubectl describe noobaa
    ...
    
    Phase:                Ready
    Readme:
    
    Welcome to NooBaa!
    -----------------
    NooBaa Core Version:     5.3.0-9f579d9
    NooBaa Operator Version: 2.1.0
    
    Lets get started:
    
    1. Connect to Management console:
    
        Read your mgmt console login information (email & password) from secret: "noobaa-admin".
    
        kubectl get secret noobaa-admin -n backup-service -o json | jq '.data|map_values(@base64d)'
    
        Open the management console service - take External IP/DNS or Node Port or use port forwarding:
    
        kubectl port-forward -n backup-service service/noobaa-mgmt 11443:443 &
        open https://localhost:11443
    
    2. Test S3 client:
    
        kubectl port-forward -n backup-service service/s3 10443:443 &
        NOOBAA_ACCESS_KEY=$(kubectl get secret noobaa-admin -n backup-service -o json | jq -r '.data.AWS_ACCESS_KEY_ID|@base64d')
        NOOBAA_SECRET_KEY=$(kubectl get secret noobaa-admin -n backup-service -o json | jq -r '.data.AWS_SECRET_ACCESS_KEY|@base64d')
        alias s3='AWS_ACCESS_KEY_ID=$NOOBAA_ACCESS_KEY AWS_SECRET_ACCESS_KEY=$NOOBAA_SECRET_KEY aws --endpoint https://localhost:10443 --no-verify-ssl s3'
        s3 ls
    
    ...
    
  4. 最后一个选项,本来应该先提的,可惜我刚刚看到它在当前版本v2.1.0(打开new issue)中被破坏了,就是使用通用noobaa api 命令以便像这样调用 object_api list_objects 方法:

    noobaa api object list_objects '{ "bucket": "first.bucket" }'
    

希望对您有所帮助,随时打开 github issues with suggestions/issues。

谢谢!

(NooBaa 首席技术官)