【Kubernets】Kubernets进阶-Ingress配置SSL证书


在 Kubernetes 中,Ingress 资源可以用来管理外部访问到集群内服务的 HTTP 流量,并且可以通过配置 SSL 证书来启用 HTTPS。以下是配置 Ingress 以使用 SSL 证书的基本步骤:

1. 准备 SSL 证书和私钥

首先,你需要有一个有效的 SSL 证书和对应的私钥。这可以是一个由权威证书颁发机构(CA)签发的证书,也可以是一个自签名的证书。证书和私钥通常以 PEM 格式存储。

2. 创建 Kubernetes Secret

将证书和私钥存储在 Kubernetes Secret 中,以便 Ingress 资源可以引用它们。以下是一个示例命令,用于创建一个包含证书和私钥的 Secret:

kubectl create secret tls my-tls-secret --cert=path/to/tls.crt --key=path/to/tls.key

这里,my-tls-secret 是你创建的 Secret 的名称,tls.crt 是证书文件的路径,tls.key 是私钥文件的路径。

3. 配置 Ingress 资源

接下来,你需要在 Ingress 资源中配置 SSL 证书。这可以通过在 Ingress 的 YAML 配置文件中设置 tls 字段来完成。以下是一个示例 Ingress 配置,它使用了上一步创建的 Secret:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
  tls:
  - hosts:
    - mydomain.com
    secretName: my-tls-secret
  rules:
  - host: mydomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

在这个配置中,tls 字段定义了一个证书配置,其中 hosts 指定了需要启用 HTTPS 的主机名,secretName 引用了之前创建的包含证书和私钥的 Secret。

4. 应用 Ingress 配置

使用 kubectl apply 命令应用 Ingress 配置:

kubectl apply -f my-ingress.yaml

这里,my-ingress.yaml 是你的 Ingress 配置文件。

5. 验证配置

一旦 Ingress 资源被应用,你可以通过访问 https://mydomain.com 来验证 SSL 证书是否已正确配置。如果一切设置正确,你应该能够看到由证书保护的 HTTPS 页面。

注意事项

  • 确保你的域名(在这个例子中是 mydomain.com)指向了 Ingress 控制器的公共 IP 地址。
  • 如果你在本地开发环境中使用自签名证书,你的浏览器可能会警告证书不可信。这是因为自签名证书不是由受信任的 CA 签发的。
  • 如果你使用的是云服务提供商的 Ingress 控制器,如 AWS 的 ALB 或 GCP 的 Ingress,你可能需要遵循特定的步骤来配置 SSL 证书。

通过上述步骤,你可以在 Kubernetes 集群中配置 Ingress 以使用 SSL 证书,从而启用 HTTPS 加密通信。

自签名证书在Ingress中如何应用?

在 Kubernetes 集群中,使用自签名证书配置 Ingress 以启用 HTTPS 的基本步骤如下 :

  1. 创建自签名证书
    使用 OpenSSL 创建自签名证书和私钥:

    openssl genrsa -out albtop-key.pem 4096
    openssl req -subj "/CN=demo.alb.ingress.top" -sha256  -new -key albtop-key.pem -out albtop.csr
    echo subjectAltName = DNS:demo.alb.ingress.top > extfile.cnf
    openssl x509 -req -days 3650 -sha256 -in albtop.csr -signkey albtop-key.pem -out albtop-cert.pem -extfile extfile.cnf
    
  2. 创建 Kubernetes Secret
    将自签名证书和私钥转换为 base64 编码,并创建 Secret:

    kubectl create secret tls my-tls-secret --cert=albtop-cert.pem --key=albtop-key.pem
    
  3. 配置 Ingress 资源
    在 Ingress 配置文件中添加 tls 字段,并引用上一步创建的 Secret:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-ingress
      annotations:
        nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    spec:
      tls:
      - hosts:
        - mydomain.com
        secretName: my-tls-secret
      rules:
      - host: mydomain.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
    
  4. 应用 Ingress 配置
    使用 kubectl apply 命令应用 Ingress 配置:

    kubectl apply -f my-ingress.yaml
    
  5. 验证配置
    通过访问 https://mydomain.com 来验证 SSL 证书是否已正确配置。

这个过程确保了 HTTPS 请求在 Kubernetes 集群中的安全性和有效性,通过自签名的证书来启用 HTTPS,非常适合开发环境。

相关文献

【Kubernets】配置类型资源 Etcd, Secret, ConfigMap
【Kubernets】kubernets资源类型ingress详细介绍
【知识科普】使用 OpenSSL为特定域名生成自签名证书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问道飞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值