Skip to content
This repository was archived by the owner on Nov 11, 2024. It is now read-only.

Commit 57d120f

Browse files
committed
Enhanced self certificates security on Kubernetes deployment
Signed-off-by: Zhizhen Tang <[email protected]>
1 parent 5dbde66 commit 57d120f

File tree

8 files changed

+44
-17
lines changed

8 files changed

+44
-17
lines changed

cdn-server/nginx.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ http {
5252
client_body_timeout 5s;
5353
client_header_timeout 5s;
5454

55-
ssl_certificate /run/secrets/self.crt;
56-
ssl_certificate_key /run/secrets/self.key;
57-
ssl_dhparam /run/secrets/dhparam.pem;
55+
ssl_certificate /var/run/secrets/self.crt;
56+
ssl_certificate_key /var/run/secrets/self.key;
57+
ssl_dhparam /var/run/secrets/dhparam.pem;
5858

5959
ssl_protocols TLSv1.2;
6060
ssl_prefer_server_ciphers on;

cdn-server/self-sign.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/bin/bash -e
22

3-
if [ ! -d "/run/secrets" ];then
4-
mkdir -p /run/secrets
3+
if [ ! -d "/var/run/secrets" ];then
4+
mkdir -p /var/run/secrets
55
fi
66

7-
openssl req -x509 -nodes -days 30 -newkey rsa:4096 -keyout /run/secrets/self.key -out /run/secrets/self.crt << EOL
8-
SH
7+
openssl req -x509 -nodes -days 30 -newkey rsa:4096 -keyout /var/run/secrets/self.key -out /var/run/secrets/self.crt << EOL
8+
CN
99
SH
1010
Shanghai
1111
Zizhu
@@ -14,7 +14,7 @@ Intel Corporation
1414
$1
1515
1616
EOL
17-
chmod 640 "/run/secrets/self.key"
18-
chmod 644 "/run/secrets/self.crt"
19-
openssl dhparam -dsaparam -out /run/secrets/dhparam.pem 4096
20-
chmod 644 "/run/secrets/dhparam.pem"
17+
chmod 640 "/var/run/secrets/self.key"
18+
chmod 644 "/var/run/secrets/self.crt"
19+
openssl dhparam -dsaparam -out /var/run/secrets/dhparam.pem 4096
20+
chmod 644 "/var/run/secrets/dhparam.pem"

deployment/docker-swarm/docker-compose.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,17 @@ services:
5656
replicas: 1
5757
secrets:
5858
- source: self_crt
59-
target: self.crt
59+
target: /var/run/secrets/self.crt
6060
uid: ${USER_ID}
6161
gid: ${GROUP_ID}
6262
mode: 0444
6363
- source: self_key
64-
target: self.key
64+
target: /var/run/secrets/self.key
6565
uid: ${USER_ID}
6666
gid: ${GROUP_ID}
6767
mode: 0440
6868
- source: dhparam_pem
69-
target: dhparam.pem
69+
target: /var/run/secrets/dhparam.pem
7070
uid: ${USER_ID}
7171
gid: ${GROUP_ID}
7272
mode: 0444

deployment/kubernetes/docker-compose-template.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ services:
6767
placement:
6868
constraints:
6969
- node.hostname == master.machine
70-
command: ["bash", "-c", "/home/main.py&/home/self-sign.sh&&/usr/sbin/nginx"]
70+
command: ["bash", "-c", "/home/main.py&/usr/sbin/nginx"]
7171
labels:
7272
kompose.service.type: NodePort
7373
kompose.image-pull-policy: IfNotPresent

deployment/kubernetes/start.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ for i in $(find "$DIR" -name "*deployment.yaml"); do
4747
done
4848
done
4949

50+
if [ -f "$DIR/ovc-self-certificates.yaml" ]; then
51+
kubectl delete -f "$DIR/ovc-self-certificates.yaml"
52+
fi
53+
5054
rm -rf $DIR/$EXT
5155

5256
yml="$DIR/docker-compose-template.yml"
@@ -66,6 +70,10 @@ try_command kompose convert -f "$yml" -o "$DIR"
6670

6771
try_command "$DIR/update_yaml.py" "$DIR"
6872

73+
try_command kubectl create secret generic ssl-key-secret --from-file=self.key="$DIR/../../self-certificates/self.key" --from-file=self.crt="$DIR/../../self-certificates/self.crt" --from-file=dhparam.pem="$DIR/../../self-certificates/dhparam.pem" --dry-run -o yaml > "$DIR/ovc-self-certificates.yaml"
74+
75+
try_command kubectl apply -f "$DIR/ovc-self-certificates.yaml"
76+
6977
for i in $(find "$DIR" -path "$DIR/dashboard" -prune -o -type f -name "*service.yaml" -print); do
7078
kubectl apply -f "$i"
7179
done

deployment/kubernetes/stop.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,8 @@ for i in $(find "$DIR" -name "*deployment.yaml"); do
4747
done
4848
done
4949

50+
if [ -f "$DIR/ovc-self-certificates.yaml" ]; then
51+
kubectl delete -f "$DIR/ovc-self-certificates.yaml"
52+
fi
53+
5054
rm -rf $DIR/$EXT

deployment/kubernetes/yaml_utils.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ def add_volumeMounts(data, isCDN):
5656
'readOnly': False},
5757
{'name': 'html',
5858
'mountPath': '/var/www/html',
59+
'readOnly': True},
60+
{'name': 'secrets',
61+
'mountPath': '/var/run/secrets',
5962
'readOnly': True} ]
6063
else:
6164
volumemounts_caps = [ {'name': 'archive',
@@ -93,7 +96,9 @@ def add_volumes(data, nfs_server, isCDN, cdn_directory):
9396
{'path': cdn_directory + '/volume/video/hls'} },
9497
{'name': 'html',
9598
'hostPath':
96-
{'path': cdn_directory + '/volume/html'} } ]
99+
{'path': cdn_directory + '/volume/html'} },
100+
{'name': 'secrets',
101+
'secret': {'secretName': 'ssl-key-secret'} } ]
97102
elif isCDN:
98103
volumes_caps = [ {'name': 'archive',
99104
'nfs':
@@ -109,7 +114,9 @@ def add_volumes(data, nfs_server, isCDN, cdn_directory):
109114
'server': nfs_server} },
110115
{'name': 'html',
111116
'hostPath':
112-
{'path': cdn_directory + '/volume/html'} } ]
117+
{'path': cdn_directory + '/volume/html'} },
118+
{'name': 'secrets',
119+
'secret': {'secretName': 'ssl-key-secret'} } ]
113120
else:
114121
volumes_caps = [ {'name': 'archive',
115122
'nfs':

script/Kubernetes_setup_ubuntu_master.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ fi
4040

4141
# Install packages
4242
# Set Proxy if need
43+
proxy_http=$http_proxy
44+
proxy_https=$https_proxy
45+
export http_proxy=$proxy_http
46+
export https_proxy=$proxy_https
4347
try_command apt-get update && apt-get install -y apt-transport-https curl
4448
try_command curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
4549
try_command cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
@@ -75,6 +79,8 @@ try_command systemctl restart docker
7579
try_command systemctl restart kubelet
7680

7781
# Kubeadm init
82+
unset http_proxy
83+
unset https_proxy
7884
try_command kubeadm init --pod-network-cidr=10.244.0.0/16
7985
try_command mkdir -p $HOME/.kube
8086
try_command cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
@@ -83,5 +89,7 @@ try_command export KUBECONFIG=$HOME/.kube/config
8389
try_command kubectl taint nodes --all node-role.kubernetes.io/master-
8490

8591
# Set Proxy if need
92+
export http_proxy=$proxy_http
93+
export https_proxy=$proxy_https
8694
try_command kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
8795
try_command sed -i '/- kube-apiserver/a\\ - --service-node-port-range=1-65535' /etc/kubernetes/manifests/kube-apiserver.yaml

0 commit comments

Comments
 (0)