From e8647ef621455a131ca1dfdafd160d288fd6991a Mon Sep 17 00:00:00 2001 From: kkb0318 Date: Mon, 1 Apr 2024 21:20:02 +0900 Subject: [PATCH] irsa webhook --- internal/controller/irsasetup_controller.go | 6 +- .../selfhosted/oidc/id_provider_discovery.go | 1 - internal/selfhosted/webhook/webhook.go | 58 +++++++++++++++++++ internal/selfhosted/webhook/webhook_test.go | 1 + 4 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 internal/selfhosted/webhook/webhook_test.go diff --git a/internal/controller/irsasetup_controller.go b/internal/controller/irsasetup_controller.go index fef8227..e5fe6c8 100644 --- a/internal/controller/irsasetup_controller.go +++ b/internal/controller/irsasetup_controller.go @@ -57,7 +57,7 @@ func (r *IRSASetupReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( } func (r *IRSASetupReconciler) reconcile(ctx context.Context) error { - err := reconcileSelfhosted(ctx) + err := reconcileSelfhosted(ctx) return err } @@ -70,11 +70,11 @@ func reconcileSelfhosted(ctx context.Context) error { if err != nil { return err } - // get from CRs + // get from CRs region := "ap-northeast-1" bucketName := "my-bucket-name" jwksFileName := "keys.json" - var factory selfhosted.OIDCIdPFactory + var factory selfhosted.OIDCIdPFactory factory, err = oidc.NewAwsS3IdpFactory( ctx, diff --git a/internal/selfhosted/oidc/id_provider_discovery.go b/internal/selfhosted/oidc/id_provider_discovery.go index 793615d..fd99699 100644 --- a/internal/selfhosted/oidc/id_provider_discovery.go +++ b/internal/selfhosted/oidc/id_provider_discovery.go @@ -59,4 +59,3 @@ func (s *S3IdPDiscovery) Upload(ctx context.Context, o selfhosted.OIDCIdPDiscove } return nil } - diff --git a/internal/selfhosted/webhook/webhook.go b/internal/selfhosted/webhook/webhook.go index d770c2c..b60f85c 100644 --- a/internal/selfhosted/webhook/webhook.go +++ b/internal/selfhosted/webhook/webhook.go @@ -1 +1,59 @@ package webhook + +import ( + "os" + "strings" + + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/serializer/yaml" +) + +type WebhookManifests struct { + Manifests []*unstructured.Unstructured +} + +func Read() ([]*unstructured.Unstructured, error) { + files := []string{ + "auth.yaml", + "deployment.yaml", + "mutatingwebhook-ca-bundle.yaml", + "mutatingwebhook.yaml", + "service.yaml", + } + objs := []*unstructured.Unstructured{} + for _, f := range files { + tmp, err := ReadFile(f) + if err != nil { + return nil, err + } + objs = append(objs, tmp...) + } + return objs, nil + +} + +func ReadFile(filePath string) ([]*unstructured.Unstructured, error) { + yamlContent, err := os.ReadFile(filePath) + if err != nil { + return nil, err + } + + // YAMLデコーダの準備 + decUnstructured := yaml.NewDecodingSerializer(unstructured.UnstructuredJSONScheme) + // マニフェストを分割 + documents := strings.Split(string(yamlContent), "---") + objs := make([]*unstructured.Unstructured, len(documents)) + for i, doc := range documents { + if strings.TrimSpace(doc) == "" { + continue + } + // 各マニフェストを解析 + obj := &unstructured.Unstructured{} + _, _, err := decUnstructured.Decode([]byte(doc), nil, obj) + if err != nil { + return nil, err + } + objs[i] = obj + } + return objs, nil +} diff --git a/internal/selfhosted/webhook/webhook_test.go b/internal/selfhosted/webhook/webhook_test.go new file mode 100644 index 0000000..d770c2c --- /dev/null +++ b/internal/selfhosted/webhook/webhook_test.go @@ -0,0 +1 @@ +package webhook