腾讯云证书部署

腾讯云的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