@@ -3,14 +3,6 @@ name: K8s Azure Base Setup
33on :
44 workflow_call :
55 inputs :
6- load_balancer_ip :
7- description : " IP Address for the load balancer"
8- type : string
9- required : true
10- load_balancer_id :
11- description : " Resource group where the Public IP is located"
12- required : true
13- type : string
146 issuer_yaml :
157 description : " Yaml file describing cluster issuers"
168 type : string
3123
3224jobs :
3325 deploy-ingress-controller :
34- runs-on : [ self-hosted, docker ]
35- if : contains('["acpoppe","KlausNie","kupeliorhun", " nasirky"]', github.triggering_actor)
26+ runs-on : [self-hosted, docker]
27+ if : contains('["acpoppe","KlausNie","nasirky"]', github.triggering_actor)
3628 steps :
3729 - uses : actions/checkout@v4
3830 with :
@@ -41,38 +33,64 @@ jobs:
4133 - uses : azure/setup-helm@v3
4234 with :
4335 version : " 3.13.3"
44-
4536 - uses : azure/k8s-set-context@v3
4637 with :
4738 method : kubeconfig
4839 kubeconfig : ${{ secrets.KUBE_CONFIG }}
4940 context : ${{ secrets.KUBE_CONTEXT }}
5041 - name : Helm Install Ingress Controller
5142 run : |
52- helm repo add ingress-nginx https://kubernetes .github.io/ingress-nginx
53-
43+ helm repo add haproxytech https://haproxytech .github.io/helm-charts
44+
5445 helm repo update
55-
56- helm install ingress-nginx/ingress-nginx \
57- --namespace nginx-ingress-controller \
58- --create-namespace --generate-name \
59- --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-resource-group"="${{ inputs.load_balancer_resource_group }}" \
60- --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-public-ip-address-name"="${{ inputs.public_ip_name }}" \
61- --set controller.service.externalTrafficPolicy="Local" \
62- --set controller.config.enable-ocsp="true" \
46+
47+ helm upgrade --install haproxy-kubernetes-ingress haproxytech/kubernetes-ingress --create-namespace --namespace haproxy-controller -f - <<EOF
48+ controller:
49+ service:
50+ annotations:
51+ kubernetes.io/elb.class: union
52+ type: LoadBalancer
53+ externalTrafficPolicy: Local
54+ config:
55+ cr-global: haproxy-controller/haproxy-global
56+ defaults-config-snippet: |
57+ log global
58+ option httplog
59+ global-config-snippet: |
60+ log stdout format raw local0 info
61+ EOF
62+ - name : Install Global CRD
63+ run : |
64+ kubectl apply -f https://www.haproxy.com/documentation/kubernetes-ingress/community/crd/v3-1/ingress.v1.haproxy.org_globals.yaml
65+ - name : Setup Global Configuration
66+ run : |
67+ cat <<EOF | kubectl apply -f -
68+ apiVersion: ingress.v1.haproxy.org/v1
69+ kind: Global
70+ metadata:
71+ annotations:
72+ name: haproxy-global
73+ namespace: haproxy-controller
74+ spec:
75+ config:
76+ ssl_default_bind_ciphers: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256
77+ ssl_default_bind_ciphersuites: TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384
78+ ssl_default_bind_curves: brainpoolP512r1:brainpoolP384r1:brainpoolP256r1:secp521r1:secp384r1:secp256r1
79+ ssl_default_bind_options: no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
80+ ssl_default_bind_sigalgs: ECDSA+SHA512:ECDSA+SHA384:ECDSA+SHA256:RSA+SHA512:RSA+SHA384:RSA+SHA256:rsa_pss_rsae_sha512:rsa_pss_rsae_sha384:rsa_pss_rsae_sha256
81+ ssl_load_extra_files: ocsp
82+ tune_ssl_default_dh_param: 4096
83+ EOF
6384
6485 deploy-cert-manager :
65- runs-on : [ self-hosted, docker ]
66- if : contains('["acpoppe","KlausNie,"kupeliorhun", "nasirky"]', github.triggering_actor)
86+ runs-on : [self-hosted, docker]
87+ if : contains('["acpoppe","KlausNie", "nasirky"]', github.triggering_actor)
6788 needs : deploy-ingress-controller
6889 steps :
69- - name : Wait for Ingress Controller to be ready
90+ - name : Sleep while ingress-nginx starts
7091 run : |
71- kubectl wait \
72- --namespace nginx-ingress-controller \
73- --for=condition=ready pod \
74- --selector=app.kubernetes.io/component=controller \
75- --timeout=300s
92+ echo "Sleeping for 60 seconds to allow ingress-nginx to start"
93+ sleep 60
7694 - uses : actions/checkout@v4
7795 with :
7896 lfs : ${{ inputs.git-lfs }}
@@ -87,15 +105,11 @@ jobs:
87105 context : ${{ secrets.KUBE_CONTEXT }}
88106 - name : Helm Install Cert Manager
89107 run : |
90- helm repo add jetstack https://charts.jetstack.io
108+ helm repo add jetpack https://charts.jetstack.io
109+
91110 helm repo update
92-
93- helm install cert-manager jetstack/cert-manager \
94- --version v1.17.0 \
95- -n cert-manager \
96- --create-namespace \
97- --set installCRDs=true
98111
112+ helm upgrade --install cert-manager jetpack/cert-manager --version v1.17.0 -n cert-manager --create-namespace --set installCRDs=true
99113 - name : Apply Cluster Issuers
100114 run : |
101115 kubectl apply -f ${{ inputs.issuer_yaml }}
@@ -104,8 +118,8 @@ jobs:
104118 kubectl apply -f ${{ inputs.storage_class_yaml }}
105119
106120 deploy-kyverno :
107- runs-on : [ self-hosted, docker ]
108- if : contains('["acpoppe","KlausNie,"kupeliorhun", "nasirky"]', github.triggering_actor)
121+ runs-on : [self-hosted, docker]
122+ if : contains('["acpoppe","KlausNie", "nasirky"]', github.triggering_actor)
109123 needs : deploy-cert-manager
110124 steps :
111125 - uses : actions/checkout@v4
@@ -122,8 +136,11 @@ jobs:
122136 context : ${{ secrets.KUBE_CONTEXT }}
123137 - name : Helm Install Kyverno
124138 run : |
125- helm upgrade --install kyverno kyverno --namespace kyverno-system --create-namespace --repo https://kyverno.github.io/kyverno/
139+ helm repo add kyverno https://kyverno.github.io/kyverno/
140+
141+ helm repo update
142+
143+ helm upgrade --install kyverno kyverno --namespace kyverno-system --create-namespace
126144 - name : Apply Cluster Policy
127145 run : |
128146 kubectl apply -f ${{ inputs.cluster_policy_yaml }}
129-
0 commit comments