Зачем нужно обновление каскаров в Кубернетес - PullRequest
0 голосов
/ 01 ноября 2018

При чтении файлов из Google Storage Bucket из контейнера, запущенного в GKE или GCE. Сбой следующего кода:

public String readSmallTextFileFromBucket(String bucketName, String textFile) {

        Blob blob = storage.get(bucketName, textFile);
        String fileContent = new String(blob.getContent());
        return fileContent;
        }

С ошибкой:

com.google.cloud.storage.StorageException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Если я заменим файл по умолчанию java/jdk-10.0.2/lib/security/cacerts, полученный при загрузке OpenJDK, с моего рабочего стола, приведенный выше код будет работать.

Почему это? и как правильно включить Java API для чтения из хранилища из контейнера?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Эта проблема была решена путем изменения 2 вещей.
а) Добавление storage-rw в области действия кластера и
б) была ошибка в том, как я создавал свой секрет кубернетес

Не знаю, как или почему помогла замена файла cacerts, но вышеуказанные 2 исправления являются правильным способом сделать это

0 голосов
/ 10 ноября 2018

Многие образы базовых контейнеров по умолчанию могут не включать сертификаты CA, которые обычно устанавливаются на каждом компьютере. (Потому что не всем нужно использовать TLS в контейнере.) Для установки этих сертификатов часто требуется «apt-get install» или аналогичный в вашем Dockerfile.

Если в контейнере нет сертификатов CA, ваш код не может доверять storage.googleapis.com.

См. Команды, необходимые для добавления сертификатов CA в ваш контейнер, в этом ответе: https://superuser.com/a/633853/35769 В идеале вам не следует копировать эти сертификаты с настольного компьютера.

...