Skip to content

Commit 07e9b80

Browse files
committed
test kms
1 parent 631ea9b commit 07e9b80

File tree

3 files changed

+79
-2
lines changed

3 files changed

+79
-2
lines changed

.github/scripts/install-hdfs.sh

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ EOF
5050
sudo apt-get install -y krb5-user krb5-kdc krb5-admin-server
5151

5252
printf "$KERBEROS_PASSWORD\n$KERBEROS_PASSWORD" | sudo kdb5_util -r "$KERBEROS_REALM" create -s
53-
for p in nn dn $USER gohdfs1 gohdfs2; do
53+
for p in nn dn kms $USER gohdfs1 gohdfs2; do
5454
sudo kadmin.local -q "addprinc -randkey $p/$HOSTNAME@$KERBEROS_REALM"
5555
sudo kadmin.local -q "addprinc -randkey $p/localhost@$KERBEROS_REALM"
5656
sudo kadmin.local -q "xst -k /tmp/$p.keytab $p/$HOSTNAME@$KERBEROS_REALM"
@@ -116,6 +116,10 @@ sudo tee $HADOOP_ROOT/etc/hadoop/core-site.xml <<EOF
116116
<name>hadoop.rpc.protection</name>
117117
<value>$RPC_PROTECTION</value>
118118
</property>
119+
<property>
120+
<name>hadoop.security.key.provider.path</name>
121+
<value>kms://http@localhost:9600/kms</value>
122+
</property>
119123
</configuration>
120124
EOF
121125

@@ -172,6 +176,40 @@ $HADOOP_ROOT/bin/hdfs namenode -format
172176
sudo groupadd hadoop
173177
sudo usermod -a -G hadoop $USER
174178

179+
sudo tee $HADOOP_ROOT/etc/hadoop/kms-site.xml <<EOF
180+
<configuration>
181+
<property>
182+
<name>hadoop.kms.key.provider.uri</name>
183+
<value>jceks://file@/tmp/hdfs/kms.keystore</value>
184+
</property>
185+
<property>
186+
<name>hadoop.security.keystore.java-keystore-provider.password-file</name>
187+
<value>kms.keystore.password</value>
188+
</property>
189+
<property>
190+
<name>hadoop.kms.authentication.type</name>
191+
<value>$CONF_AUTHENTICATION</value>
192+
</property>
193+
<property>
194+
<name>hadoop.kms.authentication.kerberos.keytab</name>
195+
<value>/tmp/kms.keytab</value>
196+
</property>
197+
<property>
198+
<name>hadoop.kms.authentication.kerberos.principal</name>
199+
<value>kms/localhost@$KERBEROS_REALM</value>
200+
</property>
201+
</configuration>
202+
EOF
203+
204+
sudo tee $HADOOP_ROOT/etc/hadoop/kms.keystore.password <<EOF
205+
123456
206+
EOF
207+
208+
echo "Starting KMS..."
209+
export KMS_SILENT=false
210+
export KMS_HTTP_PORT=9600
211+
$HADOOP_ROOT/sbin/kms.sh start > /tmp/hdfs/kms.log 2>&1 &
212+
175213
echo "Starting namenode..."
176214
$HADOOP_ROOT/bin/hdfs namenode > /tmp/hdfs/namenode.log 2>&1 &
177215

@@ -183,5 +221,10 @@ sleep 5
183221
echo "Waiting for cluster to exit safe mode..."
184222
$HADOOP_ROOT/bin/hdfs dfsadmin -safemode wait
185223

224+
echo "Prepare encrypted zone"
225+
$HADOOP_ROOT/bin/hadoop key create key1
226+
$HADOOP_ROOT/bin/hadoop fs -mkdir -p /_test/kms
227+
$HADOOP_ROOT/bin/hdfs crypto -createZone -keyName key1 -path /_test/kms
228+
186229
echo "HADOOP_CONF_DIR=$(pwd)/$HADOOP_ROOT/etc/hadoop" >> $GITHUB_ENV
187-
echo "$(pwd)/$HADOOP_ROOT/bin" >> $GITHUB_PATH
230+
echo "$(pwd)/$HADOOP_ROOT/bin" >> $GITHUB_PATH

.github/workflows/tests.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ jobs:
6565
run: |
6666
make test
6767
68+
- name: cat kms.log
69+
if: always()
70+
run: cat /tmp/hdfs/kms.log
71+
6872
- name: cat namenode.log
6973
if: always()
7074
run: cat /tmp/hdfs/namenode.log

cmd/hdfs/test/kms.bats

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/env bats
2+
3+
load helper
4+
5+
@test "put java to go" {
6+
run $HADOOP_FS -put $ROOT_TEST_DIR/testdata/foo.txt /_test/kms/foo1
7+
assert_success
8+
9+
run $HDFS cat /_test/kms/foo1
10+
assert_output "bar"
11+
}
12+
13+
@test "put go to java" {
14+
run $HDFS put $ROOT_TEST_DIR/testdata/foo.txt /_test/kms/foo2
15+
assert_success
16+
17+
run HADOOP_FS -cat /_test/kms/foo2
18+
assert_output "bar"
19+
}
20+
21+
@test "tail" {
22+
run $HDFS put $ROOT_TEST_DIR/testdata/mobydick.txt /_test/kms/
23+
assert_success
24+
25+
run bash -c "$HDFS tail /_test/kms/mobydick.txt > $BATS_TMPDIR/mobydick_test.txt"
26+
assert_success
27+
28+
SHA=`tail $ROOT_TEST_DIR/testdata/mobydick.txt | shasum | awk '{ print $1 }'`
29+
assert_equal $SHA `shasum < $BATS_TMPDIR/mobydick_test.txt | awk '{ print $1 }'`
30+
}

0 commit comments

Comments
 (0)