Я использую golang echo Auto TLS. Рецепт найден здесь . Я приобрел свой домен у доменов Google, и я управляю DNS в облачном DNS Google. Я обновил свой домен Google с помощью пользовательских серверов, чтобы он указывал на мой облачный DNS, и мое DNS-имя для этой службы сопоставлено со статическим IP-адресом. Кажется, все хорошо. Мой API работает в кластере kubernetes со следующей конфигурацией службы:
apiVersion: v1
kind: Service
metadata:
name: api
labels:
app: api
spec:
type: LoadBalancer
loadBalancerIP: "my_static_ip_here"
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
- name: https
protocol: TCP
port: 443
targetPort: 443
selector:
app: api
Вот мое развертывание:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: default
name: api
spec:
replicas: 1
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: myimagehere
imagePullPolicy: Always
command: [
"./api",
"--selector=static"
]
envFrom:
- configMapRef:
name: my-config
env:
- name: UPDATED_AT
value: "Mon Oct 14 16:10:09 MDT 2019"
ports:
- containerPort: 443
name: https-port
- containerPort: 80
name: http-port
volumeMounts:
- mountPath: /mnt/point
name: api-data
volumes:
- name: api-data
persistentVolumeClaim:
claimName: api-vol
Вот код, который я использую в своем маршрутизаторе для использования letsencrypt,
echo.AutoTLSManager.HostPolicy = autocert.HostWhitelist("my.domain.io")
echo.AutoTLSManager.Cache = autocert.DirCache("/mnt/point/autocert")
echo.Pre(middleware.HTTPSRedirect())
Когда я скручиваю https://my.domain.io, я получаю SSL routines:CONNECT_CR_SRVR_HELLO:tlsv1 alert internal error
и ошибки API с: echo: http: TLS handshake error from 10.32.0.1:49729: Get https://acme-v02.api.letsencrypt.org/directory: x509: certificate signed by unknown authority
Что мне здесь не хватает? У меня это работало в моем предыдущем проекте без необходимости установки certbot. Вещи просто работали из коробки. Я забыл что-то сделать с этим конфигом?
Редактировать: Хорошо, я немного покопался, и похоже, что x509 был вызван отсутствием сертификатов CA в моем док-контейнере. Я добавил 'RUN apk --no-cache add ca-Certificates' к своему альпийскому образу, но теперь, похоже, мне нужно выполнить соответствующую задачу. Должно быть, я выполнил вызов dns ранее, так как не вижу никаких признаков реализации типа HTTP-01 в моем более старом проекте.
Редактировать 2: Кажется, я исправил проблему. Похоже, я застрял на старой версии эха. После обновления до echo v4.1.11 все снова стало хорошо. Дело закрыто!