使用cert-manager给阿里云的DNS域名授权SSL证书

简介: 背景介绍cert-manager是Kubernetes上一个管理SSL证书的插件,配合nginx-ingress可以对网站配置https访问,在加上letsencrypt提供免费的SSL证书,所有就产生了cert-manager+nginx-ingress+letsencrypt的免费套餐。

背景介绍
cert-manager是Kubernetes上一个管理SSL证书的插件,配合nginx-ingress可以对网站配置https访问,在加上letsencrypt提供免费的SSL证书,所有就产生了cert-manager+nginx-ingress+letsencrypt的免费套餐。 但是cert-manager默认是不支持阿里云的DNS的,需要自己编写webhook,借助网上大神编写的webhook,自己修改后用于本篇文章使用
环境准备
Kubernetes 1.12.1+
nginx-ingress(必须能够有公网IP,不然DNS认证过不了),阿里云的Kubernetes集群已经提供这个功能
cert-manager
阿里云DNS(已经备案,如果没有备案www是打不开的)
部署大致步骤
一. 在Kubernetes上安装cert-manager
二. 安装alidns的webhook
三. 配置Issuer
四. 配置Ingress

一 K8S上安装cert-manager

$ kubectl create namespace cert-manager
$ kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
如果是1.12或者以下的k8s集群,需要添加--validate=false,我的集群就需要添加
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v0.10.0/cert-manager.yaml --validate=false
$ kubectl get po  -n cert-manager

NAME                                           READY     STATUS    RESTARTS   AGE
cert-manager-78d674b8b5-wfqh4                  1/1       Running   0          3h39m
cert-manager-cainjector-664bb64c66-9h9sc       1/1       Running   0          3h39m
cert-manager-webhook-9c6fd5f7f-tz2gj           1/1       Running   0          3h39m
#验证cert-manager
$ cat <<EOF > test-resources.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: cert-manager-test
---
apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
  name: test-selfsigned
  namespace: cert-manager-test
spec:
  selfSigned: {}
---
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: selfsigned-cert
  namespace: cert-manager-test
spec:
  commonName: example.com
  secretName: selfsigned-cert-tls
  issuerRef:
    name: test-selfsigned
EOF
$ kubectl apply -f test-resources.yaml
$ kubectl describe certificate -n cert-manager-test , 最后一行看到Certificate issued successfully,就代表安装成功
Events:
  Type    Reason      Age   From          Message
  ----    ------      ----  ----          -------
  Normal  CertIssued  4s    cert-manager  Certificate issued successfully
$ kubectl delete -f test-resources.yaml

二 安装alidns的webhook

   $ git clone https://github.com/kevinniu666/cert-manager-webhook-alidns.git
   $ cd cert-manager-webhook-alidns
   $ helm install --name cert-manager-webhook-alidns --namespace=cert-manager ./deploy/webhook-alidns
   #查看webhook
   $ kubectl get po -n cert-manager
   NAME                                           READY     STATUS    RESTARTS   AGE
cert-manager-78d674b8b5-wfqh4                  1/1       Running   0          3h50m
cert-manager-cainjector-664bb64c66-9h9sc       1/1       Running   0          3h50m
cert-manager-webhook-9c6fd5f7f-tz2gj           1/1       Running   0          3h50m
cert-manager-webhook-alidns-6f9695b7c4-cmdwz   1/1       Running   0          65m

三 配置Issuer

   #cert-manager有两种issuer,Issuer和ClusterIssuer,区别就是Role和ClusterRole的区别吧(自己理解的)
   #通过阿里云RAM创建一个账号,并授权DNSFullAccess权限,将账号的AK记下来,并通过下面的命令创建secret,这个secret用于webhook在DNS认证的时候,会向DNS解析里面写入一条txt类型的记录,认证完成后删除.如果要在一个cert-manager配置多个在不同阿里云账号下的DNS,后面有说明,主要是ClusterRole要改一下。
   $ kubectl -n cert-manager create secret generic alidns-credentials --from-literal=accessKeySecret='evNH0A***fONnnTy2r'
   $ kubectl apply -f letsencrypt-clusterissuer.yaml #这个文件里面就引用了刚刚创建的secret,AK的ID是直接输入的,也可以把ID放在secret里面,然后应用。
   $ kubectl get clusterissuer
