腾讯云证书部署
腾讯云的clb类型的 ingress 要求的证书类型是 opaque 类型的
所以在创建clb类型的 ingress 的 时候需要先制作一下 opaque 类型 的 secret
如果证书是在云平台的话制作比较简单,在 secret的界面,可以通过可视化的界面点击新建
在变量名这里填写 qcloud_cert_id 变量值填写在云平台中申请的证书的实例id
这个id是可以在证书管理中看到的
腾讯云证书管理控制台: https://console.cloud.tencent.com/ssl
点击我的证书查看证书id
然后进行填写即可,注意,这个命令空间要和 ingress 的命名空间一致
然后进行部署即可
阿里云证书部署
使用阿里云的证书部署操作步骤需要先上传证书
第一步需要先在阿里云的证书页面下载证书
类型需要选择这个
第二步需要在腾讯云这边上传证书
在证书管理界面的控制台: https://console.cloud.tencent.com/ssl
点击上传证书,上传对应的公钥和私钥
上传成功后就可以参考上面腾讯云部署证书的步骤,创建对应的 opaque 类型 的 secret
yaml 创建 secret 可以参考这个
apiVersion: v1
stringData:
qcloud_cert_id: GJI5xxx ## 配置证书 ID 为 Xxxxxxxx
#qcloud_ca_cert_id: Xxxxxxxx ## 配置证书 ID 为 Xxxxxxxx。仅配置双向证书时需要,见下面的“注意”。
kind: Secret
metadata:
name: ceshi
namespace: default
type: Opaque
完整部署的yaml文件
完整部署的yaml文件如下,可以参考一下
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
labels:
app: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx-deployment
template:
metadata:
labels:
app: nginx-deployment
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
## annotations:
## service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxxxxx ##若是创建内网访问的 Service 需指定该条 annotation
name: my-service
spec:
selector:
app: nginx-deployment
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
---
apiVersion: v1
stringData:
qcloud_cert_id: GJI5xxx ## 配置证书 ID 为 Xxxxxxxx,需要自己替换
#qcloud_ca_cert_id: Xxxxxxxx ## 配置证书 ID 为 Xxxxxxxx。仅配置双向证书时需要,见下面的“注意”。
kind: Secret
metadata:
name: ceshi
namespace: default
type: Opaque
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: qcloud ## 可选值:qcloud(CLB类型ingress), nginx(nginx-ingress),traefik
kubernetes.io/ingress.rule-mix: "true"
kubernetes.io/ingress.https-rules: '[{"host":"aa.com","path":"/","backend":{"serviceName":" my-service","servicePort":"80"}}]'
kubernetes.io/ingress.http-rules: '[{"host":"aa.com","path":"/","backend":{"serviceName":" my-service","servicePort":"80"}}]'
## kubernetes.io/ingress.existLbId: lb-xxxxxxxx ##指定使用已有负载均衡器创建公网/内网访问的Ingress
## kubernetes.io/ingress.subnetId: subnet-xxxxxxxx ##若是创建CLB类型内网ingress需指定该条annotation
name: my-ingress
namespace: default
spec:
#ingressClassName: qcloud
tls:
- hosts:
- aa.com # 自己的域名
secretName: ceshi
rules:
- host: aa.com
http:
paths:
- backend:
service:
name: my-service
port:
number: 80
path: /
pathType: ImplementationSpecific