Browse Source
Generate TLS certs for calico typha (#5258)
Generate TLS certs for calico typha (#5258)
* Generate TLS certs for calico typha Change-Id: I3883f49c124c52d0fc5b900ca2b44e4e2ed0d707 * Add group vars note Change-Id: I63550dfef616e884efdbd42010a90b2c04c5eb69pull/5241/head
committed by
Kubernetes Prow Robot
12 changed files with 249 additions and 5 deletions
Split View
Diff Options
-
3inventory/sample/group_vars/k8s-cluster/k8s-net-calico.yml
-
3roles/download/defaults/main.yml
-
4roles/network_plugin/calico/defaults/main.yml
-
89roles/network_plugin/calico/files/make-ssl-typha.sh
-
20roles/network_plugin/calico/files/openssl.conf
-
6roles/network_plugin/calico/tasks/install.yml
-
49roles/network_plugin/calico/tasks/typha_certs.yml
-
2roles/network_plugin/calico/templates/calico-config.yml.j2
-
37roles/network_plugin/calico/templates/calico-node.yml.j2
-
33roles/network_plugin/calico/templates/calico-typha.yml.j2
-
5tests/files/gce_centos7-calico-ha.yml
-
3tests/files/packet_centos7-calico-ha.yml
@ -0,0 +1,89 @@ |
|||
#!/bin/bash |
|||
|
|||
# Author: Smana smainklh@gmail.com |
|||
# |
|||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|||
# you may not use this file except in compliance with the License. |
|||
# You may obtain a copy of the License at |
|||
# |
|||
# http://www.apache.org/licenses/LICENSE-2.0 |
|||
# |
|||
# Unless required by applicable law or agreed to in writing, software |
|||
# distributed under the License is distributed on an "AS IS" BASIS, |
|||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
# See the License for the specific language governing permissions and |
|||
# limitations under the License. |
|||
|
|||
set -o errexit |
|||
set -o pipefail |
|||
usage() |
|||
{ |
|||
cat << EOF |
|||
Create self signed certificates |
|||
|
|||
Usage : $(basename $0) -f <config> [-d <ssldir>] |
|||
-h | --help : Show this message |
|||
-f | --config : Openssl configuration file |
|||
-d | --ssldir : Directory where the certificates will be installed |
|||
-c | --cadir : Directory where the existing CA is located |
|||
|
|||
ex : |
|||
$(basename $0) -f openssl.conf -d /srv/ssl |
|||
EOF |
|||
} |
|||
|
|||
# Options parsing |
|||
while (($#)); do |
|||
case "$1" in |
|||
-h | --help) usage; exit 0;; |
|||
-f | --config) CONFIG=${2}; shift 2;; |
|||
-d | --ssldir) SSLDIR="${2}"; shift 2;; |
|||
-c | --cadir) CADIR="${2}"; shift 2;; |
|||
*) |
|||
usage |
|||
echo "ERROR : Unknown option" |
|||
exit 3 |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
if [ -z ${CONFIG} ]; then |
|||
echo "ERROR: the openssl configuration file is missing. option -f" |
|||
exit 1 |
|||
fi |
|||
if [ -z ${SSLDIR} ]; then |
|||
SSLDIR="/etc/calico/certs" |
|||
fi |
|||
|
|||
tmpdir=$(mktemp -d /tmp/calico_typha_certs.XXXXXX) |
|||
trap 'rm -rf "${tmpdir}"' EXIT |
|||
cd "${tmpdir}" |
|||
|
|||
mkdir -p "${SSLDIR} ${CADIR}" |
|||
|
|||
# Root CA |
|||
if [ -e "$CADIR/ca.key" ]; then |
|||
# Reuse existing CA |
|||
cp $CADIR/{ca.crt,ca.key} . |
|||
else |
|||
openssl genrsa -out ca.key 2048 > /dev/null 2>&1 |
|||
openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt -subj "/CN=calico-typha-ca" > /dev/null 2>&1 |
|||
fi |
|||
|
|||
# Typha server |
|||
openssl genrsa -out typha-server.key 2048 > /dev/null 2>&1 |
|||
openssl req -new -key typha-server.key -out typha-server.csr -subj "/CN=typha-server" -config ${CONFIG} > /dev/null 2>&1 |
|||
openssl x509 -req -in typha-server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out typha-server.crt -days 3650 -extensions ssl_client -extfile ${CONFIG} > /dev/null 2>&1 |
|||
|
|||
# Typha client |
|||
openssl genrsa -out typha-client.key 2048 > /dev/null 2>&1 |
|||
openssl req -new -key typha-client.key -out typha-client.csr -subj "/CN=typha-client" -config ${CONFIG} > /dev/null 2>&1 |
|||
openssl x509 -req -in typha-client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out typha-client.crt -days 3650 -extensions ssl_client -extfile ${CONFIG} > /dev/null 2>&1 |
|||
|
|||
# Install certs |
|||
if [ -e "$CADIR/ca.key" ]; then |
|||
# No pass existing CA |
|||
rm -f ca.crt ca.key |
|||
fi |
|||
|
|||
mv {*.crt,*.key} ${SSLDIR}/ |
@ -0,0 +1,20 @@ |
|||
req_extensions = v3_req |
|||
distinguished_name = req_distinguished_name |
|||
|
|||
[req_distinguished_name] |
|||
|
|||
[ v3_req ] |
|||
basicConstraints = CA:FALSE |
|||
keyUsage = digitalSignature, keyEncipherment |
|||
|
|||
[ ssl_client ] |
|||
extendedKeyUsage = clientAuth, serverAuth |
|||
basicConstraints = CA:FALSE |
|||
subjectKeyIdentifier=hash |
|||
authorityKeyIdentifier=keyid,issuer |
|||
|
|||
[ v3_ca ] |
|||
basicConstraints = CA:TRUE |
|||
keyUsage = cRLSign, digitalSignature, keyCertSign |
|||
subjectKeyIdentifier=hash |
|||
authorityKeyIdentifier=keyid:always,issuer |
@ -0,0 +1,49 @@ |
|||
--- |
|||
- name: Calico | Check if typha-server exists |
|||
command: "{{ bin_dir }}/kubectl -n kube-system get secret typha-server" |
|||
register: typha_server_secret |
|||
changed_when: false |
|||
failed_when: false |
|||
|
|||
- name: Calico | Ensure calico certs dir |
|||
file: |
|||
path: /etc/calico/certs |
|||
state: directory |
|||
when: typha_server_secret.rc != 0 |
|||
|
|||
- name: Calico | Copy ssl script for typha certs |
|||
copy: |
|||
src: make-ssl-typha.sh |
|||
dest: "{{ bin_dir }}/make-ssl-typha.sh" |
|||
mode: 0755 |
|||
when: typha_server_secret.rc != 0 |
|||
|
|||
- name: Calico | Copy ssl config for typha certs |
|||
copy: |
|||
src: openssl.conf |
|||
dest: /etc/calico/certs/openssl.conf |
|||
mode: 0644 |
|||
when: typha_server_secret.rc != 0 |
|||
|
|||
- name: Calico | Generate typha certs |
|||
command: >- |
|||
{{ bin_dir }}/make-ssl-typha.sh |
|||
-f /etc/calico/certs/openssl.conf |
|||
-c {{ kube_cert_dir }} |
|||
-d /etc/calico/certs |
|||
when: typha_server_secret.rc != 0 |
|||
|
|||
- name: Calico | Create typha tls secrets |
|||
command: >- |
|||
{{ bin_dir }}/kubectl -n kube-system |
|||
create secret tls {{ item.name }} |
|||
--cert {{ item.cert }} |
|||
--key {{ item.key }} |
|||
with_items: |
|||
- name: typha-server |
|||
cert: /etc/calico/certs/typha-server.crt |
|||
key: /etc/calico/certs/typha-server.key |
|||
- name: typha-client |
|||
cert: /etc/calico/certs/typha-client.crt |
|||
key: /etc/calico/certs/typha-client.key |
|||
when: typha_server_secret.rc != 0 |
Write
Preview
Loading…
Cancel
Save