我试图在gke入口(gpc LB7)上使用tls secret,我被卡住了。为了清楚起见,我可以使用kubectl命令创建tls密钥:
kubectl create secret tls wildcard-cert --cert fullchain.pem --key private.pem
这工作得很好,但为了自动化的目的,我希望能够使用相同的文件从一个yaml文件部署的秘密,这些通配符在多个地方使用,并存储在一个秘密引擎。
我不能使用secretgenerator,因为它似乎不支持tls,并且秘密类型tls似乎不能接受文件。
我希望能够创建:
---
apiVersion: v1
kind: Secret
metadata:
name: wildcard-cert
type: kubernetes.io/tls
data:
tls.crt: fullchain.pem
tls.key: private.pem
你应该能够使用secretGenerator,因为我不认为nginx关心它是TLS还是不透明的秘密。TLS秘密实际上只是一个具有已知布局的不透明秘密。
将您的密钥/证书文件:fullchain.pem
重命名为tls.crt
,private.pem
重命名为tls.key
。
使用secretGenerator:
secretGenerator:
- name: wildcard-cert
files:
- tls.crt
- tls.key
应该生成如下的Secret:
apiVersion: v1
kind: Secret
metadata:
name: wildcard-cert
data:
tls.crt: |
MIIC2DCCAcCgAwIBAgIBATANBgkqh ...
tls.key: |
MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ...
应该与GKE Ingress一起工作。
编辑:
注意
kubectl create secret tls wildcard-cert --cert fullchain.pem --key private.pem
实际上会创建一个如下的secret:
apiVersion: v1
kind: Secret
metadata:
name: wildcard-cert
type: kubernetes.io/tls
data:
tls.crt: |
MIIC2DCCAcCgAwIBAgIBATANBgkqh ...
tls.key: |
MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ....
,它应该等于secretGenerator在所有实际用途中生成的。