Firebase Admin Go SDK получает ошибку сертификата x509 ТОЛЬКО при работе внутри Kubernetes - PullRequest
3 голосов
/ 30 марта 2019

В настоящее время я работаю над проектом, использующим Firebase Admin Go SDK для обработки аутентификации и использования базы данных в реальном времени. Проект работает правильно, когда я запускаю его локально (просто запустив go run main.go). Когда я запускаю его в Minikube через образ докера (или GKE, я протестировал оба), я получаю эту ошибку всякий раз, когда пытаюсь сделать какие-либо вызовы Firestore:

transport: authentication handshake failed: x509: certificate signed by unknown authority

Вот код, который я использую на сервере для вызова БД:

// Initialize the app 
opt := option.WithCredentialsFile("./serviceAccountKey.json")
app, err := firebase.NewApp(context.Background(), nil, opt)
// This is the first call I attempt to make, and where the error is thrown
// Create the client
client, err := app.Firestore(context.Background())
iter := client.Collection("remoteModels").Documents(context.Background())
snaps, err := iter.GetAll()
if err != nil {
    logger.Log.Warn("Error getting all remoteModels")
    fmt.Println(err)
    return err
}  

А вот мой Dockerfile, который добавляет служебный ключ учетной записи Firebase, предоставленный мне из консоли:

FROM scratch

ADD main /
ADD serviceAccountKey.json /

EXPOSE 9090

ENTRYPOINT ["/main", "-grpc-port=9090", "-http-port=9089", "-env=prod"]

Я не могу найти ничего в документации по бегу в Кубернетесе.
Что мне нужно сделать, чтобы иметь возможность подключиться к Firestore из Kubernetes?

1 Ответ

5 голосов
/ 02 апреля 2019

Если вы используете альпийские изображения, попробуйте запустить apk add ca-certificates, это похоже на ошибку tls.
Установите сертификаты CA, это должно решить проблему

...