我正在尝试用cert-manager、istio ingress和LetsEncrypt在kubernetes中配置SSL证书。我已经安装了istio和helm,cert-manager,创建了ClusterIssuer,然后我试图创建一个证书。acme挑战无法验证,我正在尝试使用http01进行验证,但无法解决如何使用istio ingress进行验证的问题。Istio部署有以下选项:
helm install --name istio install/kubernetes/helm/istio `
--namespace istio-system `
--set global.controlPlaneSecurityEnabled=true `
--set grafana.enabled=true`
--set tracing.enabled=true
--set kiali.enabled=true `
--set ingress.enabled=true
证书配置:
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: example.com
namespace: istio-system
spec:
secretName: example.com
issuerRef:
name: letsencrypt-staging
kind: ClusterIssuer
commonName: 'example.com'
dnsNames:
- example.com
acme:
config:
- http01:
ingress: istio-ingress
domains:
- example.com
在尝试这种方式时,由于某些原因,无法找到istio-ingress,但当尝试指定ingressClass:some名称而不是ingress:istio-ingress时,我得到了404,因为example.com/。无法访问众所周知的/acme挑战/令牌。如何解决这一问题?非常感谢。
解决方案是将DNS移动到azure,并使用DNS验证来生成证书。我还使用了istio-1.1.0-rc。3,并按以下方式配置网关:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: mygateway
spec:
selector:
istio: ingressgateway # use istio default ingress gateway
servers:
- hosts:
- 'mydomain.com'
port:
name: http-bookinfo
number: 80
protocol: HTTP
tls:
httpsRedirect: true
- hosts:
- 'mydomain.com'
port:
name: https-bookinfo
number: 443
protocol: HTTPS
tls:
mode: SIMPLE
serverCertificate: "use sds" #random string, because serverCertificate and
#privateKey are required for tls.mode=SIMPLE
privateKey: "use sds"
credentialName: "istio-bookinfo-certs-staging" #this must match the secret name
#from the certificate
Istio入口已被否决,您可以使用带有DNS质询的入口网关。
定义通用公共入口网关:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: public-gateway
namespace: istio-system
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
tls:
httpsRedirect: true
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- "*"
tls:
mode: SIMPLE
privateKey: /etc/istio/ingressgateway-certs/tls.key
serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
使用证书管理器支持的 DNS 提供程序之一创建颁发者。以下是 GCP CloudDNS 的配置:
apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
name: letsencrypt-prod
namespace: istio-system
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: email@example.com
privateKeySecretRef:
name: letsencrypt-prod
dns01:
providers:
- name: cloud-dns
clouddns:
serviceAccountSecretRef:
name: cert-manager-credentials
key: gcp-dns-admin.json
project: my-gcp-project
创建一个通配符证书:
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: istio-gateway
namespace: istio-system
spec:
secretname: istio-ingressgateway-certs
issuerRef:
name: letsencrypt-prod
commonName: "*.example.com"
acme:
config:
- dns01:
provider: cloud-dns
domains:
- "*.example.com"
- "example.com"
证书管理器发布证书需要几分钟时间:
kubectl -n istio-system describe certificate istio-gateway
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CertIssued 1m52s cert-manager Certificate issued successfully
您可以在此处找到使用Let's Encrypt在GKE上设置Istio入口的分步指南https://docs.flagger.app/install/flagger-install-on-google-cloud#cloud-dns设置
我们在裸机服务器上设置了库伯内特斯集群。 我们部署应用程序,其中每个命名空间都是最终客户的应用程序。即customer1.mydomain.com- 我们不断获得库伯内特斯入口控制器假证书。 我们购买了自己的通配符证书*。mydomain。通用域名格式 进入。亚马尔 https://cust1.mydomain.com连接库伯内特斯入口控制器假证书
申请 Domain Name 首先就是申请一个你要的网域, 这边网路上资源很多都可以查一下哪个网域商或是一些相关的建议, 这边我就先不去多做介绍了, 文章中会以 sam.nctu.me 来作范例 用 Letsencrypt 来签发凭证 这边我们用手动的把它先签下来, 上 Letsencrypt 去安装 certbot, 手动签的方式也可以参考签 letsencrpyt 凭证 文章, 输入以下指令来
我对 Kubernetes 很陌生。但到目前为止,能够配置AKS(Azure Kubernetes Services)群集。我的服务有多个命名空间(开发、阶段、生产)。并使用nginx配置了一个入口服务(进入它自己的命名空间“ingress-nginx”)。该设置与HTTP完美配合。 当我试图使用HTTPS时,我的问题就开始了。使用此脚本首次安装证书管理器。它再次创建了自己的名称空间:“cert-
我对保护服务器不太熟悉,所以我对这方面不太了解,但我需要让运行在数字海洋水滴上的Spring Boot应用程序使用HTTPS。 我的想法是注册一个letsencrypt证书,然后告诉Spring使用它。 然而,我不知道如何做到这一点。 谢谢。
问题内容: 我正在尝试从使用用户名和密码登录到我的MySQL数据库服务器的未加密JDBC连接转移到使用SSL和基于证书的身份验证的连接。我在Spring MVC中使用Hibernate。我的WebAppConfig文件如下所示: 而我的属性配置文件(application.properties)如下: 我已经在/ etc / mysql / certs内部生成了正确的证书,并编辑了my.cnf以指
我们正在GKE上的k8s集群上运行一个应用程序。 我们正在使用一个nginx入口控制器作为外部负载平衡器服务,比如说,https://12.345.67.98 . 我们面临的一个问题是,当我们直接访问上述URL上的负载平衡器时,我们会收到一个证书警告,因为使用了自签名的“Kubernetes入口控制器假证书”。 我们只有将我们的域(例如app.our company.com)映射到Kubernet