From cbf70927f5d3ce00bc9a5e7c196c889267fdec36 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 30 Jan 2024 17:16:33 +0000 Subject: [PATCH] Update Helm release metallb to v0.14.3 Signed-off-by: Renovate Bot --- class/defaults.yml | 2 +- .../metallb/charts/crds/templates/crds.yaml | 490 ++++++------------ .../metallb/templates/controller.yaml | 10 +- .../metallb/templates/exclude-l2-config.yaml | 21 + .../metallb/templates/rbac.yaml | 50 +- .../metallb/templates/service-accounts.yaml | 10 +- .../metallb/templates/speaker.yaml | 241 ++++++++- .../metallb/templates/webhooks.yaml | 34 +- .../metallb/charts/crds/templates/crds.yaml | 490 ++++++------------ .../metallb/templates/controller.yaml | 10 +- .../metallb/templates/exclude-l2-config.yaml | 21 + .../metallb/templates/rbac.yaml | 50 +- .../metallb/templates/service-accounts.yaml | 10 +- .../metallb/templates/speaker.yaml | 241 ++++++++- .../metallb/templates/webhooks.yaml | 34 +- .../metallb/charts/crds/templates/crds.yaml | 490 ++++++------------ .../metallb/templates/controller.yaml | 10 +- .../metallb/templates/exclude-l2-config.yaml | 21 + .../metallb/templates/rbac.yaml | 50 +- .../metallb/templates/service-accounts.yaml | 10 +- .../metallb/templates/speaker.yaml | 241 ++++++++- .../metallb/templates/webhooks.yaml | 34 +- 22 files changed, 1432 insertions(+), 1138 deletions(-) create mode 100644 tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml create mode 100644 tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml create mode 100644 tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml diff --git a/class/defaults.yml b/class/defaults.yml index 7ed14e1..0852508 100644 --- a/class/defaults.yml +++ b/class/defaults.yml @@ -8,7 +8,7 @@ parameters: charts: metallb: source: https://metallb.github.io/metallb - version: 0.13.9 + version: 0.14.3 helm_values: speaker: secretName: ${metallb:speaker:secretname} diff --git a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml index 8c3698d..f0c69c4 100644 --- a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml +++ b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml @@ -2,222 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: addresspools.metallb.io -spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== - service: - name: metallb-webhook-service - namespace: syn-metallb - path: /convert - conversionReviewVersions: - - v1alpha1 - - v1beta1 - group: metallb.io - names: - kind: AddressPool - listKind: AddressPoolList - plural: addresspools - singular: addresspool - scope: Namespaced - versions: - - deprecated: true - deprecationWarning: metallb.io v1alpha1 AddressPool is deprecated - name: v1alpha1 - schema: - openAPIV3Schema: - description: AddressPool is the Schema for the addresspools API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AddressPoolSpec defines the desired state of AddressPool. - properties: - addresses: - description: A list of IP address ranges over which MetalLB has - authority. You can list multiple ranges in a single pool, they - will all share the same settings. Each range can be either a CIDR - prefix, or an explicit start-end range of IPs. - items: - type: string - type: array - autoAssign: - default: true - description: AutoAssign flag used to prevent MetallB from automatic - allocation for a pool. - type: boolean - bgpAdvertisements: - description: When an IP is allocated from this pool, how should - it be translated into BGP announcements? - items: - properties: - aggregationLength: - default: 32 - description: "The aggregation-length advertisement option\ - \ lets you \u201Croll up\u201D the /32s into a larger prefix." - format: int32 - minimum: 1 - type: integer - aggregationLengthV6: - default: 128 - description: Optional, defaults to 128 (i.e. no aggregation) - if not specified. - format: int32 - type: integer - communities: - description: BGP communities - items: - type: string - type: array - localPref: - description: BGP LOCAL_PREF attribute which is used by BGP - best path algorithm, Path with higher localpref is preferred - over one with lower localpref. - format: int32 - type: integer - type: object - type: array - protocol: - description: Protocol can be used to select how the announcement - is done. - enum: - - layer2 - - bgp - type: string - required: - - addresses - - protocol - type: object - status: - description: AddressPoolStatus defines the observed state of AddressPool. - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} - - deprecated: true - deprecationWarning: metallb.io v1beta1 AddressPool is deprecated, consider using - IPAddressPool - name: v1beta1 - schema: - openAPIV3Schema: - description: AddressPool represents a pool of IP addresses that can be allocated - to LoadBalancer services. AddressPool is deprecated and being replaced - by IPAddressPool. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AddressPoolSpec defines the desired state of AddressPool. - properties: - addresses: - description: A list of IP address ranges over which MetalLB has - authority. You can list multiple ranges in a single pool, they - will all share the same settings. Each range can be either a CIDR - prefix, or an explicit start-end range of IPs. - items: - type: string - type: array - autoAssign: - default: true - description: AutoAssign flag used to prevent MetallB from automatic - allocation for a pool. - type: boolean - bgpAdvertisements: - description: Drives how an IP allocated from this pool should translated - into BGP announcements. - items: - properties: - aggregationLength: - default: 32 - description: "The aggregation-length advertisement option\ - \ lets you \u201Croll up\u201D the /32s into a larger prefix." - format: int32 - minimum: 1 - type: integer - aggregationLengthV6: - default: 128 - description: Optional, defaults to 128 (i.e. no aggregation) - if not specified. - format: int32 - type: integer - communities: - description: BGP communities to be associated with the given - advertisement. - items: - type: string - type: array - localPref: - description: BGP LOCAL_PREF attribute which is used by BGP - best path algorithm, Path with higher localpref is preferred - over one with lower localpref. - format: int32 - type: integer - type: object - type: array - protocol: - description: Protocol can be used to select how the announcement - is done. - enum: - - layer2 - - bgp - type: string - required: - - addresses - - protocol - type: object - status: - description: AddressPoolStatus defines the observed state of AddressPool. - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bfdprofiles.metallb.io spec: @@ -229,7 +14,20 @@ spec: singular: bfdprofile scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.passiveMode + name: Passive Mode + type: boolean + - jsonPath: .spec.transmitInterval + name: Transmit Interval + type: integer + - jsonPath: .spec.receiveInterval + name: Receive Interval + type: integer + - jsonPath: .spec.detectMultiplier + name: Multiplier + type: integer + name: v1beta1 schema: openAPIV3Schema: description: BFDProfile represents the settings of the bfd session that @@ -307,18 +105,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bgpadvertisements.metallb.io spec: @@ -330,7 +122,21 @@ spec: singular: bgpadvertisement scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.ipAddressPools + name: IPAddressPools + type: string + - jsonPath: .spec.ipAddressPoolSelectors + name: IPAddressPool Selectors + type: string + - jsonPath: .spec.peers + name: Peers + type: string + - jsonPath: .spec.nodeSelectors + name: Node Selectors + priority: 10 + type: string + name: v1beta1 schema: openAPIV3Schema: description: BGPAdvertisement allows to advertise the IPs coming from the @@ -369,8 +175,9 @@ spec: type: integer communities: description: The BGP communities to be associated with the announcement. - Each item can be a community of the form 1234:1234 or the name - of an alias defined in the Community CRD. + Each item can be a standard community of the form 1234:1234, a + large community of the form large:1234:1234:1234 or the name of + an alias defined in the Community CRD. items: type: string type: array @@ -425,6 +232,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array ipAddressPools: description: The list of IPAddressPools to advertise via this advertisement, @@ -489,6 +297,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array peers: description: Peers limits the bgppeer to advertise the ips of the @@ -506,18 +315,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bgppeers.metallb.io spec: @@ -527,7 +330,7 @@ spec: clientConfig: caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== service: - name: metallb-webhook-service + name: webhook-service namespace: syn-metallb path: /convert conversionReviewVersions: @@ -541,7 +344,20 @@ spec: singular: bgppeer scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.peerAddress + name: Address + type: string + - jsonPath: .spec.peerASN + name: ASN + type: string + - jsonPath: .spec.bfdProfile + name: BFD Profile + type: string + - jsonPath: .spec.ebgpMultiHop + name: Multi Hops + type: string + name: v1beta1 schema: openAPIV3Schema: description: BGPPeer is the Schema for the peers API. @@ -645,7 +461,20 @@ spec: storage: false subresources: status: {} - - name: v1beta2 + - additionalPrinterColumns: + - jsonPath: .spec.peerAddress + name: Address + type: string + - jsonPath: .spec.peerASN + name: ASN + type: string + - jsonPath: .spec.bfdProfile + name: BFD Profile + type: string + - jsonPath: .spec.ebgpMultiHop + name: Multi Hops + type: string + name: v1beta2 schema: openAPIV3Schema: description: BGPPeer is the Schema for the peers API. @@ -737,6 +566,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array password: description: Authentication password for routers enforcing TCP MD5 @@ -749,14 +579,15 @@ spec: password is stored in the secret as the key "password". properties: name: - description: Name is unique within a namespace to reference + description: name is unique within a namespace to reference a secret resource. type: string namespace: - description: Namespace defines the space within which the secret + description: namespace defines the space within which the secret name must be unique. type: string type: object + x-kubernetes-map-type: atomic peerASN: description: AS number to expect from the remote end of the session. format: int32 @@ -795,18 +626,73 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 + creationTimestamp: null + name: communities.metallb.io +spec: + group: metallb.io + names: + kind: Community + listKind: CommunityList + plural: communities + singular: community + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: Community is a collection of aliases for communities. Users + can define named aliases to be used in the BGPPeer CRD. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint the + client submits requests to. Cannot be updated. In CamelCase. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CommunitySpec defines the desired state of Community. + properties: + communities: + items: + properties: + name: + description: The name of the alias for the community. + type: string + value: + description: The BGP community value corresponding to the + given name. Can be a standard community of the form 1234:1234 + or a large community of the form large:1234:1234:1234. + type: string + type: object + type: array + type: object + status: + description: CommunityStatus defines the observed state of Community. + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: ipaddresspools.metallb.io spec: @@ -818,7 +704,17 @@ spec: singular: ipaddresspool scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.autoAssign + name: Auto Assign + type: boolean + - jsonPath: .spec.avoidBuggyIPs + name: Avoid Buggy IPs + type: boolean + - jsonPath: .spec.addresses + name: Addresses + type: string + name: v1beta1 schema: openAPIV3Schema: description: IPAddressPool represents a pool of IP addresses that can be @@ -920,6 +816,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array namespaces: description: Namespaces list of namespace(s) on which ip pool @@ -982,6 +879,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array type: object required: @@ -997,18 +895,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: l2advertisements.metallb.io spec: @@ -1020,7 +912,21 @@ spec: singular: l2advertisement scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.ipAddressPools + name: IPAddressPools + type: string + - jsonPath: .spec.ipAddressPoolSelectors + name: IPAddressPool Selectors + type: string + - jsonPath: .spec.interfaces + name: Interfaces + type: string + - jsonPath: .spec.nodeSelectors + name: Node Selectors + priority: 10 + type: string + name: v1beta1 schema: openAPIV3Schema: description: L2Advertisement allows to advertise the LoadBalancer IPs provided @@ -1100,6 +1006,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array ipAddressPools: description: The list of IPAddressPools to advertise via this advertisement, @@ -1158,6 +1065,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array type: object status: @@ -1168,75 +1076,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: communities.metallb.io -spec: - group: metallb.io - names: - kind: Community - listKind: CommunityList - plural: communities - singular: community - scope: Namespaced - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: Community is a collection of aliases for communities. Users - can define named aliases to be used in the BGPPeer CRD. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: CommunitySpec defines the desired state of Community. - properties: - communities: - items: - properties: - name: - description: The name of the alias for the community. - type: string - value: - description: The BGP community value corresponding to the - given name. - type: string - type: object - type: array - type: object - status: - description: CommunityStatus defines the observed state of Community. - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] diff --git a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml index 1391e13..ad2eee7 100644 --- a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml +++ b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml @@ -6,9 +6,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb spec: selector: matchLabels: @@ -29,12 +30,15 @@ spec: - --port=7472 - --log-level=info - --cert-service-name=metallb-webhook-service + - --tls-min-version=VersionTLS12 env: - name: METALLB_ML_SECRET_NAME value: metallb-memberlist - name: METALLB_DEPLOYMENT value: metallb-controller - image: quay.io/metallb/controller:v0.13.9 + - name: METALLB_BGP_TYPE + value: frr + image: quay.io/metallb/controller:v0.14.3 livenessProbe: failureThreshold: 3 httpGet: diff --git a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml new file mode 100644 index 0000000..ec12dd0 --- /dev/null +++ b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +data: + excludel2.yaml: | + announcedInterfacesToExclude: + - ^docker.* + - ^cbr.* + - ^dummy.* + - ^virbr.* + - ^lxcbr.* + - ^veth.* + - ^lo$ + - ^cali.* + - ^tunl.* + - ^flannel.* + - ^kube-ipvs.* + - ^cni.* + - ^nodelocaldns.* +kind: ConfigMap +metadata: + name: metallb-excludel2 + namespace: syn-metallb diff --git a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml index cc119b1..d7e2b92 100644 --- a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml +++ b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml @@ -5,8 +5,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:controller rules: - apiGroups: @@ -18,6 +18,12 @@ rules: - get - list - watch + - apiGroups: + - '' + resources: + - nodes + verbs: + - list - apiGroups: - '' resources: @@ -89,8 +95,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:speaker rules: - apiGroups: @@ -127,8 +133,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:controller roleRef: apiGroup: rbac.authorization.k8s.io @@ -146,8 +152,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:speaker roleRef: apiGroup: rbac.authorization.k8s.io @@ -165,9 +171,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-pod-lister + namespace: syn-metallb rules: - apiGroups: - '' @@ -183,6 +190,14 @@ rules: - get - list - watch + - apiGroups: + - '' + resources: + - configmaps + verbs: + - get + - list + - watch - apiGroups: - metallb.io resources: @@ -247,9 +262,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb rules: - apiGroups: - '' @@ -349,9 +365,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-pod-lister + namespace: syn-metallb roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -367,9 +384,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb roleRef: apiGroup: rbac.authorization.k8s.io kind: Role diff --git a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml index fc4d8c3..6127db7 100644 --- a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml +++ b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml @@ -6,9 +6,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb --- apiVersion: v1 kind: ServiceAccount @@ -18,6 +19,7 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-speaker + namespace: syn-metallb diff --git a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml index bb77aed..5551093 100644 --- a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml +++ b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml @@ -1,3 +1,108 @@ +apiVersion: v1 +data: + daemons: | + # This file tells the frr package which daemons to start. + # + # Sample configurations for these daemons can be found in + # /usr/share/doc/frr/examples/. + # + # ATTENTION: + # + # When activating a daemon for the first time, a config file, even if it is + # empty, has to be present *and* be owned by the user and group "frr", else + # the daemon will not be started by /etc/init.d/frr. The permissions should + # be u=rw,g=r,o=. + # When using "vtysh" such a config file is also needed. It should be owned by + # group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too. + # + # The watchfrr and zebra daemons are always started. + # + bgpd=yes + ospfd=no + ospf6d=no + ripd=no + ripngd=no + isisd=no + pimd=no + ldpd=no + nhrpd=no + eigrpd=no + babeld=no + sharpd=no + pbrd=no + bfdd=yes + fabricd=no + vrrpd=no + + # + # If this option is set the /etc/init.d/frr script automatically loads + # the config via "vtysh -b" when the servers are started. + # Check /etc/pam.d/frr if you intend to use "vtysh"! + # + vtysh_enable=yes + zebra_options=" -A 127.0.0.1 -s 90000000" + bgpd_options=" -A 127.0.0.1 -p 0" + ospfd_options=" -A 127.0.0.1" + ospf6d_options=" -A ::1" + ripd_options=" -A 127.0.0.1" + ripngd_options=" -A ::1" + isisd_options=" -A 127.0.0.1" + pimd_options=" -A 127.0.0.1" + ldpd_options=" -A 127.0.0.1" + nhrpd_options=" -A 127.0.0.1" + eigrpd_options=" -A 127.0.0.1" + babeld_options=" -A 127.0.0.1" + sharpd_options=" -A 127.0.0.1" + pbrd_options=" -A 127.0.0.1" + staticd_options="-A 127.0.0.1" + bfdd_options=" -A 127.0.0.1" + fabricd_options="-A 127.0.0.1" + vrrpd_options=" -A 127.0.0.1" + + # configuration profile + # + #frr_profile="traditional" + #frr_profile="datacenter" + + # + # This is the maximum number of FD's that will be available. + # Upon startup this is read by the control files and ulimit + # is called. Uncomment and use a reasonable value for your + # setup if you are expecting a large number of peers in + # say BGP. + #MAX_FDS=1024 + + # The list of daemons to watch is automatically generated by the init script. + #watchfrr_options="" + + # for debugging purposes, you can specify a "wrap" command to start instead + # of starting the daemon directly, e.g. to use valgrind on ospfd: + # ospfd_wrap="/usr/bin/valgrind" + # or you can use "all_wrap" for all daemons, e.g. to use perf record: + # all_wrap="/usr/bin/perf record --call-graph -" + # the normal daemon command is added to this at the end. + frr.conf: | + ! This file gets overriden the first time the speaker renders a config. + ! So anything configured here is only temporary. + frr version 7.5.1 + frr defaults traditional + hostname Router + line vty + log file /etc/frr/frr.log informational + vtysh.conf: | + service integrated-vtysh-config +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: speaker + app.kubernetes.io/instance: metallb + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: metallb + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 + name: metallb-frr-startup + namespace: syn-metallb +--- apiVersion: apps/v1 kind: DaemonSet metadata: @@ -6,9 +111,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-speaker + namespace: syn-metallb spec: selector: matchLabels: @@ -45,7 +151,13 @@ spec: value: '7946' - name: METALLB_ML_SECRET_KEY_PATH value: /etc/ml_secret_key - image: quay.io/metallb/speaker:v0.13.9 + - name: FRR_CONFIG_FILE + value: /etc/frr_reloader/frr.conf + - name: FRR_RELOADER_PID_FILE + value: /etc/frr_reloader/reloader.pid + - name: METALLB_BGP_TYPE + value: frr + image: quay.io/metallb/speaker:v0.14.3 livenessProbe: failureThreshold: 3 httpGet: @@ -85,10 +197,118 @@ spec: volumeMounts: - mountPath: /etc/ml_secret_key name: memberlist + - mountPath: /etc/frr_reloader + name: reloader + - mountPath: /etc/metallb + name: metallb-excludel2 + - command: + - /bin/sh + - -c + - | + /sbin/tini -- /usr/lib/frr/docker-start & + attempts=0 + until [[ -f /etc/frr/frr.log || $attempts -eq 60 ]]; do + sleep 1 + attempts=$(( $attempts + 1 )) + done + tail -f /etc/frr/frr.log + env: + - name: TINI_SUBREAPER + value: 'true' + image: quay.io/frrouting/frr:8.5.2 + livenessProbe: + failureThreshold: 3 + httpGet: + path: /livez + port: 7473 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + name: frr + securityContext: + capabilities: + add: + - NET_ADMIN + - NET_RAW + - SYS_ADMIN + - NET_BIND_SERVICE + startupProbe: + failureThreshold: 30 + httpGet: + path: /livez + port: 7473 + periodSeconds: 5 + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - command: + - /etc/frr_reloader/frr-reloader.sh + image: quay.io/frrouting/frr:8.5.2 + name: reloader + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - mountPath: /etc/frr_reloader + name: reloader + - args: + - --metrics-port=7473 + command: + - /etc/frr_metrics/frr-metrics + image: quay.io/frrouting/frr:8.5.2 + name: frr-metrics + ports: + - containerPort: 7473 + name: monitoring + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - mountPath: /etc/frr_metrics + name: metrics hostNetwork: true + initContainers: + - command: + - /bin/sh + - -c + - cp -rLf /tmp/frr/* /etc/frr/ + image: quay.io/frrouting/frr:8.5.2 + name: cp-frr-files + securityContext: + runAsGroup: 101 + runAsUser: 100 + volumeMounts: + - mountPath: /tmp/frr + name: frr-startup + - mountPath: /etc/frr + name: frr-conf + - command: + - /bin/sh + - -c + - cp -f /frr-reloader.sh /etc/frr_reloader/ + image: quay.io/metallb/speaker:v0.14.3 + name: cp-reloader + volumeMounts: + - mountPath: /etc/frr_reloader + name: reloader + - command: + - /bin/sh + - -c + - cp -f /frr-metrics /etc/frr_metrics/ + image: quay.io/metallb/speaker:v0.14.3 + name: cp-metrics + volumeMounts: + - mountPath: /etc/frr_metrics + name: metrics nodeSelector: kubernetes.io/os: linux serviceAccountName: metallb-speaker + shareProcessNamespace: true terminationGracePeriodSeconds: 0 tolerations: - effect: NoSchedule @@ -102,5 +322,20 @@ spec: secret: defaultMode: 420 secretName: metallb-memberlist + - configMap: + defaultMode: 256 + name: metallb-excludel2 + name: metallb-excludel2 + - emptyDir: {} + name: frr-sockets + - configMap: + name: metallb-frr-startup + name: frr-startup + - emptyDir: {} + name: frr-conf + - emptyDir: {} + name: reloader + - emptyDir: {} + name: metrics updateStrategy: type: RollingUpdate diff --git a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml index 9caf69c..8529806 100644 --- a/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml +++ b/tests/golden/addresses/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml @@ -5,9 +5,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: webhook-server-cert + namespace: syn-metallb --- apiVersion: v1 kind: Service @@ -16,9 +17,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-webhook-service + namespace: syn-metallb spec: ports: - port: 443 @@ -35,30 +37,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-webhook-configuration webhooks: - - admissionReviewVersions: - - v1 - clientConfig: - service: - name: metallb-webhook-service - namespace: syn-metallb - path: /validate-metallb-io-v1beta1-addresspool - failurePolicy: Fail - name: addresspoolvalidationwebhook.metallb.io - rules: - - apiGroups: - - metallb.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - addresspools - sideEffects: None - admissionReviewVersions: - v1 clientConfig: diff --git a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml index 8c3698d..f0c69c4 100644 --- a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml +++ b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml @@ -2,222 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: addresspools.metallb.io -spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== - service: - name: metallb-webhook-service - namespace: syn-metallb - path: /convert - conversionReviewVersions: - - v1alpha1 - - v1beta1 - group: metallb.io - names: - kind: AddressPool - listKind: AddressPoolList - plural: addresspools - singular: addresspool - scope: Namespaced - versions: - - deprecated: true - deprecationWarning: metallb.io v1alpha1 AddressPool is deprecated - name: v1alpha1 - schema: - openAPIV3Schema: - description: AddressPool is the Schema for the addresspools API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AddressPoolSpec defines the desired state of AddressPool. - properties: - addresses: - description: A list of IP address ranges over which MetalLB has - authority. You can list multiple ranges in a single pool, they - will all share the same settings. Each range can be either a CIDR - prefix, or an explicit start-end range of IPs. - items: - type: string - type: array - autoAssign: - default: true - description: AutoAssign flag used to prevent MetallB from automatic - allocation for a pool. - type: boolean - bgpAdvertisements: - description: When an IP is allocated from this pool, how should - it be translated into BGP announcements? - items: - properties: - aggregationLength: - default: 32 - description: "The aggregation-length advertisement option\ - \ lets you \u201Croll up\u201D the /32s into a larger prefix." - format: int32 - minimum: 1 - type: integer - aggregationLengthV6: - default: 128 - description: Optional, defaults to 128 (i.e. no aggregation) - if not specified. - format: int32 - type: integer - communities: - description: BGP communities - items: - type: string - type: array - localPref: - description: BGP LOCAL_PREF attribute which is used by BGP - best path algorithm, Path with higher localpref is preferred - over one with lower localpref. - format: int32 - type: integer - type: object - type: array - protocol: - description: Protocol can be used to select how the announcement - is done. - enum: - - layer2 - - bgp - type: string - required: - - addresses - - protocol - type: object - status: - description: AddressPoolStatus defines the observed state of AddressPool. - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} - - deprecated: true - deprecationWarning: metallb.io v1beta1 AddressPool is deprecated, consider using - IPAddressPool - name: v1beta1 - schema: - openAPIV3Schema: - description: AddressPool represents a pool of IP addresses that can be allocated - to LoadBalancer services. AddressPool is deprecated and being replaced - by IPAddressPool. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AddressPoolSpec defines the desired state of AddressPool. - properties: - addresses: - description: A list of IP address ranges over which MetalLB has - authority. You can list multiple ranges in a single pool, they - will all share the same settings. Each range can be either a CIDR - prefix, or an explicit start-end range of IPs. - items: - type: string - type: array - autoAssign: - default: true - description: AutoAssign flag used to prevent MetallB from automatic - allocation for a pool. - type: boolean - bgpAdvertisements: - description: Drives how an IP allocated from this pool should translated - into BGP announcements. - items: - properties: - aggregationLength: - default: 32 - description: "The aggregation-length advertisement option\ - \ lets you \u201Croll up\u201D the /32s into a larger prefix." - format: int32 - minimum: 1 - type: integer - aggregationLengthV6: - default: 128 - description: Optional, defaults to 128 (i.e. no aggregation) - if not specified. - format: int32 - type: integer - communities: - description: BGP communities to be associated with the given - advertisement. - items: - type: string - type: array - localPref: - description: BGP LOCAL_PREF attribute which is used by BGP - best path algorithm, Path with higher localpref is preferred - over one with lower localpref. - format: int32 - type: integer - type: object - type: array - protocol: - description: Protocol can be used to select how the announcement - is done. - enum: - - layer2 - - bgp - type: string - required: - - addresses - - protocol - type: object - status: - description: AddressPoolStatus defines the observed state of AddressPool. - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bfdprofiles.metallb.io spec: @@ -229,7 +14,20 @@ spec: singular: bfdprofile scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.passiveMode + name: Passive Mode + type: boolean + - jsonPath: .spec.transmitInterval + name: Transmit Interval + type: integer + - jsonPath: .spec.receiveInterval + name: Receive Interval + type: integer + - jsonPath: .spec.detectMultiplier + name: Multiplier + type: integer + name: v1beta1 schema: openAPIV3Schema: description: BFDProfile represents the settings of the bfd session that @@ -307,18 +105,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bgpadvertisements.metallb.io spec: @@ -330,7 +122,21 @@ spec: singular: bgpadvertisement scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.ipAddressPools + name: IPAddressPools + type: string + - jsonPath: .spec.ipAddressPoolSelectors + name: IPAddressPool Selectors + type: string + - jsonPath: .spec.peers + name: Peers + type: string + - jsonPath: .spec.nodeSelectors + name: Node Selectors + priority: 10 + type: string + name: v1beta1 schema: openAPIV3Schema: description: BGPAdvertisement allows to advertise the IPs coming from the @@ -369,8 +175,9 @@ spec: type: integer communities: description: The BGP communities to be associated with the announcement. - Each item can be a community of the form 1234:1234 or the name - of an alias defined in the Community CRD. + Each item can be a standard community of the form 1234:1234, a + large community of the form large:1234:1234:1234 or the name of + an alias defined in the Community CRD. items: type: string type: array @@ -425,6 +232,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array ipAddressPools: description: The list of IPAddressPools to advertise via this advertisement, @@ -489,6 +297,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array peers: description: Peers limits the bgppeer to advertise the ips of the @@ -506,18 +315,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bgppeers.metallb.io spec: @@ -527,7 +330,7 @@ spec: clientConfig: caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== service: - name: metallb-webhook-service + name: webhook-service namespace: syn-metallb path: /convert conversionReviewVersions: @@ -541,7 +344,20 @@ spec: singular: bgppeer scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.peerAddress + name: Address + type: string + - jsonPath: .spec.peerASN + name: ASN + type: string + - jsonPath: .spec.bfdProfile + name: BFD Profile + type: string + - jsonPath: .spec.ebgpMultiHop + name: Multi Hops + type: string + name: v1beta1 schema: openAPIV3Schema: description: BGPPeer is the Schema for the peers API. @@ -645,7 +461,20 @@ spec: storage: false subresources: status: {} - - name: v1beta2 + - additionalPrinterColumns: + - jsonPath: .spec.peerAddress + name: Address + type: string + - jsonPath: .spec.peerASN + name: ASN + type: string + - jsonPath: .spec.bfdProfile + name: BFD Profile + type: string + - jsonPath: .spec.ebgpMultiHop + name: Multi Hops + type: string + name: v1beta2 schema: openAPIV3Schema: description: BGPPeer is the Schema for the peers API. @@ -737,6 +566,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array password: description: Authentication password for routers enforcing TCP MD5 @@ -749,14 +579,15 @@ spec: password is stored in the secret as the key "password". properties: name: - description: Name is unique within a namespace to reference + description: name is unique within a namespace to reference a secret resource. type: string namespace: - description: Namespace defines the space within which the secret + description: namespace defines the space within which the secret name must be unique. type: string type: object + x-kubernetes-map-type: atomic peerASN: description: AS number to expect from the remote end of the session. format: int32 @@ -795,18 +626,73 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 + creationTimestamp: null + name: communities.metallb.io +spec: + group: metallb.io + names: + kind: Community + listKind: CommunityList + plural: communities + singular: community + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: Community is a collection of aliases for communities. Users + can define named aliases to be used in the BGPPeer CRD. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint the + client submits requests to. Cannot be updated. In CamelCase. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CommunitySpec defines the desired state of Community. + properties: + communities: + items: + properties: + name: + description: The name of the alias for the community. + type: string + value: + description: The BGP community value corresponding to the + given name. Can be a standard community of the form 1234:1234 + or a large community of the form large:1234:1234:1234. + type: string + type: object + type: array + type: object + status: + description: CommunityStatus defines the observed state of Community. + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: ipaddresspools.metallb.io spec: @@ -818,7 +704,17 @@ spec: singular: ipaddresspool scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.autoAssign + name: Auto Assign + type: boolean + - jsonPath: .spec.avoidBuggyIPs + name: Avoid Buggy IPs + type: boolean + - jsonPath: .spec.addresses + name: Addresses + type: string + name: v1beta1 schema: openAPIV3Schema: description: IPAddressPool represents a pool of IP addresses that can be @@ -920,6 +816,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array namespaces: description: Namespaces list of namespace(s) on which ip pool @@ -982,6 +879,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array type: object required: @@ -997,18 +895,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: l2advertisements.metallb.io spec: @@ -1020,7 +912,21 @@ spec: singular: l2advertisement scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.ipAddressPools + name: IPAddressPools + type: string + - jsonPath: .spec.ipAddressPoolSelectors + name: IPAddressPool Selectors + type: string + - jsonPath: .spec.interfaces + name: Interfaces + type: string + - jsonPath: .spec.nodeSelectors + name: Node Selectors + priority: 10 + type: string + name: v1beta1 schema: openAPIV3Schema: description: L2Advertisement allows to advertise the LoadBalancer IPs provided @@ -1100,6 +1006,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array ipAddressPools: description: The list of IPAddressPools to advertise via this advertisement, @@ -1158,6 +1065,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array type: object status: @@ -1168,75 +1076,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: communities.metallb.io -spec: - group: metallb.io - names: - kind: Community - listKind: CommunityList - plural: communities - singular: community - scope: Namespaced - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: Community is a collection of aliases for communities. Users - can define named aliases to be used in the BGPPeer CRD. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: CommunitySpec defines the desired state of Community. - properties: - communities: - items: - properties: - name: - description: The name of the alias for the community. - type: string - value: - description: The BGP community value corresponding to the - given name. - type: string - type: object - type: array - type: object - status: - description: CommunityStatus defines the observed state of Community. - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] diff --git a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml index 1391e13..ad2eee7 100644 --- a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml +++ b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml @@ -6,9 +6,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb spec: selector: matchLabels: @@ -29,12 +30,15 @@ spec: - --port=7472 - --log-level=info - --cert-service-name=metallb-webhook-service + - --tls-min-version=VersionTLS12 env: - name: METALLB_ML_SECRET_NAME value: metallb-memberlist - name: METALLB_DEPLOYMENT value: metallb-controller - image: quay.io/metallb/controller:v0.13.9 + - name: METALLB_BGP_TYPE + value: frr + image: quay.io/metallb/controller:v0.14.3 livenessProbe: failureThreshold: 3 httpGet: diff --git a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml new file mode 100644 index 0000000..ec12dd0 --- /dev/null +++ b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +data: + excludel2.yaml: | + announcedInterfacesToExclude: + - ^docker.* + - ^cbr.* + - ^dummy.* + - ^virbr.* + - ^lxcbr.* + - ^veth.* + - ^lo$ + - ^cali.* + - ^tunl.* + - ^flannel.* + - ^kube-ipvs.* + - ^cni.* + - ^nodelocaldns.* +kind: ConfigMap +metadata: + name: metallb-excludel2 + namespace: syn-metallb diff --git a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml index cc119b1..d7e2b92 100644 --- a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml +++ b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml @@ -5,8 +5,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:controller rules: - apiGroups: @@ -18,6 +18,12 @@ rules: - get - list - watch + - apiGroups: + - '' + resources: + - nodes + verbs: + - list - apiGroups: - '' resources: @@ -89,8 +95,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:speaker rules: - apiGroups: @@ -127,8 +133,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:controller roleRef: apiGroup: rbac.authorization.k8s.io @@ -146,8 +152,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:speaker roleRef: apiGroup: rbac.authorization.k8s.io @@ -165,9 +171,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-pod-lister + namespace: syn-metallb rules: - apiGroups: - '' @@ -183,6 +190,14 @@ rules: - get - list - watch + - apiGroups: + - '' + resources: + - configmaps + verbs: + - get + - list + - watch - apiGroups: - metallb.io resources: @@ -247,9 +262,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb rules: - apiGroups: - '' @@ -349,9 +365,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-pod-lister + namespace: syn-metallb roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -367,9 +384,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb roleRef: apiGroup: rbac.authorization.k8s.io kind: Role diff --git a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml index fc4d8c3..6127db7 100644 --- a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml +++ b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml @@ -6,9 +6,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb --- apiVersion: v1 kind: ServiceAccount @@ -18,6 +19,7 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-speaker + namespace: syn-metallb diff --git a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml index bb77aed..5551093 100644 --- a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml +++ b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml @@ -1,3 +1,108 @@ +apiVersion: v1 +data: + daemons: | + # This file tells the frr package which daemons to start. + # + # Sample configurations for these daemons can be found in + # /usr/share/doc/frr/examples/. + # + # ATTENTION: + # + # When activating a daemon for the first time, a config file, even if it is + # empty, has to be present *and* be owned by the user and group "frr", else + # the daemon will not be started by /etc/init.d/frr. The permissions should + # be u=rw,g=r,o=. + # When using "vtysh" such a config file is also needed. It should be owned by + # group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too. + # + # The watchfrr and zebra daemons are always started. + # + bgpd=yes + ospfd=no + ospf6d=no + ripd=no + ripngd=no + isisd=no + pimd=no + ldpd=no + nhrpd=no + eigrpd=no + babeld=no + sharpd=no + pbrd=no + bfdd=yes + fabricd=no + vrrpd=no + + # + # If this option is set the /etc/init.d/frr script automatically loads + # the config via "vtysh -b" when the servers are started. + # Check /etc/pam.d/frr if you intend to use "vtysh"! + # + vtysh_enable=yes + zebra_options=" -A 127.0.0.1 -s 90000000" + bgpd_options=" -A 127.0.0.1 -p 0" + ospfd_options=" -A 127.0.0.1" + ospf6d_options=" -A ::1" + ripd_options=" -A 127.0.0.1" + ripngd_options=" -A ::1" + isisd_options=" -A 127.0.0.1" + pimd_options=" -A 127.0.0.1" + ldpd_options=" -A 127.0.0.1" + nhrpd_options=" -A 127.0.0.1" + eigrpd_options=" -A 127.0.0.1" + babeld_options=" -A 127.0.0.1" + sharpd_options=" -A 127.0.0.1" + pbrd_options=" -A 127.0.0.1" + staticd_options="-A 127.0.0.1" + bfdd_options=" -A 127.0.0.1" + fabricd_options="-A 127.0.0.1" + vrrpd_options=" -A 127.0.0.1" + + # configuration profile + # + #frr_profile="traditional" + #frr_profile="datacenter" + + # + # This is the maximum number of FD's that will be available. + # Upon startup this is read by the control files and ulimit + # is called. Uncomment and use a reasonable value for your + # setup if you are expecting a large number of peers in + # say BGP. + #MAX_FDS=1024 + + # The list of daemons to watch is automatically generated by the init script. + #watchfrr_options="" + + # for debugging purposes, you can specify a "wrap" command to start instead + # of starting the daemon directly, e.g. to use valgrind on ospfd: + # ospfd_wrap="/usr/bin/valgrind" + # or you can use "all_wrap" for all daemons, e.g. to use perf record: + # all_wrap="/usr/bin/perf record --call-graph -" + # the normal daemon command is added to this at the end. + frr.conf: | + ! This file gets overriden the first time the speaker renders a config. + ! So anything configured here is only temporary. + frr version 7.5.1 + frr defaults traditional + hostname Router + line vty + log file /etc/frr/frr.log informational + vtysh.conf: | + service integrated-vtysh-config +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: speaker + app.kubernetes.io/instance: metallb + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: metallb + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 + name: metallb-frr-startup + namespace: syn-metallb +--- apiVersion: apps/v1 kind: DaemonSet metadata: @@ -6,9 +111,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-speaker + namespace: syn-metallb spec: selector: matchLabels: @@ -45,7 +151,13 @@ spec: value: '7946' - name: METALLB_ML_SECRET_KEY_PATH value: /etc/ml_secret_key - image: quay.io/metallb/speaker:v0.13.9 + - name: FRR_CONFIG_FILE + value: /etc/frr_reloader/frr.conf + - name: FRR_RELOADER_PID_FILE + value: /etc/frr_reloader/reloader.pid + - name: METALLB_BGP_TYPE + value: frr + image: quay.io/metallb/speaker:v0.14.3 livenessProbe: failureThreshold: 3 httpGet: @@ -85,10 +197,118 @@ spec: volumeMounts: - mountPath: /etc/ml_secret_key name: memberlist + - mountPath: /etc/frr_reloader + name: reloader + - mountPath: /etc/metallb + name: metallb-excludel2 + - command: + - /bin/sh + - -c + - | + /sbin/tini -- /usr/lib/frr/docker-start & + attempts=0 + until [[ -f /etc/frr/frr.log || $attempts -eq 60 ]]; do + sleep 1 + attempts=$(( $attempts + 1 )) + done + tail -f /etc/frr/frr.log + env: + - name: TINI_SUBREAPER + value: 'true' + image: quay.io/frrouting/frr:8.5.2 + livenessProbe: + failureThreshold: 3 + httpGet: + path: /livez + port: 7473 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + name: frr + securityContext: + capabilities: + add: + - NET_ADMIN + - NET_RAW + - SYS_ADMIN + - NET_BIND_SERVICE + startupProbe: + failureThreshold: 30 + httpGet: + path: /livez + port: 7473 + periodSeconds: 5 + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - command: + - /etc/frr_reloader/frr-reloader.sh + image: quay.io/frrouting/frr:8.5.2 + name: reloader + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - mountPath: /etc/frr_reloader + name: reloader + - args: + - --metrics-port=7473 + command: + - /etc/frr_metrics/frr-metrics + image: quay.io/frrouting/frr:8.5.2 + name: frr-metrics + ports: + - containerPort: 7473 + name: monitoring + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - mountPath: /etc/frr_metrics + name: metrics hostNetwork: true + initContainers: + - command: + - /bin/sh + - -c + - cp -rLf /tmp/frr/* /etc/frr/ + image: quay.io/frrouting/frr:8.5.2 + name: cp-frr-files + securityContext: + runAsGroup: 101 + runAsUser: 100 + volumeMounts: + - mountPath: /tmp/frr + name: frr-startup + - mountPath: /etc/frr + name: frr-conf + - command: + - /bin/sh + - -c + - cp -f /frr-reloader.sh /etc/frr_reloader/ + image: quay.io/metallb/speaker:v0.14.3 + name: cp-reloader + volumeMounts: + - mountPath: /etc/frr_reloader + name: reloader + - command: + - /bin/sh + - -c + - cp -f /frr-metrics /etc/frr_metrics/ + image: quay.io/metallb/speaker:v0.14.3 + name: cp-metrics + volumeMounts: + - mountPath: /etc/frr_metrics + name: metrics nodeSelector: kubernetes.io/os: linux serviceAccountName: metallb-speaker + shareProcessNamespace: true terminationGracePeriodSeconds: 0 tolerations: - effect: NoSchedule @@ -102,5 +322,20 @@ spec: secret: defaultMode: 420 secretName: metallb-memberlist + - configMap: + defaultMode: 256 + name: metallb-excludel2 + name: metallb-excludel2 + - emptyDir: {} + name: frr-sockets + - configMap: + name: metallb-frr-startup + name: frr-startup + - emptyDir: {} + name: frr-conf + - emptyDir: {} + name: reloader + - emptyDir: {} + name: metrics updateStrategy: type: RollingUpdate diff --git a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml index 9caf69c..8529806 100644 --- a/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml +++ b/tests/golden/defaults/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml @@ -5,9 +5,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: webhook-server-cert + namespace: syn-metallb --- apiVersion: v1 kind: Service @@ -16,9 +17,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-webhook-service + namespace: syn-metallb spec: ports: - port: 443 @@ -35,30 +37,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-webhook-configuration webhooks: - - admissionReviewVersions: - - v1 - clientConfig: - service: - name: metallb-webhook-service - namespace: syn-metallb - path: /validate-metallb-io-v1beta1-addresspool - failurePolicy: Fail - name: addresspoolvalidationwebhook.metallb.io - rules: - - apiGroups: - - metallb.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - addresspools - sideEffects: None - admissionReviewVersions: - v1 clientConfig: diff --git a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml index 8c3698d..f0c69c4 100644 --- a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml +++ b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/charts/crds/templates/crds.yaml @@ -2,222 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: addresspools.metallb.io -spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== - service: - name: metallb-webhook-service - namespace: syn-metallb - path: /convert - conversionReviewVersions: - - v1alpha1 - - v1beta1 - group: metallb.io - names: - kind: AddressPool - listKind: AddressPoolList - plural: addresspools - singular: addresspool - scope: Namespaced - versions: - - deprecated: true - deprecationWarning: metallb.io v1alpha1 AddressPool is deprecated - name: v1alpha1 - schema: - openAPIV3Schema: - description: AddressPool is the Schema for the addresspools API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AddressPoolSpec defines the desired state of AddressPool. - properties: - addresses: - description: A list of IP address ranges over which MetalLB has - authority. You can list multiple ranges in a single pool, they - will all share the same settings. Each range can be either a CIDR - prefix, or an explicit start-end range of IPs. - items: - type: string - type: array - autoAssign: - default: true - description: AutoAssign flag used to prevent MetallB from automatic - allocation for a pool. - type: boolean - bgpAdvertisements: - description: When an IP is allocated from this pool, how should - it be translated into BGP announcements? - items: - properties: - aggregationLength: - default: 32 - description: "The aggregation-length advertisement option\ - \ lets you \u201Croll up\u201D the /32s into a larger prefix." - format: int32 - minimum: 1 - type: integer - aggregationLengthV6: - default: 128 - description: Optional, defaults to 128 (i.e. no aggregation) - if not specified. - format: int32 - type: integer - communities: - description: BGP communities - items: - type: string - type: array - localPref: - description: BGP LOCAL_PREF attribute which is used by BGP - best path algorithm, Path with higher localpref is preferred - over one with lower localpref. - format: int32 - type: integer - type: object - type: array - protocol: - description: Protocol can be used to select how the announcement - is done. - enum: - - layer2 - - bgp - type: string - required: - - addresses - - protocol - type: object - status: - description: AddressPoolStatus defines the observed state of AddressPool. - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} - - deprecated: true - deprecationWarning: metallb.io v1beta1 AddressPool is deprecated, consider using - IPAddressPool - name: v1beta1 - schema: - openAPIV3Schema: - description: AddressPool represents a pool of IP addresses that can be allocated - to LoadBalancer services. AddressPool is deprecated and being replaced - by IPAddressPool. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AddressPoolSpec defines the desired state of AddressPool. - properties: - addresses: - description: A list of IP address ranges over which MetalLB has - authority. You can list multiple ranges in a single pool, they - will all share the same settings. Each range can be either a CIDR - prefix, or an explicit start-end range of IPs. - items: - type: string - type: array - autoAssign: - default: true - description: AutoAssign flag used to prevent MetallB from automatic - allocation for a pool. - type: boolean - bgpAdvertisements: - description: Drives how an IP allocated from this pool should translated - into BGP announcements. - items: - properties: - aggregationLength: - default: 32 - description: "The aggregation-length advertisement option\ - \ lets you \u201Croll up\u201D the /32s into a larger prefix." - format: int32 - minimum: 1 - type: integer - aggregationLengthV6: - default: 128 - description: Optional, defaults to 128 (i.e. no aggregation) - if not specified. - format: int32 - type: integer - communities: - description: BGP communities to be associated with the given - advertisement. - items: - type: string - type: array - localPref: - description: BGP LOCAL_PREF attribute which is used by BGP - best path algorithm, Path with higher localpref is preferred - over one with lower localpref. - format: int32 - type: integer - type: object - type: array - protocol: - description: Protocol can be used to select how the announcement - is done. - enum: - - layer2 - - bgp - type: string - required: - - addresses - - protocol - type: object - status: - description: AddressPoolStatus defines the observed state of AddressPool. - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bfdprofiles.metallb.io spec: @@ -229,7 +14,20 @@ spec: singular: bfdprofile scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.passiveMode + name: Passive Mode + type: boolean + - jsonPath: .spec.transmitInterval + name: Transmit Interval + type: integer + - jsonPath: .spec.receiveInterval + name: Receive Interval + type: integer + - jsonPath: .spec.detectMultiplier + name: Multiplier + type: integer + name: v1beta1 schema: openAPIV3Schema: description: BFDProfile represents the settings of the bfd session that @@ -307,18 +105,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bgpadvertisements.metallb.io spec: @@ -330,7 +122,21 @@ spec: singular: bgpadvertisement scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.ipAddressPools + name: IPAddressPools + type: string + - jsonPath: .spec.ipAddressPoolSelectors + name: IPAddressPool Selectors + type: string + - jsonPath: .spec.peers + name: Peers + type: string + - jsonPath: .spec.nodeSelectors + name: Node Selectors + priority: 10 + type: string + name: v1beta1 schema: openAPIV3Schema: description: BGPAdvertisement allows to advertise the IPs coming from the @@ -369,8 +175,9 @@ spec: type: integer communities: description: The BGP communities to be associated with the announcement. - Each item can be a community of the form 1234:1234 or the name - of an alias defined in the Community CRD. + Each item can be a standard community of the form 1234:1234, a + large community of the form large:1234:1234:1234 or the name of + an alias defined in the Community CRD. items: type: string type: array @@ -425,6 +232,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array ipAddressPools: description: The list of IPAddressPools to advertise via this advertisement, @@ -489,6 +297,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array peers: description: Peers limits the bgppeer to advertise the ips of the @@ -506,18 +315,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: bgppeers.metallb.io spec: @@ -527,7 +330,7 @@ spec: clientConfig: caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== service: - name: metallb-webhook-service + name: webhook-service namespace: syn-metallb path: /convert conversionReviewVersions: @@ -541,7 +344,20 @@ spec: singular: bgppeer scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.peerAddress + name: Address + type: string + - jsonPath: .spec.peerASN + name: ASN + type: string + - jsonPath: .spec.bfdProfile + name: BFD Profile + type: string + - jsonPath: .spec.ebgpMultiHop + name: Multi Hops + type: string + name: v1beta1 schema: openAPIV3Schema: description: BGPPeer is the Schema for the peers API. @@ -645,7 +461,20 @@ spec: storage: false subresources: status: {} - - name: v1beta2 + - additionalPrinterColumns: + - jsonPath: .spec.peerAddress + name: Address + type: string + - jsonPath: .spec.peerASN + name: ASN + type: string + - jsonPath: .spec.bfdProfile + name: BFD Profile + type: string + - jsonPath: .spec.ebgpMultiHop + name: Multi Hops + type: string + name: v1beta2 schema: openAPIV3Schema: description: BGPPeer is the Schema for the peers API. @@ -737,6 +566,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array password: description: Authentication password for routers enforcing TCP MD5 @@ -749,14 +579,15 @@ spec: password is stored in the secret as the key "password". properties: name: - description: Name is unique within a namespace to reference + description: name is unique within a namespace to reference a secret resource. type: string namespace: - description: Namespace defines the space within which the secret + description: namespace defines the space within which the secret name must be unique. type: string type: object + x-kubernetes-map-type: atomic peerASN: description: AS number to expect from the remote end of the session. format: int32 @@ -795,18 +626,73 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 + creationTimestamp: null + name: communities.metallb.io +spec: + group: metallb.io + names: + kind: Community + listKind: CommunityList + plural: communities + singular: community + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: Community is a collection of aliases for communities. Users + can define named aliases to be used in the BGPPeer CRD. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint the + client submits requests to. Cannot be updated. In CamelCase. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CommunitySpec defines the desired state of Community. + properties: + communities: + items: + properties: + name: + description: The name of the alias for the community. + type: string + value: + description: The BGP community value corresponding to the + given name. Can be a standard community of the form 1234:1234 + or a large community of the form large:1234:1234:1234. + type: string + type: object + type: array + type: object + status: + description: CommunityStatus defines the observed state of Community. + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: ipaddresspools.metallb.io spec: @@ -818,7 +704,17 @@ spec: singular: ipaddresspool scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.autoAssign + name: Auto Assign + type: boolean + - jsonPath: .spec.avoidBuggyIPs + name: Avoid Buggy IPs + type: boolean + - jsonPath: .spec.addresses + name: Addresses + type: string + name: v1beta1 schema: openAPIV3Schema: description: IPAddressPool represents a pool of IP addresses that can be @@ -920,6 +816,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array namespaces: description: Namespaces list of namespace(s) on which ip pool @@ -982,6 +879,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array type: object required: @@ -997,18 +895,12 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: l2advertisements.metallb.io spec: @@ -1020,7 +912,21 @@ spec: singular: l2advertisement scope: Namespaced versions: - - name: v1beta1 + - additionalPrinterColumns: + - jsonPath: .spec.ipAddressPools + name: IPAddressPools + type: string + - jsonPath: .spec.ipAddressPoolSelectors + name: IPAddressPool Selectors + type: string + - jsonPath: .spec.interfaces + name: Interfaces + type: string + - jsonPath: .spec.nodeSelectors + name: Node Selectors + priority: 10 + type: string + name: v1beta1 schema: openAPIV3Schema: description: L2Advertisement allows to advertise the LoadBalancer IPs provided @@ -1100,6 +1006,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array ipAddressPools: description: The list of IPAddressPools to advertise via this advertisement, @@ -1158,6 +1065,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array type: object status: @@ -1168,75 +1076,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: communities.metallb.io -spec: - group: metallb.io - names: - kind: Community - listKind: CommunityList - plural: communities - singular: community - scope: Namespaced - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: Community is a collection of aliases for communities. Users - can define named aliases to be used in the BGPPeer CRD. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: CommunitySpec defines the desired state of Community. - properties: - communities: - items: - properties: - name: - description: The name of the alias for the community. - type: string - value: - description: The BGP community value corresponding to the - given name. - type: string - type: object - type: array - type: object - status: - description: CommunityStatus defines the observed state of Community. - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: '' - plural: '' - conditions: [] - storedVersions: [] diff --git a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml index 1391e13..ad2eee7 100644 --- a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml +++ b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/controller.yaml @@ -6,9 +6,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb spec: selector: matchLabels: @@ -29,12 +30,15 @@ spec: - --port=7472 - --log-level=info - --cert-service-name=metallb-webhook-service + - --tls-min-version=VersionTLS12 env: - name: METALLB_ML_SECRET_NAME value: metallb-memberlist - name: METALLB_DEPLOYMENT value: metallb-controller - image: quay.io/metallb/controller:v0.13.9 + - name: METALLB_BGP_TYPE + value: frr + image: quay.io/metallb/controller:v0.14.3 livenessProbe: failureThreshold: 3 httpGet: diff --git a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml new file mode 100644 index 0000000..ec12dd0 --- /dev/null +++ b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/exclude-l2-config.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +data: + excludel2.yaml: | + announcedInterfacesToExclude: + - ^docker.* + - ^cbr.* + - ^dummy.* + - ^virbr.* + - ^lxcbr.* + - ^veth.* + - ^lo$ + - ^cali.* + - ^tunl.* + - ^flannel.* + - ^kube-ipvs.* + - ^cni.* + - ^nodelocaldns.* +kind: ConfigMap +metadata: + name: metallb-excludel2 + namespace: syn-metallb diff --git a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml index cc119b1..d7e2b92 100644 --- a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml +++ b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/rbac.yaml @@ -5,8 +5,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:controller rules: - apiGroups: @@ -18,6 +18,12 @@ rules: - get - list - watch + - apiGroups: + - '' + resources: + - nodes + verbs: + - list - apiGroups: - '' resources: @@ -89,8 +95,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:speaker rules: - apiGroups: @@ -127,8 +133,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:controller roleRef: apiGroup: rbac.authorization.k8s.io @@ -146,8 +152,8 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb:speaker roleRef: apiGroup: rbac.authorization.k8s.io @@ -165,9 +171,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-pod-lister + namespace: syn-metallb rules: - apiGroups: - '' @@ -183,6 +190,14 @@ rules: - get - list - watch + - apiGroups: + - '' + resources: + - configmaps + verbs: + - get + - list + - watch - apiGroups: - metallb.io resources: @@ -247,9 +262,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb rules: - apiGroups: - '' @@ -349,9 +365,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-pod-lister + namespace: syn-metallb roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -367,9 +384,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb roleRef: apiGroup: rbac.authorization.k8s.io kind: Role diff --git a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml index fc4d8c3..6127db7 100644 --- a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml +++ b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/service-accounts.yaml @@ -6,9 +6,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-controller + namespace: syn-metallb --- apiVersion: v1 kind: ServiceAccount @@ -18,6 +19,7 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-speaker + namespace: syn-metallb diff --git a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml index bb77aed..5551093 100644 --- a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml +++ b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/speaker.yaml @@ -1,3 +1,108 @@ +apiVersion: v1 +data: + daemons: | + # This file tells the frr package which daemons to start. + # + # Sample configurations for these daemons can be found in + # /usr/share/doc/frr/examples/. + # + # ATTENTION: + # + # When activating a daemon for the first time, a config file, even if it is + # empty, has to be present *and* be owned by the user and group "frr", else + # the daemon will not be started by /etc/init.d/frr. The permissions should + # be u=rw,g=r,o=. + # When using "vtysh" such a config file is also needed. It should be owned by + # group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too. + # + # The watchfrr and zebra daemons are always started. + # + bgpd=yes + ospfd=no + ospf6d=no + ripd=no + ripngd=no + isisd=no + pimd=no + ldpd=no + nhrpd=no + eigrpd=no + babeld=no + sharpd=no + pbrd=no + bfdd=yes + fabricd=no + vrrpd=no + + # + # If this option is set the /etc/init.d/frr script automatically loads + # the config via "vtysh -b" when the servers are started. + # Check /etc/pam.d/frr if you intend to use "vtysh"! + # + vtysh_enable=yes + zebra_options=" -A 127.0.0.1 -s 90000000" + bgpd_options=" -A 127.0.0.1 -p 0" + ospfd_options=" -A 127.0.0.1" + ospf6d_options=" -A ::1" + ripd_options=" -A 127.0.0.1" + ripngd_options=" -A ::1" + isisd_options=" -A 127.0.0.1" + pimd_options=" -A 127.0.0.1" + ldpd_options=" -A 127.0.0.1" + nhrpd_options=" -A 127.0.0.1" + eigrpd_options=" -A 127.0.0.1" + babeld_options=" -A 127.0.0.1" + sharpd_options=" -A 127.0.0.1" + pbrd_options=" -A 127.0.0.1" + staticd_options="-A 127.0.0.1" + bfdd_options=" -A 127.0.0.1" + fabricd_options="-A 127.0.0.1" + vrrpd_options=" -A 127.0.0.1" + + # configuration profile + # + #frr_profile="traditional" + #frr_profile="datacenter" + + # + # This is the maximum number of FD's that will be available. + # Upon startup this is read by the control files and ulimit + # is called. Uncomment and use a reasonable value for your + # setup if you are expecting a large number of peers in + # say BGP. + #MAX_FDS=1024 + + # The list of daemons to watch is automatically generated by the init script. + #watchfrr_options="" + + # for debugging purposes, you can specify a "wrap" command to start instead + # of starting the daemon directly, e.g. to use valgrind on ospfd: + # ospfd_wrap="/usr/bin/valgrind" + # or you can use "all_wrap" for all daemons, e.g. to use perf record: + # all_wrap="/usr/bin/perf record --call-graph -" + # the normal daemon command is added to this at the end. + frr.conf: | + ! This file gets overriden the first time the speaker renders a config. + ! So anything configured here is only temporary. + frr version 7.5.1 + frr defaults traditional + hostname Router + line vty + log file /etc/frr/frr.log informational + vtysh.conf: | + service integrated-vtysh-config +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: speaker + app.kubernetes.io/instance: metallb + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: metallb + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 + name: metallb-frr-startup + namespace: syn-metallb +--- apiVersion: apps/v1 kind: DaemonSet metadata: @@ -6,9 +111,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-speaker + namespace: syn-metallb spec: selector: matchLabels: @@ -45,7 +151,13 @@ spec: value: '7946' - name: METALLB_ML_SECRET_KEY_PATH value: /etc/ml_secret_key - image: quay.io/metallb/speaker:v0.13.9 + - name: FRR_CONFIG_FILE + value: /etc/frr_reloader/frr.conf + - name: FRR_RELOADER_PID_FILE + value: /etc/frr_reloader/reloader.pid + - name: METALLB_BGP_TYPE + value: frr + image: quay.io/metallb/speaker:v0.14.3 livenessProbe: failureThreshold: 3 httpGet: @@ -85,10 +197,118 @@ spec: volumeMounts: - mountPath: /etc/ml_secret_key name: memberlist + - mountPath: /etc/frr_reloader + name: reloader + - mountPath: /etc/metallb + name: metallb-excludel2 + - command: + - /bin/sh + - -c + - | + /sbin/tini -- /usr/lib/frr/docker-start & + attempts=0 + until [[ -f /etc/frr/frr.log || $attempts -eq 60 ]]; do + sleep 1 + attempts=$(( $attempts + 1 )) + done + tail -f /etc/frr/frr.log + env: + - name: TINI_SUBREAPER + value: 'true' + image: quay.io/frrouting/frr:8.5.2 + livenessProbe: + failureThreshold: 3 + httpGet: + path: /livez + port: 7473 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + name: frr + securityContext: + capabilities: + add: + - NET_ADMIN + - NET_RAW + - SYS_ADMIN + - NET_BIND_SERVICE + startupProbe: + failureThreshold: 30 + httpGet: + path: /livez + port: 7473 + periodSeconds: 5 + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - command: + - /etc/frr_reloader/frr-reloader.sh + image: quay.io/frrouting/frr:8.5.2 + name: reloader + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - mountPath: /etc/frr_reloader + name: reloader + - args: + - --metrics-port=7473 + command: + - /etc/frr_metrics/frr-metrics + image: quay.io/frrouting/frr:8.5.2 + name: frr-metrics + ports: + - containerPort: 7473 + name: monitoring + volumeMounts: + - mountPath: /var/run/frr + name: frr-sockets + - mountPath: /etc/frr + name: frr-conf + - mountPath: /etc/frr_metrics + name: metrics hostNetwork: true + initContainers: + - command: + - /bin/sh + - -c + - cp -rLf /tmp/frr/* /etc/frr/ + image: quay.io/frrouting/frr:8.5.2 + name: cp-frr-files + securityContext: + runAsGroup: 101 + runAsUser: 100 + volumeMounts: + - mountPath: /tmp/frr + name: frr-startup + - mountPath: /etc/frr + name: frr-conf + - command: + - /bin/sh + - -c + - cp -f /frr-reloader.sh /etc/frr_reloader/ + image: quay.io/metallb/speaker:v0.14.3 + name: cp-reloader + volumeMounts: + - mountPath: /etc/frr_reloader + name: reloader + - command: + - /bin/sh + - -c + - cp -f /frr-metrics /etc/frr_metrics/ + image: quay.io/metallb/speaker:v0.14.3 + name: cp-metrics + volumeMounts: + - mountPath: /etc/frr_metrics + name: metrics nodeSelector: kubernetes.io/os: linux serviceAccountName: metallb-speaker + shareProcessNamespace: true terminationGracePeriodSeconds: 0 tolerations: - effect: NoSchedule @@ -102,5 +322,20 @@ spec: secret: defaultMode: 420 secretName: metallb-memberlist + - configMap: + defaultMode: 256 + name: metallb-excludel2 + name: metallb-excludel2 + - emptyDir: {} + name: frr-sockets + - configMap: + name: metallb-frr-startup + name: frr-startup + - emptyDir: {} + name: frr-conf + - emptyDir: {} + name: reloader + - emptyDir: {} + name: metrics updateStrategy: type: RollingUpdate diff --git a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml index 9caf69c..8529806 100644 --- a/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml +++ b/tests/golden/legacy/metallb/metallb/10_metallb_helmchart/metallb/templates/webhooks.yaml @@ -5,9 +5,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: webhook-server-cert + namespace: syn-metallb --- apiVersion: v1 kind: Service @@ -16,9 +17,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-webhook-service + namespace: syn-metallb spec: ports: - port: 443 @@ -35,30 +37,10 @@ metadata: app.kubernetes.io/instance: metallb app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: metallb - app.kubernetes.io/version: v0.13.9 - helm.sh/chart: metallb-0.13.9 + app.kubernetes.io/version: v0.14.3 + helm.sh/chart: metallb-0.14.3 name: metallb-webhook-configuration webhooks: - - admissionReviewVersions: - - v1 - clientConfig: - service: - name: metallb-webhook-service - namespace: syn-metallb - path: /validate-metallb-io-v1beta1-addresspool - failurePolicy: Fail - name: addresspoolvalidationwebhook.metallb.io - rules: - - apiGroups: - - metallb.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - addresspools - sideEffects: None - admissionReviewVersions: - v1 clientConfig: