Skip to content

Commit aea1890

Browse files
authored
Merge pull request #98 from zvlb/main
Work with Webhook
2 parents bb02e03 + 4e6fc7b commit aea1890

File tree

8 files changed

+215
-105
lines changed

8 files changed

+215
-105
lines changed

controllers/suite_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030
logf "sigs.k8s.io/controller-runtime/pkg/log"
3131
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3232

33-
envoyv1alpha1 "github.com/kaasops/envoy-xds-controller/api/v1alpha1"
3433
v1alpha1 "github.com/kaasops/envoy-xds-controller/api/v1alpha1"
3534
//+kubebuilder:scaffold:imports
3635
)
@@ -69,7 +68,7 @@ var _ = BeforeSuite(func() {
6968
err = v1alpha1.AddToScheme(scheme.Scheme)
7069
Expect(err).NotTo(HaveOccurred())
7170

72-
err = envoyv1alpha1.AddToScheme(scheme.Scheme)
71+
err = v1alpha1.AddToScheme(scheme.Scheme)
7372
Expect(err).NotTo(HaveOccurred())
7473

7574
//+kubebuilder:scaffold:scheme

controllers/webhook_controller.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616

1717
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
1818
corev1 "k8s.io/api/core/v1"
19-
api_errors "k8s.io/apimachinery/pkg/api/errors"
2019
"k8s.io/apimachinery/pkg/runtime"
2120
"k8s.io/apimachinery/pkg/types"
2221
"k8s.io/client-go/util/retry"
@@ -68,20 +67,13 @@ func (r *WebhookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
6867

6968
certSecret := &corev1.Secret{}
7069
if err := r.Client.Get(ctx, req.NamespacedName, certSecret); err != nil {
71-
if api_errors.IsNotFound(err) {
72-
r.Log.V(1).Info("Secret with TLS was not found. Creating")
73-
certSecret.Name = req.Name
74-
certSecret.Namespace = req.Namespace
75-
certSecret.Labels = map[string]string{
76-
options.SecretLabelKey: options.WebhookSecretLabelValue,
77-
}
78-
if err = r.Client.Create(ctx, certSecret); err != nil {
79-
return reconcile.Result{}, errors.Wrap(err, errors.CreateInKubernetesMessage)
80-
}
81-
}
8270
return reconcile.Result{}, errors.Wrap(err, errors.GetFromKubernetesMessage)
8371
}
8472

73+
certSecret.Labels = map[string]string{
74+
options.SecretLabelKey: options.WebhookSecretLabelValue,
75+
}
76+
8577
if err := r.ReconcileCertificates(ctx, certSecret); err != nil {
8678
return reconcile.Result{}, errors.Wrap(err, "cannot reconcile TLS certificate")
8779
}
@@ -102,6 +94,11 @@ func (r *WebhookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
10294
}
10395

10496
func (r *WebhookReconciler) ReconcileCertificates(ctx context.Context, certSecret *corev1.Secret) error {
97+
98+
if err := r.Client.Get(ctx, types.NamespacedName{Namespace: certSecret.Namespace, Name: certSecret.Name}, certSecret); err != nil {
99+
return errors.Wrap(err, errors.GetFromKubernetesMessage)
100+
}
101+
105102
// If need create of update certificate for webhook - do it
106103
if r.shouldUpdateCertificate(certSecret) {
107104
r.Log.Info("Generating new TLS Certificate")

docs/contributing/development.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
### Setup the development environment
2+
3+
4+
If you don't need Validation WebHook for working - start localy Envoy xDS Controller with env `WEBHOOK_DISABLE` = `true`.
5+
6+
If you need full instalation with Validation Webhook logic on local instance Envoy xDS controller, you need Kubernetes with network access to workstation (Laptop). For example you can use [KIND](https://kind.sigs.k8s.io/).
7+
8+
Deploy Helm Envoy xDS Controller to you kubernetes:
9+
10+
```bash
11+
cd helm/charts/envoy-xds-controller
12+
helm upgrade envoy --install --namespace envoy-xds-controller --create-namespace .
13+
```
14+
15+
Wait when Pod starting. After this - set Replicas for Envoy xDS Controller to 0.
16+
17+
```bash
18+
kubectl scale deployment -n envoy-xds-controller envoy-envoy-xds-controller --replicas 0
19+
```
20+
21+
After this, create dir for local certificates for Webhook Server:
22+
23+
```bash
24+
mkdir -p /tmp/k8s-webhook-server/serving-certs
25+
```
26+
27+
Copy generated certificate and key for Webhook Server:
28+
29+
```bash
30+
kubectl get secrets -n envoy-xds-controller envoy-xds-controller-tls -o jsonpath='{.data.tls\.crt}' | base64 -D > /tmp/k8s-webhook-server/serving-certs/tls.crt
31+
kubectl get secrets -n envoy-xds-controller envoy-xds-controller-tls -o jsonpath='{.data.tls\.key}' | base64 -D > /tmp/k8s-webhook-server/serving-certs/tls.key
32+
```
33+
34+
Delete service for Werhook
35+
36+
```bash
37+
kubectl delete service -n envoy-xds-controller envoy-xds-controller-webhook-service
38+
```
39+
40+
Apply new service. Insert you IP to <WORKSTATION_IP>:
41+
42+
```yaml
43+
apiVersion: v1
44+
kind: Service
45+
metadata:
46+
name: envoy-xds-controller-webhook-service
47+
namespace: envoy-xds-controller
48+
spec:
49+
ports:
50+
- protocol: TCP
51+
port: 443
52+
targetPort: 9443
53+
---
54+
apiVersion: v1
55+
kind: Endpoints
56+
metadata:
57+
name: envoy-xds-controller-webhook-service
58+
namespace: envoy-xds-controller
59+
subsets:
60+
- addresses:
61+
- ip: 172.28.128.20
62+
ports:
63+
- port: 9443
64+
```
65+

helm/charts/envoy-xds-controller/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ type: application
1515
# This is the chart version. This version number should be incremented each time you make changes
1616
# to the chart and its templates, including the app version.
1717
# Versions are expected to follow Semantic Versioning (https://semver.org/)
18-
version: "0.40"
18+
version: "0.41"
1919

2020
# This is the version number of the application being deployed. This version number should be
2121
# incremented each time you make changes to the application. Versions are not expected to
2222
# follow Semantic Versioning. They should reflect the version the application is using.
2323
# It is recommended to use it with quotes.
24-
appVersion: "v0.1.36"
24+
appVersion: "v0.1.37"
2525

2626
home: https://github.com/kaasops/envoy-xds-controller
2727
sources:

0 commit comments

Comments
 (0)