• Русский
  • Ошибка внутреннего сервера при изменении разрешений проекта Harbor

    Описание проблемы

    При изменении разрешений проекта Harbor появляется ошибка internal server error.

    Причина

    Redis, используемый Harbor, не поддерживает команду keys.

    Устранение неполадок

    Проверьте логи развертывания Harbor Core и убедитесь, что присутствует следующая ошибка:

    2024-12-11T06:36:11Z [ERROR] [/lib/http/error.go:56]: {"errors":[{"code":"UNKNOWN","message":"unknown: NOPERM this user has no permissions to run the 'keys' command or its subcommand"}]}
    2024-12-11T06:36:11Z [ERROR] [/lib/http/error.go:56]: {"errors":[{"code":"UNKNOWN","message":"unknown: NOPERM this user has no permissions to run the 'keys' command or its subcommand"}]}
    2024-12-11T06:36:16Z [ERROR] [/lib/http/error.go:56]: {"errors":[{"code":"UNKNOWN","message":"unknown: NOPERM this user has no permissions to run the 'keys' command or its subcommand"}]}
    2024-12-11T06:36:17Z [ERROR] [/lib/http/error.go:56]: {"errors":[{"code":"UNKNOWN","message":"unknown: NOPERM this user has no permissions to run the 'keys' command or its subcommand"}]}

    Решение

    Использование Alauda Cache Service for Redis OSS

    В пространстве имён развертывания redis измените конфигурацию redisuser с именем default, удалив параметр -keys.

    [root@demo1-gm1 ~]# kubectl get redisuser
    NAME                                   INSTANCE                  USERNAME   PHASE     AGE
    rfr-acl-harbor-harbor-demo1-redis-default    harbor-harbor-demo1-redis   default    Success   44d
    rfr-acl-harbor-harbor-demo1-redis-operator   harbor-harbor-demo1-redis   operator   Success   44d
    [root@demo1-gm1 ~]# kubectl edit redisuser default -n <namespace>

    До изменения:

    # ...
    spec:
      accountType: default
      aclRules: +@all -acl -flushall -flushdb -keys -* // удалите конфигурацию "-keys".
      arch: sentinel
      passwordSecrets:
      - harbor-demo1-redis-password
      redisName: harbor-harbor-demo1-redis
      username: default
    status:
      phase: Success
      lastUpdateSuccess: "2024-12-11T08:40:17Z"

    После изменения:

    # ...
    spec:
      accountType: default
      aclRules: +@all -acl -flushall -flushdb -* // эта строка изменена
      arch: sentinel
      passwordSecrets:
      - harbor-demo1-redis-password
      redisName: harbor-harbor-demo1-redis
      username: default
    status:
      phase: Success
      lastUpdateSuccess: "2024-12-11T08:40:17Z"

    Использование самостоятельного управления Redis

    Для самостоятельно управляемого экземпляра Redis используйте Redis ACL для проверки и изменения контроля разрешений команд.

    Примечания

    Команда keys сканирует все индексы и может блокировать сервис Redis, поэтому следует обдумать необходимость её долгосрочного использования.

    Связанные материалы