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