我已经创建了一个全新的 K8S 集群
我已经创建了 Ingress nginx 控制器。
控制器创建了一个命名空间,其中包含所有必需的 Pod、Svcs 等。
我创建了一个 Ingress 对象,该对象将流量路由到启用了 TLS 的部署服务。
我已经创建了一个集群颁发者对象。
检查 kubectl describe cert
时一切正常。
检查 kubectl describe clusterissuer
时也是如此。
执行 curl https://example.com/
时返回以下错误:
curl: (60) SSL 证书问题:无法获取本地颁发者证书 更多详情请见:https://curl.haxx.se/docs/sslcerts.html
curl 未能验证服务器的合法性,因此无法 与其建立安全连接。要了解有关这种情况的更多信息和 如何修复,请访问上述网页。
没有SSL,从外部启用访问并正常工作,当在Ingress对象中添加SSL配置时,它再次失败。
ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- k8s-poc.example.com
secretName: echo-tls
rules:
- host: k8s-poc.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: test-svc
port:
number: 3333
test-depl.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-depl
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: mydockeruser/test:42
ports:
- containerPort: 3333
imagePullSecrets:
- name: docker-regcred
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: test-svc
spec:
selector:
app: test
ports:
- name: http
protocol: TCP
port: 3333
targetPort: 3333
prod-issuer.yaml:
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
namespace: cert-manager
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: my@email.com
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-prod
# Enable the HTTP-01 challenge provider
solvers:
- http01:
ingress:
class: nginx