mirror of
https://github.com/bvanroll/cicdTest.git
synced 2025-08-29 12:02:47 +00:00
120 lines
4.0 KiB
YAML
120 lines
4.0 KiB
YAML
apiVersion: tekton.dev/v1alpha1
|
|
kind: Task
|
|
metadata:
|
|
name: create-ingress
|
|
spec:
|
|
volumes:
|
|
- name: work
|
|
emptyDir: {}
|
|
|
|
inputs:
|
|
params:
|
|
- name: CreateCertificate
|
|
description: "Enables/disables the creation of a self-signed certificate for $(inputs.params.ExternalDomain)"
|
|
default: "true"
|
|
- name: CertificateKeyPassphrase
|
|
description: "Phrase that protects private key. This must be provided when the self-signed certificate is created"
|
|
- name: CertificateSecretName
|
|
description: "Secret name for Ingress certificate. The Secret should not exist if the self-signed certificate creation is enabled"
|
|
- name: ExternalDomain
|
|
description: "The external domain for the EventListener e.g. `$(inputs.params.EventListenerName).PROXYIP.nip.io`"
|
|
- name: Service
|
|
description: "The name of the Service used in the Ingress. This will also be the name of the Ingress."
|
|
- name: ServicePort
|
|
description: "The service port that the ingress is being created on"
|
|
- name: ServiceUID
|
|
description: "The uid of the service. If set, this creates an owner reference on the service"
|
|
default: ""
|
|
|
|
steps:
|
|
- name: generate-certificate
|
|
image: frapsoft/openssl
|
|
volumeMounts:
|
|
- name: work
|
|
mountPath: /var/tmp/work
|
|
command:
|
|
- sh
|
|
args:
|
|
- -ce
|
|
- |
|
|
set -e
|
|
cat <<EOF | sh
|
|
#!/bin/sh
|
|
if [ $(inputs.params.CreateCertificate) = "false" ];then
|
|
exit 0
|
|
fi
|
|
mkdir /var/tmp/work/ingress
|
|
openssl genrsa -des3 -out /var/tmp/work/ingress/key.pem -passout pass:$(inputs.params.CertificateKeyPassphrase) 2048
|
|
openssl req -x509 -new -nodes -key /var/tmp/work/ingress/key.pem -sha256 -days 1825 -out /var/tmp/work/ingress/certificate.pem -passin pass:$(inputs.params.CertificateKeyPassphrase) -subj /CN=$(inputs.params.ExternalDomain)
|
|
openssl rsa -in /var/tmp/work/ingress/key.pem -out /var/tmp/work/ingress/key.pem -passin pass:$(inputs.params.CertificateKeyPassphrase)
|
|
EOF
|
|
- name: create-certificate-secret
|
|
image: lachlanevenson/k8s-kubectl:latest
|
|
volumeMounts:
|
|
- name: work
|
|
mountPath: /var/tmp/work
|
|
command:
|
|
- sh
|
|
args:
|
|
- -ce
|
|
- |
|
|
set -e
|
|
cat <<EOF | sh
|
|
#!/bin/sh
|
|
if [ $(inputs.params.CreateCertificate) = "false" ];then
|
|
exit 0
|
|
fi
|
|
kubectl create secret tls $(inputs.params.CertificateSecretName) --cert=/var/tmp/work/ingress/certificate.pem --key=/var/tmp/work/ingress/key.pem || true
|
|
EOF
|
|
- name: create-ingress
|
|
image: lachlanevenson/k8s-kubectl:latest
|
|
command:
|
|
- sh
|
|
args:
|
|
- -ce
|
|
- |
|
|
set -e
|
|
if [ -n "$(inputs.params.ServiceUID)" ];then
|
|
cat <<EOF | kubectl create -f - || true
|
|
apiVersion: extensions/v1beta1
|
|
kind: Ingress
|
|
metadata:
|
|
name: $(inputs.params.Service)
|
|
ownerReferences:
|
|
- name: $(inputs.params.Service)
|
|
apiVersion: v1
|
|
kind: Service
|
|
uid: $(inputs.params.ServiceUID)
|
|
spec:
|
|
tls:
|
|
- secretName: $(inputs.params.CertificateSecretName)
|
|
hosts:
|
|
- $(inputs.params.ExternalDomain)
|
|
rules:
|
|
- host: $(inputs.params.ExternalDomain)
|
|
http:
|
|
paths:
|
|
- backend:
|
|
serviceName: $(inputs.params.Service)
|
|
servicePort: $(inputs.params.ServicePort)
|
|
EOF
|
|
else
|
|
cat <<EOF | kubectl create -f - || true
|
|
apiVersion: extensions/v1beta1
|
|
kind: Ingress
|
|
metadata:
|
|
name: $(inputs.params.Service)
|
|
spec:
|
|
tls:
|
|
- secretName: $(inputs.params.CertificateSecretName)
|
|
hosts:
|
|
- $(inputs.params.ExternalDomain)
|
|
rules:
|
|
- host: $(inputs.params.ExternalDomain)
|
|
http:
|
|
paths:
|
|
- backend:
|
|
serviceName: $(inputs.params.Service)
|
|
servicePort: $(inputs.params.ServicePort)
|
|
EOF
|
|
fi |