ingress 简单应用

发布时间 2023-08-18 15:47:53作者: 追梦$少年
1、创建域名证书

1.1、命令创建
kubectl create secret tls tls-secret --cert=cert.crt --key=privateKey.key

1.2、yaml文件创建:

apiVersion: v1
kind: Secret
metadata:
  name: <secret-name>
data:
  tls.crt: <base64-encoded-certificate>
  tls.key: <base64-encoded-private-key>
type: kubernetes.io/tls

将 <secret-name> 替换为你想要为 Secret 分配的名称。

将 <base64-encoded-certificate> 和 <base64-encoded-private-key> 替换为对应的 Base64 编码的证书和私钥。你可以使用以下命令将证书和私钥文件进行 Base64 编码:

cat cert.crt | base64 -w0
cat privateKey.key | base64 -w0
将输出的 Base64 编码结果分别替换到 YAML 文件中的 <base64-encoded-certificate> 和 <base64-encoded-private-key>。

然后,使用 kubectl 命令来创建 Secret 对象:

kubectl apply -f tls-secret.yaml
这样就创建了一个名为 <secret-name> 的 TLS Secret。

无论你选择哪种方法,创建完 TLS Secret 对象后,你就可以在 Ingress 或其他 Kubernetes 资源中使用它,来配置 HTTPS 访问。
2、使用ingress代理外网访问
 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: domain1.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: service1
                port:
                  number: 80
  tls:
    - hosts:
        - domain1.com
      secretName: domain1-tls-secret
    - hosts:
        - domain2.com
      secretName: domain2-tls-secret
      
      
      
      在上述示例中,为了 domain1.com 和 domain2.com 这两个域名配置了不同的证书。在 tls 字段里,为每个域名指定了对应的 hosts(域名)和 secretName(对应的 Secret 对象的名称)。

确保你已经创建了与每个域名对应的 Kubernetes Secret 对象,并在上述配置中正确指定了证书的 Secret 名称。

这样,当访问 Ingress 中定义的域名时,它们将使用各自指定的证书进行 SSL/TLS 加密通信。