ECK:HTTP TLS certificates

默认证书

默认情况下,Operator使用自定义CA为每个资源生成自签名证书。CA、certificate、private key会保存在不同的Secret中:

> kubectl get secret | grep es-http
hulk-es-http-ca-internal         Opaque    2      28m
hulk-es-http-certs-internal      Opaque    2      28m
hulk-es-http-certs-public        Opaque    1      28m

查看证书内容:

> kubectl get secret hulk-es-http-certs-public -o go-template='{{index .data "tls.crt" | base64decode }}'
-----BEGIN CERTIFICATE-----
MIIDQDCCAiigAwIBAgIQHC4O/RWX15a3/P3upsm3djANBgkqhkiG9w0BAQsFADA6
...
QLYL4zLEby3vRxq65+xofVBJAaM=
-----END CERTIFICATE-----

自定义域名证书

当自签名证书使用自定义域名时,可以指定静态IP或使用Ingress,同时配置对应的DNS:

spec:
  http:
    service:
      spec:
        type: LoadBalancer
    tls:
      selfSignedCertificate:
        subjectAltNames:
        - ip: 160.46.176.15
        - dns: hulk.example.com

自定义证书

你可以自己生成证书后,在Kubenetes中创建对应的Secret来使用,需要提前准备的文件:

  • ca.crt:CA证书(如果tls.crt由知名CA签发,可以省略)
  • tls.crt:证书
  • tls.key:private key
kubectl create secret generic my-cert --from-file=ca.crt --from-file=tls.crt --from-file=tls.key

或者,你可以自定义CA证书,让ECK负责签发证书:

  • ca.crt:CA证书
  • ca.key:private key
kubectl create secret generic my-cert --from-file=ca.crt --from-file=ca.key

最后,指定要使用的证书Secret:

spec:
  http:
    tls:
      certificate:
        secretName: my-cert

禁用TLS

你也可以通过配置禁用HTTP层的TLS:

spec:
  http:
    tls:
      selfSignedCertificate:
        disabled: true
posted @ 2022-02-11 14:34  enjoyN  阅读(365)  评论(0)    收藏  举报