Я использую приложение MyHealthClinic (https://azuredevopslabs.com/labs/vstsextend/kubernetes/), которое является интерфейсом .NET Core и внутренним кластером Kubernetes, и развертываю в Google Kubernetes Engine, пытаясь подключиться к виртуальной машине SQL Server, но получаю следующую ошибку с CrashLoopBackOffкогда модуль пытается запуститься после вытягивания изображения, которое я нажал:
Unhandled Exception: System.Data.SqlClient.SqlException: A connection was successfully
established with the server, but then an error occurred during the pre-login handshake.
(provider: TCP Provider, error: 35 - An internal exception was caught) --->
System.Security.Authentication.AuthenticationException: The remote certificate is invalid
according to the validation procedure. at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken ...
Я проверил свой appsettings.json, и мне кажется правильным, что он установлен как:
"DefaultConnection": "Server={my-external-IP},1433;Initial Catalog=mhcdb;Persist Security Info=False;User ID={sqlusername};Password={sqlpassword};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
Я также подтвердил:
- Виртуальная машина SQL доступна со всех внешних IP-адресов, которые у меня есть для внешнего кластера и моей локальной машины
- Брандмауэр на машине и длясеть VPC имеет разрешенный порт 1433
- Я могу успешно подключиться с локального компьютера, используя тот же IP-адрес для виртуальной машины SQL, и кредиты
- IP-адрес для строки подключения указывается без http / https
Можно ли проверить еще где-нибудь, чтобы попытаться это исправить? Я могу без проблем развернуть кластер в AKS в Azure, но не уверен, что GKE может быть блокированИсходящие соединения из кластеров.Пока единственные похожие вопросы, которые я обнаружил, связаны с SMTP-серверамиЯ немного новичок в GKE, поэтому любые идеи помогут.
Если это поможет, вот мой файл развертывания YAML (сохраняется для кластера AKS, поэтому не уверен, нужно ли что-то менять специально для GKE):
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mhc-back
spec:
replicas: 1
template:
metadata:
labels:
app: mhc-back
spec:
containers:
- name: mhc-back
image: redis
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: mhc-back
spec:
ports:
- port: 6379
selector:
app: mhc-back
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mhc-front
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: mhc-front
spec:
containers:
- name: mhc-front
image: {gcr.io/[Project-Id]}/myhealth.web:latest
imagePullPolicy: Always
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
env:
- name: REDIS
value: "mhc-back"
---
apiVersion: v1
kind: Service
metadata:
name: mhc-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: mhc-front