k8s 使用cert-manager证书管理自签

个人建议使用安装更快,比helm快,还要等待安装crd

js 复制代码
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml
js 复制代码
#官网
https://cert-manager.io/docs/installation/kubectl/
js 复制代码
#创建自签的ClusterIssuer
cat >  signing-custom.yaml <<-EOF
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: selfsigned-clusterissuer
spec:
  selfSigned: {}

---
#生成证书
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: java-selfsigned-ca
  namespace: cert-manager
spec:
  isCA: true
  commonName: java-selfsigned-ca
  secretName: java-selfsigned-secret # 生成的证书名
  duration: 360h
  privateKey:
    algorithm: ECDSA
    size: 256
  issuerRef:
    name: selfsigned-clusterissuer # 对应上面清单中创建的clusterissuer名称
    kind: ClusterIssuer
    group: cert-manager.io
---
#生成以这个证书作为CA的ClusterIssuer,其他证书由这个CA签发
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: my-ca-issuer
spec:
  ca:
    secretName: java-selfsigned-secret # 对应以上Certificate资源证书名
EOF

查看你的证书

js 复制代码
kubectl get clusterissuers,certificate
kubectl -n cert-manager get secret

手动签发ssl自签证书

js 复制代码
cat > server-tls.yaml  <<-EOF
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: java-com
spec:
  secretName: java-tls
  duration: 12160h # 你想要的时间
  renewBefore: 3600h #
  subject:
    organizations:
      - jetstack
  commonName: abc.exchangs.top
  isCA: false
  privateKey:
    algorithm: RSA
    encoding: PKCS1
    size: 2048
  usages:
    - server auth
    - client auth
  dnsNames:
    - exchangs.top
    - abc.exchangs.top
  ipAddresses:
    - 192.168.0.53
  issuerRef:
    name: my-ca-issuer # 指定上面创建好的用于签名的CA
    kind: ClusterIssuer
    group: cert-manager.io
EOF

最后ingress

js 复制代码
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: springboot-server
  #annotations:
    #cert-manager.io/cluster-issuer: "letsencrypt-prod"

spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - abc.exchangs.top
    - bbc.exchangs.top
    secretName: java-tls
  rules:
  - host: abc.exchangs.top
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: springboot-server
            port:
              number: 8080
  - host: bbc.exchangs.top
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: springboot-server
            port:
              number: 8080

最后访问

js 复制代码
curl -kivL -H 'Host: bbc.exchangs.top' 'https://192.168.0.53'


相关推荐
ℳ₯㎕ddzོꦿ࿐几秒前
实战指南:使用 Docker Compose 优雅部署 MongoDB 并自动初始化用户
mongodb·docker·容器
yyyyy_abc11 分钟前
docker学习笔记
运维·docker·容器
一起逃去看海吧15 分钟前
Dify-01-docker安装 和 dify部署
运维·docker·容器
叶~小兮17 分钟前
K8S-Helm与灰度发布学习笔记
笔记·学习·kubernetes
月光技术杂谈20 分钟前
深度解析:基于Docker跨架构构建RK3588嵌入式rootfs的原理、边界与最佳实践
docker·容器·rootfs·rk3588·openeuler·欧拉·文件系统构建
容器魔方25 分钟前
Kthena 核心原语:ModelServing CRD 如何定义分布式推理“新标准”?
大数据·分布式·云原生·容器·云计算
xingfujie25 分钟前
第1章:整体架构与准备工作
linux·云原生·容器·架构·kubernetes·kubelet
Cat_Rocky35 分钟前
K8s-蓝绿发布 简单实验
云原生·容器·kubernetes
运维老郭35 分钟前
【K8S调度避坑指南】5类调度策略硬核拆解:nodeSelector不够用?亲和性、污点与容忍度生产级实战
运维·云原生·kubernetes
xingfujie39 分钟前
前言:从零到一,系统掌握 K8s + DevOps + 微服务
linux·运维·微服务·云原生·容器·kubernetes·devops