购买国外域名参考:国外域名购买交易网站汇总,小编在godaddy购买的域名。
参考:Kubernetes Ingress 配置泛域名 TLS 证书
$ kubectl create ns cert-manager
$ helm uninstall cert-manager -n cert-manager
$ helm install cert-manager jetstack/cert-manager \
-n cert-manager \
--version v1.8.0 \
--set installCRDs=true \
--set prometheus.enabled=false \
--set 'extraArgs={--dns01-recursive-nameservers-only,--dns01-recursive-nameservers=119.29.29.29:53\,8.8.8.8:53}'
kubectl create secret generic cloudflare-api-token-secret --from-literal=api-token=xxxxxxxxxxxxxx -n cert-manager
#把xxxxxxxxxxxxxx 替换为你的cloudflare上的token
上述创建方式翻译为资源文件Secret.yaml:
apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token-secret
namespace: cert-manager
type: Opaque
stringData:
# #把xxxxxxxxxxxxxx 替换为你的cloudflare上的token
api-token: xxx
创建资源kubectl apply -f Secret.yaml,查看资源
# 指定了使用的 Kubernetes API 版本和 cert-manager 的 API 组
apiVersion: cert-manager.io/v1
# 指定了这个 YAML 文件定义的 Kubernetes 对象类型为 ClusterIssuer,表示这是一个集群级别的证书颁发者。
kind: ClusterIssuer
# 部分包含了 Kubernetes 对象的元数据,包括名称 "letsencrypt" 和命名空间 "base"
metadata:
name: letsencrypt
namespace: base
# 部分定义了 ClusterIssuer 对象的规范
spec:
# acme 部分定义了使用 ACME 协议进行证书颁发的配置信息
acme:
# 指定了 Let's Encrypt ACME 服务器的 URL
server: https://acme-v02.api.letsencrypt.org/directory
# 指定了与 Let's Encrypt 交互时使用的电子邮件地址
email: [email protected]
# 指定了用于存储私钥的 Kubernetes Secret 对象的名称
privateKeySecretRef:
name: letsencrypt
# 部分定义了用于验证域名所有权的 DNS 验证器,以确保证书颁发请求是由域名所有者发起的
solvers:
# 表示使用 DNS 验证器进行验证
- dns01:
# 表示使用 Cloudflare DNS 服务进行验证
cloudflare:
# 指定了与 Cloudflare 交互时使用的电子邮件地址
email: [email protected]
apiTokenSecretRef:
# 指定了用于访问 Cloudflare API 的 Kubernetes Secret 对象的名称和键
name: cloudflare-api-token-secret
key: api-token
这个 Kubernetes YAML 文件定义了一个名为 “letsencrypt” 的 ClusterIssuer 对象,用于配置 cert-manager 应用程序与 Let’s Encrypt 证书颁发机构进行交互,以自动为 Kubernetes 集群中的 Ingress 资源颁发 SSL/TLS 证书。
# 指定了使用的 Kubernetes API 版本和 cert-manager 的 API 组
apiVersion: cert-manager.io/v1
# 指定了这个 YAML 文件定义的 Kubernetes 对象类型为 Certificate,表示这是一个证书对象
kind: Certificate
# 部分包含了 Kubernetes 对象的元数据
metadata:
name: Certificate
namespace: base
spec:
# 指定了用于存储证书的 Kubernetes Secret 对象的名称
secretName: remote-yxym-shop-tls
# 指定了用于颁发证书的证书颁发者的名称和类型,这里指定了名为 "letsencrypt" 的 ClusterIssuer 对象
issuerRef:
name: letsencrypt
kind: ClusterIssuer
# 指定了证书颁发请求中包含的域名列表,这里只列出了一个名为 "xxx" 的域名。这些域名将用于验证证书颁发请求的域名所有权。
dnsNames:
- xxx
这个 Kubernetes YAML 文件定义了一个名为 “Certificate” 的 Certificate 对象,用于配置 cert-manager 应用程序获取 Let’s Encrypt 证书并将其存储在 Kubernetes 集群中的 Secret 对象中,以供 Ingress 资源使用。
kubectl apply -f cluster-issuer.yaml
kubectl apply -f cert.yaml
kubectl get certificate -n >
kubectl get challenge -n <namespace>
kubectl describe challenge challenge-xxxxxx -n <namespace>
爱快中端口映射到了99端口,内网网关域名为192.168.31.11
背景及现象:应用商店部署harbor,在浏览器通过https能登录,但是在linux中通过docker login提示错误443端口连接不上,部署情况: