From a215754e90eac30430ac2b896944b825ef1d20aa Mon Sep 17 00:00:00 2001 From: Patryk Strugacz Date: Thu, 2 Nov 2023 11:17:00 +0100 Subject: [PATCH] Don't create kyma gateway (#451) * Don't create kyma gateway (#449) * Don't create kyma gateway * Remove kyma gateway from integration tests * Remove healthz virtual service * Update docs * Update version file and add release notes * Update docs/release-notes/1.1.2.md Co-authored-by: Natalia Sitko <80401180+nataliasitko@users.noreply.github.com> --------- Co-authored-by: Vladimir Videlov Co-authored-by: Natalia Sitko <80401180+nataliasitko@users.noreply.github.com> --- VERSION | 2 +- controllers/istio_controller.go | 2 - docs/contributor/04-10-technical-design.md | 5 - docs/contributor/04-40-istio-resources.md | 1 - docs/release-notes/1.1.2.md | 4 + .../istio_resources/gateway_kyma.go | 71 ----------- .../istio_resources/gateway_kyma.yaml | 27 ---- .../istio_resources/gateway_kyma_test.go | 115 ------------------ .../istio_resources/istio_resources_test.go | 41 ------- .../virtual_service_healthz.go | 42 ------- .../virtual_service_healthz.yaml | 19 --- .../virtual_service_healthz_test.go | 114 ----------------- .../main-suite/istio_installation.feature | 4 - .../main-suite/istio_resources.feature | 2 - 14 files changed, 5 insertions(+), 444 deletions(-) create mode 100644 docs/release-notes/1.1.2.md delete mode 100644 internal/reconciliations/istio_resources/gateway_kyma.go delete mode 100644 internal/reconciliations/istio_resources/gateway_kyma.yaml delete mode 100644 internal/reconciliations/istio_resources/gateway_kyma_test.go delete mode 100644 internal/reconciliations/istio_resources/virtual_service_healthz.go delete mode 100644 internal/reconciliations/istio_resources/virtual_service_healthz.yaml delete mode 100644 internal/reconciliations/istio_resources/virtual_service_healthz_test.go diff --git a/VERSION b/VERSION index 8cfbc905b..8428158dc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.1 \ No newline at end of file +1.1.2 \ No newline at end of file diff --git a/controllers/istio_controller.go b/controllers/istio_controller.go index 3cc48fd90..1d86c51e1 100644 --- a/controllers/istio_controller.go +++ b/controllers/istio_controller.go @@ -61,8 +61,6 @@ func NewReconciler(mgr manager.Manager, reconciliationInterval time.Duration) *I efReferer := istio_resources.NewEnvoyFilterAllowPartialReferer(mgr.GetClient()) istioResources := []istio_resources.Resource{efReferer} - istioResources = append(istioResources, istio_resources.NewGatewayKyma(mgr.GetClient())) - istioResources = append(istioResources, istio_resources.NewVirtualServiceHealthz(mgr.GetClient())) istioResources = append(istioResources, istio_resources.NewPeerAuthenticationMtls(mgr.GetClient())) istioResources = append(istioResources, istio_resources.NewConfigMapControlPlane(mgr.GetClient())) istioResources = append(istioResources, istio_resources.NewConfigMapMesh(mgr.GetClient())) diff --git a/docs/contributor/04-10-technical-design.md b/docs/contributor/04-10-technical-design.md index 98a4e3f16..28e6280fc 100644 --- a/docs/contributor/04-10-technical-design.md +++ b/docs/contributor/04-10-technical-design.md @@ -27,11 +27,6 @@ It still needs to be decided who will have ownership of the dashboards. To make We do not consider Istio ServiceMonitor in the design, because this resource is planned to be replaced. For more information, see this [PR](https://github.com/kyma-project/kyma/pull/16247). -##### istio-healthz Virtual Service - -Istio-healthz Virtual Service offers the possibility of monitoring Istio externally by exposing an endpoint. This resource is not part of Kyma Istio Operator. -Therefore, a user who needs such external monitoring must take care of this particular configuration. - ##### Global mTLS PeerAuthentication Global mTLS PeerAuthentication is tightly coupled with the Istio installation. Therefore, it should be reconciled by the operator. diff --git a/docs/contributor/04-40-istio-resources.md b/docs/contributor/04-40-istio-resources.md index 2cc797842..a4370686f 100644 --- a/docs/contributor/04-40-istio-resources.md +++ b/docs/contributor/04-40-istio-resources.md @@ -8,4 +8,3 @@ The additional Istio resources include the Kyma configuration of Istio. They con - Configuration details for Istio monitoring containing specifications for Grafana dashboards - Configuration for Istio Ingress Gateway, which handles incoming traffic to Kyma - Configuration for enabling Mutual TLS (mTLS) cluster-wide in the `STRICT` mode -- Information about Istio [VirtualService](https://istio.io/docs/reference/config/networking/virtual-service/), which indicates whether Istio is operational. diff --git a/docs/release-notes/1.1.2.md b/docs/release-notes/1.1.2.md new file mode 100644 index 000000000..3f1901b74 --- /dev/null +++ b/docs/release-notes/1.1.2.md @@ -0,0 +1,4 @@ + +## New features + +- Remove the code responsible for creating Kyma Gateway [#451](https://github.com/kyma-project/istio/pull/451) diff --git a/internal/reconciliations/istio_resources/gateway_kyma.go b/internal/reconciliations/istio_resources/gateway_kyma.go deleted file mode 100644 index b30cec6a3..000000000 --- a/internal/reconciliations/istio_resources/gateway_kyma.go +++ /dev/null @@ -1,71 +0,0 @@ -package istio_resources - -import ( - "bytes" - "context" - _ "embed" - "text/template" - - "github.com/kyma-project/istio/operator/internal/reconciliations/istio" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - "sigs.k8s.io/yaml" -) - -//go:embed gateway_kyma.yaml -var manifest_gateway_kyma []byte - -type GatewayKyma struct { - k8sClient client.Client -} - -func NewGatewayKyma(k8sClient client.Client) GatewayKyma { - return GatewayKyma{k8sClient: k8sClient} -} - -func (GatewayKyma) apply(ctx context.Context, k8sClient client.Client, _ metav1.OwnerReference, templateValues map[string]string) (controllerutil.OperationResult, error) { - resourceTemplate, err := template.New("tmpl").Option("missingkey=error").Parse(string(manifest_gateway_kyma)) - if err != nil { - return controllerutil.OperationResultNone, err - } - - var resourceBuffer bytes.Buffer - err = resourceTemplate.Execute(&resourceBuffer, templateValues) - if err != nil { - return controllerutil.OperationResultNone, err - } - - var resource unstructured.Unstructured - err = yaml.Unmarshal(resourceBuffer.Bytes(), &resource) - if err != nil { - return controllerutil.OperationResultNone, err - } - - spec := resource.Object["spec"] - result, err := controllerutil.CreateOrUpdate(ctx, k8sClient, &resource, func() error { - resource.Object["spec"] = spec - return nil - }) - if err != nil { - return controllerutil.OperationResultNone, err - } - - var daFound bool - if resource.GetAnnotations() != nil { - _, daFound = resource.GetAnnotations()[istio.DisclaimerKey] - } - if !daFound { - err := annotateWithDisclaimer(ctx, resource, k8sClient) - if err != nil { - return controllerutil.OperationResultNone, err - } - } - - return result, nil -} - -func (GatewayKyma) Name() string { - return "Gateway/kyma-gateway" -} diff --git a/internal/reconciliations/istio_resources/gateway_kyma.yaml b/internal/reconciliations/istio_resources/gateway_kyma.yaml deleted file mode 100644 index 14a3d8bb5..000000000 --- a/internal/reconciliations/istio_resources/gateway_kyma.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: networking.istio.io/v1alpha3 -kind: Gateway -metadata: - name: kyma-gateway - namespace: kyma-system -spec: - selector: - app: istio-ingressgateway - istio: ingressgateway # use istio default ingress gateway - servers: - - port: - number: 443 - name: https - protocol: HTTPS - tls: - mode: SIMPLE - credentialName: kyma-gateway-certs - hosts: - - "*.{{.DomainName}}" - - port: - number: 80 - name: http - protocol: HTTP - tls: - httpsRedirect: true # automatic 301 redirect from http to https - hosts: - - "*.{{.DomainName}}" diff --git a/internal/reconciliations/istio_resources/gateway_kyma_test.go b/internal/reconciliations/istio_resources/gateway_kyma_test.go deleted file mode 100644 index 0d34b42be..000000000 --- a/internal/reconciliations/istio_resources/gateway_kyma_test.go +++ /dev/null @@ -1,115 +0,0 @@ -package istio_resources - -import ( - "bytes" - "context" - "text/template" - - "github.com/kyma-project/istio/operator/internal/reconciliations/istio" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - networkingv1alpha3 "istio.io/client-go/pkg/apis/networking/v1alpha3" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - "sigs.k8s.io/yaml" -) - -var _ = Describe("Apply", func() { - templateValues := map[string]string{} - templateValues["DomainName"] = "example.com" - - owner := metav1.OwnerReference{ - APIVersion: "operator.kyma-project.io/v1alpha2", - Kind: "Istio", - Name: "owner-name", - UID: "owner-uid", - } - - It("should return created if no resource was present", func() { - //given - client := createFakeClient() - sample := NewGatewayKyma(client) - - //when - changed, err := sample.apply(context.TODO(), client, owner, templateValues) - - //then - Expect(err).To(Not(HaveOccurred())) - Expect(changed).To(Equal(controllerutil.OperationResultCreated)) - - var s networkingv1alpha3.GatewayList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - - Expect(s.Items[0].Annotations).To(Not(BeNil())) - Expect(s.Items[0].Annotations[istio.DisclaimerKey]).To(Not(BeNil())) - }) - - It("should return not changed if no change was applied", func() { - //given - resourceTemplate, err := template.New("tmpl").Option("missingkey=error").Parse(string(manifest_gateway_kyma)) - Expect(err).To(Not(HaveOccurred())) - - var resourceBuffer bytes.Buffer - err = resourceTemplate.Execute(&resourceBuffer, templateValues) - Expect(err).To(Not(HaveOccurred())) - - var p networkingv1alpha3.Gateway - err = yaml.Unmarshal(resourceBuffer.Bytes(), &p) - Expect(err).To(Not(HaveOccurred())) - - client := createFakeClient(&p) - - sample := NewGatewayKyma(client) - - //when - changed, err := sample.apply(context.TODO(), client, owner, templateValues) - - //then - Expect(err).To(Not(HaveOccurred())) - Expect(changed).To(Equal(controllerutil.OperationResultNone)) - - var s networkingv1alpha3.GatewayList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - - Expect(s.Items[0].Annotations).To(Not(BeNil())) - Expect(s.Items[0].Annotations[istio.DisclaimerKey]).To(Not(BeNil())) - }) - - It("should return updated if change was applied", func() { - //given - resourceTemplate, err := template.New("tmpl").Option("missingkey=error").Parse(string(manifest_gateway_kyma)) - Expect(err).To(Not(HaveOccurred())) - - var resourceBuffer bytes.Buffer - err = resourceTemplate.Execute(&resourceBuffer, templateValues) - Expect(err).To(Not(HaveOccurred())) - - var p networkingv1alpha3.Gateway - err = yaml.Unmarshal(resourceBuffer.Bytes(), &p) - Expect(err).To(Not(HaveOccurred())) - - p.Spec.Servers[0].Port.Number = 4443 - client := createFakeClient(&p) - - sample := NewGatewayKyma(client) - - //when - changed, err := sample.apply(context.TODO(), client, owner, templateValues) - - //then - Expect(err).To(Not(HaveOccurred())) - Expect(changed).To(Equal(controllerutil.OperationResultUpdated)) - - var s networkingv1alpha3.GatewayList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - - Expect(s.Items[0].Annotations).To(Not(BeNil())) - Expect(s.Items[0].Annotations[istio.DisclaimerKey]).To(Not(BeNil())) - }) -}) diff --git a/internal/reconciliations/istio_resources/istio_resources_test.go b/internal/reconciliations/istio_resources/istio_resources_test.go index 35d692879..c57a331a8 100644 --- a/internal/reconciliations/istio_resources/istio_resources_test.go +++ b/internal/reconciliations/istio_resources/istio_resources_test.go @@ -2,10 +2,7 @@ package istio_resources import ( "context" - "fmt" - operatorv1alpha1 "github.com/kyma-project/istio/operator/api/v1alpha1" - "github.com/kyma-project/istio/operator/internal/clusterconfig" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" networkingv1alpha3 "istio.io/client-go/pkg/apis/networking/v1alpha3" @@ -52,44 +49,6 @@ var _ = Describe("Reconcilation", func() { Expect(s.Items).To(HaveLen(1)) }) - It("should succeed creating gateway kyna", func() { - client := createFakeClient() - - sample := NewGatewayKyma(client) - reconciler := NewReconciler(client, []Resource{sample}) - - //when - err := reconciler.Reconcile(context.TODO(), istioCR) - - //then - Expect(err).To(Not(HaveOccurred())) - - var s networkingv1alpha3.GatewayList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - Expect(s.Items[0].Spec.Servers[0].Hosts[0]).To(Equal(fmt.Sprintf("*.%s", clusterconfig.LocalKymaDomain))) - }) - - It("should succeed creating virtual service healthz", func() { - client := createFakeClient() - - sample := NewVirtualServiceHealthz(client) - reconciler := NewReconciler(client, []Resource{sample}) - - //when - err := reconciler.Reconcile(context.TODO(), istioCR) - - //then - Expect(err).To(Not(HaveOccurred())) - - var s networkingv1beta1.VirtualServiceList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - Expect(s.Items[0].Spec.Hosts[0]).To(Equal(fmt.Sprintf("healthz.%s", clusterconfig.LocalKymaDomain))) - }) - It("should succeed creating peer authentication mtls", func() { client := createFakeClient() diff --git a/internal/reconciliations/istio_resources/virtual_service_healthz.go b/internal/reconciliations/istio_resources/virtual_service_healthz.go deleted file mode 100644 index e07a6bb4b..000000000 --- a/internal/reconciliations/istio_resources/virtual_service_healthz.go +++ /dev/null @@ -1,42 +0,0 @@ -package istio_resources - -import ( - "bytes" - "context" - _ "embed" - "text/template" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" -) - -//go:embed virtual_service_healthz.yaml -var manifest_vs_healthz []byte - -type VirtualServiceHealthz struct { - k8sClient client.Client -} - -func NewVirtualServiceHealthz(k8sClient client.Client) VirtualServiceHealthz { - return VirtualServiceHealthz{k8sClient: k8sClient} -} - -func (VirtualServiceHealthz) apply(ctx context.Context, k8sClient client.Client, _ metav1.OwnerReference, templateValues map[string]string) (controllerutil.OperationResult, error) { - resourceTemplate, err := template.New("tmpl").Option("missingkey=error").Parse(string(manifest_vs_healthz)) - if err != nil { - return controllerutil.OperationResultNone, err - } - - var resourceBuffer bytes.Buffer - err = resourceTemplate.Execute(&resourceBuffer, templateValues) - if err != nil { - return controllerutil.OperationResultNone, err - } - - return applyResource(ctx, k8sClient, resourceBuffer.Bytes(), nil) -} - -func (VirtualServiceHealthz) Name() string { - return "VirtualService/istio-healthz" -} diff --git a/internal/reconciliations/istio_resources/virtual_service_healthz.yaml b/internal/reconciliations/istio_resources/virtual_service_healthz.yaml deleted file mode 100644 index dc5313881..000000000 --- a/internal/reconciliations/istio_resources/virtual_service_healthz.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: networking.istio.io/v1beta1 -kind: VirtualService -metadata: - name: istio-healthz - namespace: istio-system -spec: - gateways: - - kyma-system/kyma-gateway - hosts: - - healthz.{{.DomainName}} - http: - - match: - - uri: - exact: /healthz/ready - route: - - destination: - host: istio-ingressgateway.istio-system.svc.cluster.local - port: - number: 15021 \ No newline at end of file diff --git a/internal/reconciliations/istio_resources/virtual_service_healthz_test.go b/internal/reconciliations/istio_resources/virtual_service_healthz_test.go deleted file mode 100644 index 9f1006965..000000000 --- a/internal/reconciliations/istio_resources/virtual_service_healthz_test.go +++ /dev/null @@ -1,114 +0,0 @@ -package istio_resources - -import ( - "bytes" - "context" - "text/template" - - "github.com/kyma-project/istio/operator/internal/reconciliations/istio" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - networkingv1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - "sigs.k8s.io/yaml" -) - -var _ = Describe("Apply", func() { - templateValues := map[string]string{} - templateValues["DomainName"] = "example.com" - - owner := metav1.OwnerReference{ - APIVersion: "operator.kyma-project.io/v1alpha2", - Kind: "Istio", - Name: "owner-name", - UID: "owner-uid", - } - - It("should return created if no resource was present", func() { - //given - client := createFakeClient() - sample := NewVirtualServiceHealthz(client) - - //when - changed, err := sample.apply(context.TODO(), client, owner, templateValues) - - //then - Expect(err).To(Not(HaveOccurred())) - Expect(changed).To(Equal(controllerutil.OperationResultCreated)) - - var s networkingv1beta1.VirtualServiceList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - - Expect(s.Items[0].Annotations).To(Not(BeNil())) - Expect(s.Items[0].Annotations[istio.DisclaimerKey]).To(Not(BeNil())) - }) - - It("should return not changed if no change was applied", func() { - //given - resourceTemplate, err := template.New("tmpl").Option("missingkey=error").Parse(string(manifest_vs_healthz)) - Expect(err).To(Not(HaveOccurred())) - - var resourceBuffer bytes.Buffer - err = resourceTemplate.Execute(&resourceBuffer, templateValues) - Expect(err).To(Not(HaveOccurred())) - - var p networkingv1beta1.VirtualService - err = yaml.Unmarshal(resourceBuffer.Bytes(), &p) - Expect(err).To(Not(HaveOccurred())) - - client := createFakeClient(&p) - sample := NewVirtualServiceHealthz(client) - - //when - changed, err := sample.apply(context.TODO(), client, owner, templateValues) - - //then - Expect(err).To(Not(HaveOccurred())) - Expect(changed).To(Equal(controllerutil.OperationResultNone)) - - var s networkingv1beta1.VirtualServiceList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - - Expect(s.Items[0].Annotations).To(Not(BeNil())) - Expect(s.Items[0].Annotations[istio.DisclaimerKey]).To(Not(BeNil())) - }) - - It("should return updated if change was applied", func() { - //given - resourceTemplate, err := template.New("tmpl").Option("missingkey=error").Parse(string(manifest_vs_healthz)) - Expect(err).To(Not(HaveOccurred())) - - var resourceBuffer bytes.Buffer - err = resourceTemplate.Execute(&resourceBuffer, templateValues) - Expect(err).To(Not(HaveOccurred())) - - var p networkingv1beta1.VirtualService - err = yaml.Unmarshal(resourceBuffer.Bytes(), &p) - Expect(err).To(Not(HaveOccurred())) - - p.Spec.Hosts = append(p.Spec.Hosts, "new-host.com") - client := createFakeClient(&p) - - sample := NewVirtualServiceHealthz(client) - - //when - changed, err := sample.apply(context.TODO(), client, owner, templateValues) - - //then - Expect(err).To(Not(HaveOccurred())) - Expect(changed).To(Equal(controllerutil.OperationResultUpdated)) - - var s networkingv1beta1.VirtualServiceList - listErr := client.List(context.TODO(), &s) - Expect(listErr).To(Not(HaveOccurred())) - Expect(s.Items).To(HaveLen(1)) - - Expect(s.Items[0].Annotations).To(Not(BeNil())) - Expect(s.Items[0].Annotations[istio.DisclaimerKey]).To(Not(BeNil())) - }) -}) diff --git a/tests/integration/features/istio/production/main-suite/istio_installation.feature b/tests/integration/features/istio/production/main-suite/istio_installation.feature index b65209ac7..37d0ead31 100644 --- a/tests/integration/features/istio/production/main-suite/istio_installation.feature +++ b/tests/integration/features/istio/production/main-suite/istio_installation.feature @@ -105,10 +105,8 @@ Feature: Installing and uninstalling Istio module And "Deployment" "istio-ingressgateway" in namespace "istio-system" is deleted And "DaemonSet" "istio-cni-node" in namespace "istio-system" is deleted And Istio injection is "enabled" in namespace "default" - And "Gateway" "kyma-gateway" in namespace "kyma-system" is deleted And "EnvoyFilter" "kyma-referer" in namespace "istio-system" is deleted And "PeerAuthentication" "default" in namespace "istio-system" is deleted - And "VirtualService" "istio-healthz" in namespace "istio-system" is deleted And "ConfigMap" "istio-control-plane-grafana-dashboard" in namespace "kyma-system" is deleted And "ConfigMap" "istio-mesh-grafana-dashboard" in namespace "kyma-system" is deleted And "ConfigMap" "istio-performance-grafana-dashboard" in namespace "kyma-system" is deleted @@ -122,10 +120,8 @@ Feature: Installing and uninstalling Istio module And "istiooperator" "installed-state-default-operator" in namespace "istio-system" is "present" And "Deployment" "istio-ingressgateway" in namespace "istio-system" is ready And "DaemonSet" "istio-cni-node" in namespace "istio-system" is ready - And "Gateway" "kyma-gateway" in namespace "kyma-system" is "present" And "EnvoyFilter" "kyma-referer" in namespace "istio-system" is "present" And "PeerAuthentication" "default" in namespace "istio-system" is "present" - And "VirtualService" "istio-healthz" in namespace "istio-system" is "present" And "ConfigMap" "istio-control-plane-grafana-dashboard" in namespace "kyma-system" is "present" And "ConfigMap" "istio-mesh-grafana-dashboard" in namespace "kyma-system" is "present" And "ConfigMap" "istio-performance-grafana-dashboard" in namespace "kyma-system" is "present" diff --git a/tests/integration/features/istio/production/main-suite/istio_resources.feature b/tests/integration/features/istio/production/main-suite/istio_resources.feature index 24f4083cc..c12fcb7cc 100644 --- a/tests/integration/features/istio/production/main-suite/istio_resources.feature +++ b/tests/integration/features/istio/production/main-suite/istio_resources.feature @@ -10,10 +10,8 @@ Feature: Istio resources configuration Scenario: Additional Istio resources are present Given Istio CR "istio-sample" is applied in namespace "kyma-system" When Istio CR "istio-sample" in namespace "kyma-system" has status "Ready" - Then "Gateway" "kyma-gateway" in namespace "kyma-system" is "present" And "EnvoyFilter" "kyma-referer" in namespace "istio-system" is "present" And "PeerAuthentication" "default" in namespace "istio-system" is "present" - And "VirtualService" "istio-healthz" in namespace "istio-system" is "present" And "ConfigMap" "istio-control-plane-grafana-dashboard" in namespace "kyma-system" is "present" And "ConfigMap" "istio-mesh-grafana-dashboard" in namespace "kyma-system" is "present" And "ConfigMap" "istio-performance-grafana-dashboard" in namespace "kyma-system" is "present"