NAME                            AGE
letsencrypt-prod                1h

四 配置ingress

 $ kubectl apply -f ingress.yaml , 这里面加入了cluster-issuer的注解,cert-manager会自动根据域名去创建certificate,order,challenge等
 $ kubectl get ing 
NAME                HOSTS                 ADDRESS          PORTS     AGE
demo-ingress        cert.****.com   1**.2*.164.22*   80, 443   70m
$ kubectl get certificate, REDAY是True就代表证书从letsencrypt下发成功了。
NAME                 READY     SECRET               AGE
da***-com-tls        True      da**-com-tls   1h
#如果是false,看看challenge状态,dns的验证需要等一会,为了让txt记录生效
$ kubectl get challenge
NAME                            STATE     DOMAIN         AGE
**-tls-2231756264-0             pending   ***.com   5m
$ kubectl describe challenge ***-tls-2231756264-0 ,成功后会有如下的提示,challenge在成功验证后会被自动删除
....
  Normal   Presented     28s              cert-manager  Presented challenge using dns-01 challenge mechani

五 打开浏览器,访问ingress里面的地址

PS:对于不同阿里云账号下的域名,需要创建不同的ClusterIssuer然后分别应用不同的secret,在ingress创建的时候,注解也需要引用响应的issuer.

$ kubectl -n cert-manager create secret generic alidns-credentials-2 --from-literal=accessKeySecret='evNH*****fONnnTy2r'

$ kubectl apply -f letsencrypt-clusterissuer-2.yaml

$ kubectl apply -f ingress-2.yaml

$ kubectl edit clusterrole cert-manager-webhook-alidns:secret-reader #将刚刚创建的secret加入到resourceNames里面

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  creationTimestamp: 2019-09-18T07:31:41Z
  name: cert-manager-webhook-alidns:secret-reader
  resourceVersion: "100733766"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/cert-manager-webhook-alidns%3Asecret-reader
  uid: 5bcdb127-d9e6-11e9-bd87-00163e08a2e5
rules:
- apiGroups:
  - ""
  resourceNames:
  - alidns-credentials-2
  - alidns-credentials
  resources:
  - secrets
  verbs:
  - get
  - watch

访问ingress-2中的域名验证

