2020
2121set -e
2222
23- CHART_HOME=$( unset CDPATH && cd $( dirname " ${BASH_SOURCE[0]} " ) /../.. && pwd)
23+ SCRIPT_DIR=" $( unset CDPATH && cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd) "
24+ CHART_HOME=$( unset CDPATH && cd " $SCRIPT_DIR /../.." && pwd)
2425cd ${CHART_HOME}
2526
27+ source " ${SCRIPT_DIR} /common_auth.sh"
28+
2629usage () {
2730 cat << EOF
2831This script is used to generate token for a given pulsar role.
@@ -86,10 +89,6 @@ if [[ "x${role}" == "x" ]]; then
8689 exit 1
8790fi
8891
89- source ${CHART_HOME} /scripts/pulsar/common_auth.sh
90-
91- pulsar::ensure_pulsarctl
92-
9392namespace=${namespace:- pulsar}
9493release=${release:- pulsar-dev}
9594
@@ -101,7 +100,6 @@ function pulsar::jwt::get_secret() {
101100 if [[ " ${local} " == " true" ]]; then
102101 cp ${type} ${tmpfile}
103102 else
104- echo " kubectl get -n ${namespace} secrets ${secret_name} -o jsonpath=" {.data.${type} }" | base64 --decode > ${tmpfile} "
105103 kubectl get -n ${namespace} secrets ${secret_name} -o jsonpath=" {.data['${type} ']}" | base64 --decode > ${tmpfile}
106104 fi
107105}
@@ -110,31 +108,41 @@ function pulsar::jwt::generate_symmetric_token() {
110108 local token_name=" ${release} -token-${role} "
111109 local secret_name=" ${release} -token-symmetric-key"
112110
113- tmpfile=$( mktemp)
114- trap " test -f $tmpfile && rm $tmpfile " RETURN
115- tokentmpfile=$( mktemp)
116- trap " test -f $tokentmpfile && rm $tokentmpfile " RETURN
117- pulsar::jwt::get_secret SECRETKEY ${tmpfile} ${secret_name}
118- ${PULSARCTL_BIN} token create -a HS256 --secret-key-file ${tmpfile} --subject ${role} 2& > ${tokentmpfile}
119- newtokentmpfile=$( mktemp)
111+
112+ local tmpdir=$( mktemp -d)
113+ trap " test -d $tmpdir && rm -rf $tmpdir " RETURN
114+ secretkeytmpfile=${tmpdir} /secret.key
115+ tokentmpfile=${tmpdir} /token.jwt
116+
117+ pulsar::jwt::get_secret SECRETKEY ${secretkeytmpfile} ${secret_name}
118+
119+ docker run --user 0 --rm -t -v ${tmpdir} :/keydir ${PULSAR_TOKENS_CONTAINER_IMAGE} bin/pulsar tokens create -a HS256 --subject " ${role} " --secret-key=file:/keydir/secret.key > ${tokentmpfile}
120+
121+ newtokentmpfile=${tmpdir} /token.jwt.new
120122 tr -d ' \n' < ${tokentmpfile} > ${newtokentmpfile}
121- echo " kubectl create secret generic ${token_name} -n ${namespace} --from-file=" TOKEN=${newtokentmpfile} " --from-literal=" TYPE=symmetric" ${local: + -o yaml --dry-run=client} "
122123 kubectl create secret generic ${token_name} -n ${namespace} --from-file=" TOKEN=${newtokentmpfile} " --from-literal=" TYPE=symmetric" ${local: + -o yaml --dry-run=client}
124+ rm -rf $tmpdir
123125}
124126
125127function pulsar::jwt::generate_asymmetric_token() {
126128 local token_name=" ${release} -token-${role} "
127129 local secret_name=" ${release} -token-asymmetric-key"
128130
129- privatekeytmpfile=$( mktemp)
130- trap " test -f $privatekeytmpfile && rm $privatekeytmpfile " RETURN
131- tokentmpfile=$( mktemp)
132- trap " test -f $tokentmpfile && rm $tokentmpfile " RETURN
131+ local tmpdir=$( mktemp -d)
132+ trap " test -d $tmpdir && rm -rf $tmpdir " RETURN
133+
134+ privatekeytmpfile=${tmpdir} /privatekey.der
135+ tokentmpfile=${tmpdir} /token.jwt
136+
133137 pulsar::jwt::get_secret PRIVATEKEY ${privatekeytmpfile} ${secret_name}
134- ${PULSARCTL_BIN} token create -a RS256 --private-key-file ${privatekeytmpfile} --subject ${role} 2& > ${tokentmpfile}
135- newtokentmpfile=$( mktemp)
138+
139+ # Generate token
140+ docker run --user 0 --rm -t -v ${tmpdir} :/keydir ${PULSAR_TOKENS_CONTAINER_IMAGE} bin/pulsar tokens create -a RS256 --subject " ${role} " --private-key=file:/keydir/privatekey.der > ${tokentmpfile}
141+
142+ newtokentmpfile=${tmpdir} /token.jwt.new
136143 tr -d ' \n' < ${tokentmpfile} > ${newtokentmpfile}
137144 kubectl create secret generic ${token_name} -n ${namespace} --from-file=" TOKEN=${newtokentmpfile} " --from-literal=" TYPE=asymmetric" ${local: + -o yaml --dry-run=client}
145+ rm -rf $tmpdir
138146}
139147
140148if [[ " ${symmetric} " == " true" ]]; then
0 commit comments