mirror of
https://github.com/kyverno/kyverno.git
synced 2024-12-14 11:57:48 +00:00
NK-8: Implemented basic HTTPS server with stub for mutation webhook. Implemented script for generating TLS key and certificate. Created MutatingWebhookConfiguration.yaml with declaration of future service.
This commit is contained in:
parent
44ddeb9a68
commit
ed86223f3e
3 changed files with 77 additions and 0 deletions
19
crd/MutatingWebhookConfiguration.yaml
Normal file
19
crd/MutatingWebhookConfiguration.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
apiVersion: admissionregistration.k8s.io/v1beta1
|
||||||
|
kind: MutatingWebhookConfiguration
|
||||||
|
metadata:
|
||||||
|
name: nirmata-policy-mutation-webhook
|
||||||
|
labels:
|
||||||
|
app: nirmata-policy-webhook-server
|
||||||
|
webhooks:
|
||||||
|
- name: mutation.webhook.nirmata-policy
|
||||||
|
clientConfig:
|
||||||
|
service:
|
||||||
|
name: nirmata-webhook-server
|
||||||
|
namespace: default
|
||||||
|
path: "/mutate"
|
||||||
|
caBundle: MIIC5zCCAc+gAwIBAgIBATANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwptaW5pa3ViZUNBMB4XDTE5MDIwMzE1MjM0M1oXDTI5MDIwMTE1MjM0M1owFTETMBEGA1UEAxMKbWluaWt1YmVDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOW3JNJEhX6syO6a+Vr8fezQUmHgJ+oUwYZbwIcb1TQKAGVoIPcN5nkBw11P6syjnrxoPt9HVq3/0mWJOacBgVtuAAZ4sQ8QevFwKmipTpTAC+SEBVhsypqO/1aLs2imbHQr2AVlCy2LxppX7lupl5ELwt9t5nSI3zuauezZ6ujkOCWcO52dGA3dIEXBiKiSQ4Svlqfnjpt7w8Frf6z77nmZSCbAXOf8jjPlObQGTFqzKq+gOmK3LzpANoY6VJSAjQP0jTTc7qC9u3KG53lbTectcBrcQnHRukUvfExI1YyYBTjekjN3DzTkjsn8FCar8hkR8/G4OnwZmiHgDVClrtsCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgKkMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAPvhLvSaYjT32cqy8tR7KR6PyO3lWKt1Tg1R6IrzavSp+5q9AkQyJQmgsm6WcOsxVwFHDMb23iPzv5UDQPmhmJlGRtFgHbCXOYL+Gf/f/6atez5EzbX3T/tSZPF7ASGLSClEGtOwFUYcXqOeQtInPVPe26PbG5k+XCdqDL8HvrRvyKf5HkTt/5nMYMig5TBs6L1O+GGfvM8dTNwW8w3T0ZUMoF4CKVmhMynG47hWW1HGdvqj/NWp8VWqO6Mo+6pBGJrrMdb7IArN725jhZps2CaD1bpGYVIB4Ad65E6ZbSXl12xUq+RI/LfqIaRAALJkXK3v0bfiJ1+SPMWok0QxjJ
|
||||||
|
rules:
|
||||||
|
- operations: [ "CREATE" ]
|
||||||
|
resources: [ "*/*" ]
|
||||||
|
apiGroups: [ "*" ]
|
||||||
|
apiVersions: [ "*" ]
|
58
scripts/generate-server-cert.sh
Executable file
58
scripts/generate-server-cert.sh
Executable file
|
@ -0,0 +1,58 @@
|
||||||
|
#!/bin/bash
|
||||||
|
service=${1}
|
||||||
|
namespace=${2}
|
||||||
|
serverIp=${3}
|
||||||
|
|
||||||
|
destdir="certs"
|
||||||
|
if [ ! -d "$destdir" ]; then
|
||||||
|
mkdir ${destdir}
|
||||||
|
fi
|
||||||
|
tmpdir=$(mktemp -d)
|
||||||
|
|
||||||
|
cat <<EOF >> ${tmpdir}/csr.conf
|
||||||
|
[req]
|
||||||
|
req_extensions = v3_req
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
[req_distinguished_name]
|
||||||
|
[ v3_req ]
|
||||||
|
basicConstraints = CA:FALSE
|
||||||
|
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||||
|
extendedKeyUsage = serverAuth
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = ${service}
|
||||||
|
DNS.2 = ${service}.${namespace}
|
||||||
|
DNS.3 = ${service}.${namespace}.svc
|
||||||
|
DNS.4 = ${serverIp}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
outKeyFile=${destdir}/server-key.pem
|
||||||
|
outCertFile=${destdir}/server.crt
|
||||||
|
|
||||||
|
openssl genrsa -out ${outKeyFile} 2048
|
||||||
|
openssl req -new -key ${destdir}/server-key.pem -subj "/CN=${service}.${namespace}.svc" -out ${tmpdir}/server.csr -config ${tmpdir}/csr.conf
|
||||||
|
|
||||||
|
CSR_NAME=${service}.cert-request
|
||||||
|
kubectl delete csr ${CSR_NAME} 2>/dev/null
|
||||||
|
|
||||||
|
cat <<EOF | kubectl create -f -
|
||||||
|
apiVersion: certificates.k8s.io/v1beta1
|
||||||
|
kind: CertificateSigningRequest
|
||||||
|
metadata:
|
||||||
|
name: ${CSR_NAME}
|
||||||
|
spec:
|
||||||
|
groups:
|
||||||
|
- system:authenticated
|
||||||
|
request: $(cat ${tmpdir}/server.csr | base64 | tr -d '\n')
|
||||||
|
usages:
|
||||||
|
- digital signature
|
||||||
|
- key encipherment
|
||||||
|
- server auth
|
||||||
|
EOF
|
||||||
|
|
||||||
|
kubectl certificate approve ${CSR_NAME}
|
||||||
|
kubectl get csr ${CSR_NAME} -o jsonpath='{.status.certificate}' | base64 --decode > ${outCertFile}
|
||||||
|
|
||||||
|
echo "Generated:"
|
||||||
|
echo ${outKeyFile}
|
||||||
|
echo ${outCertFile}
|
Binary file not shown.
Loading…
Reference in a new issue