目录
相关文章
|
1天前
|
安全
欢迎和阿里云一起使用国家顶级域名!
中国国家顶级域名包括“.CN”和“.中国”域名,已经成为我国政府、机构、企事业单位以及重大赛事活动的主用域名
|
6天前
|
移动开发 API
阿里云cn域名续费优惠口令
2024阿里云cn域名续费优惠口令“cn注册多个价格更优”,cn域名注册优惠口令“互联网上的中国标识”
|
6天前
|
移动开发 API
阿里云com域名续费优惠口令“com批量注册更享优惠”
阿里云com域名续费优惠口令“com批量注册更享优惠”
|
6天前
|
移动开发 API
阿里云域名注册购买优惠口令,2024新版优惠口令
阿里云域名注册购买优惠口令,2024新版优惠口令,阿里云cn域名注册优惠口令“cn注册多个价格更优”
|
6天前
|
移动开发 API
阿里云com域名优惠口令,2024亲测可用
2024阿里云com域名续费优惠口令“com批量注册更享优惠”,阿里云百科分享2024年阿里云域名优惠口令更新(注册、转入、续费均可使用)
|
1天前
|
弹性计算 大数据 测试技术
阿里云服务器多少钱_阿里云服务器租用价格表,2024年月付及年付租用优惠价格表
2024年阿里云服务器租用价格现已公布!用户现在可以通过官方活动选择租用云服务器,月付选项涵盖1个月到9个月,而年付则可选择1年到3年或1年到5年的租期。对于云服务器ECS,我们提供经济型e实例和u1实例,其中2核2G配置、搭配3M固定带宽的e实例仅需99元一年。而u1实例则提供2核4G配置、5M固定带宽和80G ESSD Entry盘,优惠价格仅为199元一年。对于轻量应用服务器,我们提供多种配置选择。2核2G配置、3M带宽的轻量服务器一年仅需61元。如果您需要更高的性能,2核4G配置、4M带宽的轻量服务器一年只需165元。此外,我们还提供2核4G配置的服务器,用户可以享受3个月仅需30元
|
1天前
|
机器学习/深度学习 存储 弹性计算
阿里云GPU服务器价格多少钱?2024年阿里云GPU服务器价格配置及性能测评
2024年阿里云GPU服务器是一款高性能的计算服务器,基于GPU应用的计算服务,多适用于视频解码、图形渲染、深度学习、科学计算等应用场景。阿里云GPU服务器具有超强的计算能力、网络性能出色、购买方式灵活、高性能实例存储等特点。 阿里云提供了多种配置的GPU服务器,包括gn6v、gn6i、vgn6i-vws和gn6e等,这些服务器配备了不同型号的GPU计算卡、不同规格的内存和存储空间,可以满足不同用户的计算需求。同时,阿里云还为新用户提供了特惠价格,包年购买更是低至3折起,使得用户可以更加经济地购买到高性能的GPU服务器。
17 0
|
1天前
|
存储 弹性计算 大数据
阿里云8核64G云服务器多少钱?2024年阿里云8核64G云服务器配置、价格、性能测评
2024年阿里云8核64G云服务器的价格为9934.16元一年。该价格基于特定的配置和促销活动,并可能因时间、活动政策、地域等因素而有所变动。关于阿里云8核64G云服务器的性能测评,该服务器配备了64GB的内存和8核的CPU,具有极高的计算能力和处理速度,适用于处理超大型数据、运行复杂应用或需要极高并发处理能力的场景。多种带宽选择(从1M到5M)可以满足不同的网络需求,确保数据传输的高效性。同时,40GB ESSD云盘提供了快速且稳定的数据存储解决方案,有助于提升整体性能。
|
1天前
|
存储 弹性计算 大数据
阿里云4核32G云服务器多少钱?2024年阿里云4核32G云服务器配置报价详细测评
2024年阿里云4核32G云服务器的价格为5121.88元一年。这个价格基于特定的配置和促销活动,并且可能因时间、活动政策、地域等因素而有所变动。关于阿里云4核32G云服务器的性能测评,该服务器配备了32GB的内存和4核的CPU,提供了出色的计算能力和处理速度。对于需要处理大型数据、运行复杂应用或需要高并发处理能力的场景,这款服务器能够提供稳定且高效的服务。多种带宽选择(从1M到5M)可以满足不同的网络需求,而40GB ESSD云盘则提供了快速且可靠的数据存储解决方案。
|
1天前
|
存储 弹性计算 大数据
阿里云2核16G云服务器多少钱?2024年阿里云2核16G云服务器配置价格及性能详解
2024年阿里云2核16G云服务器的价格为2715.74元一年。这个价格基于特定的配置和促销活动,并且可能因时间、活动政策、地域等因素而有所变动。关于阿里云2核16G云服务器的性能测评,该服务器配备了16GB的内存和2核的CPU,虽然核数相对较少,但16GB的内存可以确保处理大型任务或应用时的流畅性。多种带宽选择(从1M到5M)可以满足不同的网络需求。40GB ESSD云盘提供了高速且稳定的存储性能,这对于提升数据读写效率非常重要。
10 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多