当ingress使用https时,例如
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tls-example-ingress
namespace: dashboard
spec:
tls:
- hosts:
- https-example.foo.com
secretName: testsecret-tls
rules:
- host: https-example.foo.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service1
port:
number: 80
域名https-example.foo.com的https证书如下
xiaoyudeMacBook-Pro:tls xiaoyu$ pwd
/Users/xiaoyu/mywork/first-k8s/k8s/tls
xiaoyudeMacBook-Pro:tls xiaoyu$ ls -l
total 40
-rwxr-xr-x 1 xiaoyu staff 1675 May 18 23:44 https-example.foo.com.key
-rwxr-xr-x 1 xiaoyu staff 3671 May 18 23:44 https-example.foo.com.pem
可以看到我们需要创建一个secret,类型为tls的testsecret-tls
,创建该secret有俩种方式
- shell命令
PATH=/Users/xiaoyu/mywork/first-k8s/k8s/tls
KEY=https-example.foo.com.key
CERT=https-example.foo.com.pem
NAMESPACE=dashboard
SECRET_NAME=testsecret-tls
kubectl create secret tls ${SECRET_NAME} --key ${PATH}/${KEY} --cert ${PATH}/${CERT} -n ${NAMESPACE}
- yaml文件
apiVersion: v1
kind: Secret
metadata:
name: testsecret-tls
namespace: dashboard
data:
tls.crt: base64 编码的 cert
tls.key: base64 编码的 key
type: kubernetes.io/tls
现在的问题是base64 编码的 cert和base64 编码的 key怎么获得?可使用cat命令获得文件内容的base64
cat ${PATH}/tls.crt | base64
cat ${PATH}/tls.key | base64
如果想要获得字符串的base64,可使用echo
echo -n '111' | base64
MTEx
如果想把base64转为正常字符串,使用如下命令,增加-d参数
echo -n 'MTEx' | base64 -d
111
网友评论