Ошибка подключения к прокси-серверу «Сертификат подписан неизвестным органом» - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь подключиться к экземпляру CloudSQL через контейнер cloudql-proxy в моем развертывании в Kubernetes.У меня установлены учетные данные cloudql и установлено значение GOOGLE_APPLICATION_CREDENTIALS.

Тем не менее, я все еще получаю следующую ошибку в моих журналах:

2018/10/08 20:07:28 Failed to connect to database: Post https://www.googleapis.com/sql/v1beta4/projects/[projectID]/instances/[appName]/createEphemeral?alt=json&prettyPrint=false: oauth2: cannot fetch token: Post https://oauth2.googleapis.com/token: x509: certificate signed by unknown authority

Моя строка подключения выглядит следующим образом:

[dbUser]:[dbPassword]@cloudsql([instanceName])/[dbName]]?charset=utf8&parseTime=True&loc=Local

И прокси-номеронабирательтень импортируется как:

_ github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql

У кого-нибудь есть идеи, что может отсутствовать?

РЕДАКТИРОВАТЬ:

Спецификация развертывания выглядит примерно так (В формате JSON):

{
  "replicas": 1,
  "selector": {
    ...
  },
  "template": {
    ...
    "spec": {
      "containers": [
        {
          "image": "[app-docker-imager]",
          "name": "...",
          "env": [
            ...
            {
              "name": "MYSQL_PASSWORD",
              ...
            },
            {
              "name": "MYSQL_USER",
              ...
            },
            {
              "name": "GOOGLE_APPLICATION_CREDENTIALS",
              "value": "..."
            }
          ],

          "ports": [
            {
              "containerPort": 8080,
              "protocol": "TCP"
            }
          ],
          "volumeMounts": [
            {
              "mountPath": "/secrets/cloudsql",
              "name": "[secrets-mount-name]",
              "readOnly": true
            }
          ]
        },
        {
          "command": [
            "/cloud_sql_proxy",
            "-instances=...",
            "-credential_file=..."
          ],
          "image": "gcr.io/cloudsql-docker/gce-proxy:1.11",
          "name": "...",
          "ports": [
            {
              "containerPort": 3306,
              "protocol": "TCP"
            }
          ],
          "volumeMounts": [
            {
              "mountPath": "/secrets/cloudsql",
              "name": "[secrets-mount-name]",
              "readOnly": true
            }
          ]
        }
      ],
      "volumes": [
        {
          "name": "[secrets-mount-name]",
          "secret": {
            "defaultMode": 420,
            "secretName": "[secrets-mount-name]"
          }
        }
      ]
    }
  }
}

1 Ответ

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

Сообщение об ошибке указывает, что ваш клиент не может доверять сертификату https://www.googleapis.com. Для этого есть две возможные причины:

  1. Ваш клиент не знает, чтокорневые сертификаты доверять.Официальный образ докера cloudsql-proxy включает в себя корневые сертификаты, поэтому, если вы используете этот образ, это не ваша проблема.Если вы не используете этот образ, вам следует (или, по крайней мере, установить сертификаты CA в своем образе).

  2. Ваш исходящий трафик перехватывается прокси-сервером, который использует другой,недоверенный, сертификат.Это может быть вредоносным (в этом случае вам нужно выяснить, кто перехватывает ваш трафик).Более того, вы можете быть в организации, использующей исходящий прокси-сервер для проверки трафика в соответствии с политикой.В этом случае вам следует создать новый образ докера, который включает сертификат CA, используемый исходящим прокси-сервером вашей организации.

...