From 16d397f599eeb8928fc0dc979e9d72659c07b89f Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Thu, 22 Oct 2020 14:42:58 +0530 Subject: [PATCH 01/23] Added Operator and Helm chart for release --- operator/build/Dockerfile | 2 +- .../crds/cis.f5.com_v1_f5bigipctlr_cr.yaml | 2 +- operator/helm-charts/f5-bigip-ctlr/Chart.yaml | 2 +- .../templates/f5-bigip-ctlr-clusterrole.yaml | 1 + ...5-bigip-ctlr-customresourcedefinitions.yml | 100 ++++++- .../helm-charts/f5-bigip-ctlr/values.yaml | 68 ++++- operator/manifest/f5-bundle.zip | Bin 168592 -> 84112 bytes ...operator.v1.3.0.clusterserviceversion.yaml | 252 ++++++++++++++++++ .../1.3.0/f5bigipctlrs.cis.f5.com.crd.yaml | 19 ++ .../f5-bigip-ctlr-operator.package.yaml | 2 +- 10 files changed, 432 insertions(+), 16 deletions(-) create mode 100644 operator/manifest/f5-bundle/1.3.0/f5-bigip-ctlr-operator.v1.3.0.clusterserviceversion.yaml create mode 100644 operator/manifest/f5-bundle/1.3.0/f5bigipctlrs.cis.f5.com.crd.yaml diff --git a/operator/build/Dockerfile b/operator/build/Dockerfile index 8836f7773..d9beb9e64 100644 --- a/operator/build/Dockerfile +++ b/operator/build/Dockerfile @@ -3,7 +3,7 @@ FROM quay.io/operator-framework/helm-operator:latest ### Required OpenShift Labels LABEL name="F5 BIG-IP Controller Operator" \ vendor="F5 Networks Inc" \ - version="v1.2.0" \ + version="v1.3.0" \ release="1" \ summary="F5 BIG-IP Controller Operator" \ description="This operator will deploy F5 BIG-IP Controller for Kubernetes and OpenShift into the cluster." diff --git a/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml b/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml index 78d229714..92f327c0d 100644 --- a/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml +++ b/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml @@ -3,7 +3,7 @@ kind: F5BigIpCtlr metadata: name: f5-server spec: - version: 2.1.0 + version: 2.2.0 args: log_as3_response: true manage_routes: true diff --git a/operator/helm-charts/f5-bigip-ctlr/Chart.yaml b/operator/helm-charts/f5-bigip-ctlr/Chart.yaml index 6ae41bff7..cb00ac4e5 100644 --- a/operator/helm-charts/f5-bigip-ctlr/Chart.yaml +++ b/operator/helm-charts/f5-bigip-ctlr/Chart.yaml @@ -1,4 +1,4 @@ apiVersion: v1 description: Deploy the F5 Networks BIG-IP Controller for Kubernetes and OpenShift (k8s-bigip-ctlr). name: f5-bigip-ctlr -version: 0.0.8 +version: 0.0.9 diff --git a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml index bd44d3249..3e7ab9edb 100644 --- a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml +++ b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml @@ -54,4 +54,5 @@ rules: resources: - virtualservers - tlsprofiles + - transportservers {{- end -}} diff --git a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml index 3b67d1d3c..2f9cc6316 100644 --- a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml +++ b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml @@ -28,8 +28,16 @@ spec: pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' httpTraffic: type: string + snat: + type: string tlsProfileName: type: string + rewriteAppRoot: + type: string + pattern: '^\/([A-z0-9-_+]+\/)*([A-z0-9]+\/?)*$' + waf: + type: string + pattern: '^\/([A-z0-9-_+]+\/)*([A-z0-9]+\/?)*$' pools: type: array items: @@ -48,6 +56,9 @@ spec: type: integer minimum: 1 maximum: 65535 + rewrite: + type: string + pattern: '^\/([A-z0-9-_+]+\/)*([A-z0-9]+\/?)*$' monitor: type: object properties: @@ -62,9 +73,24 @@ spec: type: integer timeout: type: integer + required: + - type + - send + - interval virtualServerAddress: type: string pattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$' + virtualServerName: + type: string + pattern: '^([A-z0-9-_+])*([A-z0-9])$' + virtualServerHTTPPort: + type: integer + minimum: 1 + maximum: 65535 + virtualServerHTTPSPort: + type: integer + minimum: 1 + maximum: 65535 required: - virtualServerAddress @@ -112,4 +138,76 @@ spec: reference: type: string required: - - clientSSL \ No newline at end of file + - clientSSL + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: transportservers.cis.f5.com +spec: + group: cis.f5.com + names: + kind: TransportServer + plural: transportservers + shortNames: + - ts + singular: transportserver + scope: Namespaced + versions: + - + name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + properties: + virtualServerAddress: + type: string + pattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$' + virtualServerPort: + type: integer + minimum: 1 + maximum: 65535 + virtualServerName: + type: string + pattern: '^([A-z0-9-_+])*([A-z0-9])$' + mode: + type: string + enum: [standard, performance] + snat: + type: string + pool: + type: object + properties: + service: + type: string + pattern: '^([A-z0-9-_+])*([A-z0-9])$' + servicePort: + type: integer + minimum: 1 + maximum: 65535 + monitor: + type: object + properties: + type: + type: string + enum: [tcp] + interval: + type: integer + timeout: + type: integer + required: + - type + - interval + required: + - service + - servicePort + required: + - virtualServerAddress + - virtualServerPort + - pool \ No newline at end of file diff --git a/operator/helm-charts/f5-bigip-ctlr/values.yaml b/operator/helm-charts/f5-bigip-ctlr/values.yaml index 27a110513..fdc82c030 100644 --- a/operator/helm-charts/f5-bigip-ctlr/values.yaml +++ b/operator/helm-charts/f5-bigip-ctlr/values.yaml @@ -1,16 +1,62 @@ -version: latest -args: - bigip_partition: f5-bigip-ctlr - bigip_url: null +# For additional information on installing the k8-bigip-ctlr please see: +# Kubernetes: http://clouddocs.f5.com/containers/latest/kubernetes/kctlr-app-install.html +# OpenShift: http://clouddocs.f5.com/containers/latest/openshift/kctlr-openshift-app-install.html#install-kctlr-openshift +# +# access / permissions / RBAC +# To create a secret using kubectl see +# http://clouddocs.f5.com/containers/latest/kubernetes/kctlr-secrets.html#secret-bigip-login bigip_login_secret: f5-bigip-ctlr-login -image: - pullPolicy: Always - repo: k8s-bigip-ctlr - user: f5networks -namespace: kube-system rbac: create: true -resources: {} serviceAccount: + # Specifies whether a service account should be created create: true - name: null + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: +# This namespace is where the Controller lives; +namespace: kube-system +args: + # See http://clouddocs.f5.com/products/connectors/k8s-bigip-ctlr/latest/#controller-configuration-parameters + # NOTE: helm has difficulty with values using `-`; `_` are used for naming + # and are replaced with `-` during rendering. + # REQUIRED Params + bigip_url: ~ + bigip_partition: f5-bigip-ctlr + # OPTIONAL PARAMS -- uncomment and provide values for those you wish to use. + # verify_interval: + # node-poll_interval: + # log_level: + # python_basedir: ~ + # VXLAN + # openshift_sdn_name: + # flannel_name: + # KUBERNETES + # default_ingress_ip: + # kubeconfig: + # namespace: + # namespace_label: + # node_label_selector: + # pool_member_type: + # resolve_ingress_names: + # running_in_cluster: + # use_node_internal: + # use_secrets: + # insecure: true + # custom-resource-mode: true + # log-as3-response: true +image: + # Use the tag to target a specific version of the Controller + user: f5networks + repo: k8s-bigip-ctlr + pullPolicy: Always +resources: {} + # If you want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi +version: latest diff --git a/operator/manifest/f5-bundle.zip b/operator/manifest/f5-bundle.zip index 575aeafde7f7369279885739777d69c67103e2d5..a2b001e31f13302d81e0b3609902b570e99957fc 100644 GIT binary patch delta 26765 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 delta 111332 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

%8&>XtWcxHjt~xSkMr3 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

lKebn!^jfty^5^4>Imki(o! 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�?m%=?%mi_doP*s}Dmw&+`V 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

bc%mJUm^cELySX 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 diff --git a/operator/manifest/f5-bundle/1.3.0/f5-bigip-ctlr-operator.v1.3.0.clusterserviceversion.yaml b/operator/manifest/f5-bundle/1.3.0/f5-bigip-ctlr-operator.v1.3.0.clusterserviceversion.yaml new file mode 100644 index 000000000..608e99fb1 --- /dev/null +++ b/operator/manifest/f5-bundle/1.3.0/f5-bigip-ctlr-operator.v1.3.0.clusterserviceversion.yaml @@ -0,0 +1,252 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + name: f5-bigip-ctlr-operator.v1.3.0 + namespace: placeholder + annotations: + alm-examples: >- + [{"apiVersion":"cis.f5.com/v1","kind":"F5BigIpCtlr","metadata":{"name":"f5-server"},"spec":{"args":{"log_as3_response":true,"manage_routes":true,"agent":"as3","log_level":"","route_vserver_addr":"","bigip_partition":"","openshift_sdn_name":"","bigip_url":"","insecure":true,"pool-member-type":""},"bigip_login_secret":"","image":{"pullPolicy":"Always","repo":"k8s-bigip-ctlr","user":"f5networks"},"namespace":"kube-system","rbac":{"create":true},"resources":{},"serviceAccount":{"create":true,"name":null},"version":"latest"}}] + categories: Networking + certified: 'false' + createdAt: '2020-10-22' + description: >- + Operator to install F5 Container Ingress Services (CIS) for BIG-IP. + containerImage: 'registry.connect.redhat.com/f5networks/k8s-bigip-ctlr-operator:latest' + support: F5 Operators Team + capabilities: Basic Install + repository: 'https://github.com/F5Networks/k8s-bigip-ctlr' +spec: + displayName: 'F5 Container Ingress Services' + description: > + ## Introduction + + This Operator installs F5 Container Ingress Services (CIS) for BIG-IP in + your Cluster. This enables to configure and deploy CIS using Helm Charts. + + ## F5 Container Ingress Services for BIG-IP + + F5 Container Ingress Services (CIS) integrates with container orchestration + environments to dynamically create L4/L7 services on F5 BIG-IP systems, and + load balance network traffic across the services. + + Monitoring the orchestration API server, CIS is able to modify the BIG-IP + system configuration based on changes made to containerized applications. + + ## Documentation + + Refer to F5 documentation + + - CIS on OpenShift (https://clouddocs.f5.com/containers/latest/userguide/openshift/) + - OpenShift Routes (https://clouddocs.f5.com/containers/latest/userguide/routes.html) + + ## Prerequisites + + Create BIG-IP login credentials for use with Operator Helm charts. A basic + way be, + + ``` + + oc create secret generic -n kube-system + --from-literal=username= --from-literal=password= + + ``` + maturity: beta + version: 1.3.0 + replaces: '' + minKubeVersion: 1.13.0 + keywords: + - Ingress Controller + - BIGIP + - F5 + - container + - router + - application + - delivery + - controller + - waf + - firewall + - loadbalancer + maintainers: + - name: F5 Operators Team + email: f5_cis_operators@f5.com + provider: + name: F5 Networks Inc. + labels: {} + selector: + matchLabels: {} + links: + - name: Documentation + url: 'https://clouddocs.f5.com/containers/latest/' + - name: Github Repo + url: 'https://github.com/F5Networks/k8s-bigip-ctlr/operator' + icon: + - base64data: >- + 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 + mediatype: image/png + customresourcedefinitions: + owned: + - name: f5bigipctlrs.cis.f5.com + displayName: F5BigIpCtlr + kind: F5BigIpCtlr + version: v1 + description: >- + This CRD provides kind `F5BigIpCtlr` to configure and deploy F5 BIG-IP + Controller. + resources: + - version: v1 + kind: Deployment + - version: v1 + kind: Service + - version: v1 + kind: ReplicaSet + - version: v1 + kind: Pod + - version: v1 + kind: Secret + - version: v1 + kind: ConfigMap + specDescriptors: + - description: Version is a read-only field. It contains the current version of F5 BIG-IP Controller Operator. + displayName: Version + path: version + statusDescriptors: + - path: phase + displayName: Status + description: Status of the F5 Container Ingress Services Operator. + x-descriptors: + - 'urn:alm:descriptor:io.kubernetes.phase' + required: [] + install: + strategy: deployment + spec: + clusterPermissions: + - serviceAccountName: f5-bigip-ctlr-operator + rules: + - apiGroups: + - '' + resources: + - pods + - services + - services/finalizers + - endpoints + - persistentvolumeclaims + - events + - configmaps + - secrets + - serviceaccounts + verbs: + - '*' + - apiGroups: + - apps + resources: + - deployments + - daemonsets + - replicasets + - statefulsets + verbs: + - '*' + - apiGroups: + - '' + resources: + - namespaces + verbs: + - '*' + - apiGroups: + - '' + resources: + - configmaps + - secrets + verbs: + - '*' + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - get + - create + - apiGroups: + - apps + resourceNames: + - f5-bigip-ctlr-operator + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - '' + resources: + - pods + verbs: + - get + - apiGroups: + - apps + resources: + - replicasets + - deployments + verbs: + - get + - apiGroups: + - cis.f5.com + resources: + - '*' + verbs: + - '*' + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - clusterrolebindings + - roles + - rolebindings + verbs: + - '*' + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - '*' + - apiGroups: + - charts.helm.k8s.io + resources: + - '*' + verbs: + - '*' + deployments: + - name: f5-bigip-ctlr-operator + spec: + replicas: 1 + selector: + matchLabels: + name: f5-bigip-ctlr-operator + template: + metadata: + labels: + name: f5-bigip-ctlr-operator + spec: + serviceAccountName: f5-bigip-ctlr-operator + containers: + - name: f5-bigip-ctlr-operator + image: registry.connect.redhat.com/f5networks/k8s-bigip-ctlr-operator:latest + imagePullPolicy: Always + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: f5-bigip-ctlr-operator + installModes: + - type: OwnNamespace + supported: true + - type: SingleNamespace + supported: true + - type: MultiNamespace + supported: true + - type: AllNamespaces + supported: true diff --git a/operator/manifest/f5-bundle/1.3.0/f5bigipctlrs.cis.f5.com.crd.yaml b/operator/manifest/f5-bundle/1.3.0/f5bigipctlrs.cis.f5.com.crd.yaml new file mode 100644 index 000000000..9e6743024 --- /dev/null +++ b/operator/manifest/f5-bundle/1.3.0/f5bigipctlrs.cis.f5.com.crd.yaml @@ -0,0 +1,19 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: f5bigipctlrs.cis.f5.com +spec: + group: cis.f5.com + names: + kind: F5BigIpCtlr + listKind: F5BigIpCtlrList + plural: f5bigipctlrs + singular: f5bigipctlr + scope: Namespaced + subresources: + status: {} + version: v1 + versions: + - name: v1 + served: true + storage: true diff --git a/operator/manifest/f5-bundle/f5-bigip-ctlr-operator.package.yaml b/operator/manifest/f5-bundle/f5-bigip-ctlr-operator.package.yaml index 3c60ee753..4bf297112 100644 --- a/operator/manifest/f5-bundle/f5-bigip-ctlr-operator.package.yaml +++ b/operator/manifest/f5-bundle/f5-bigip-ctlr-operator.package.yaml @@ -1,4 +1,4 @@ packageName: f5-bigip-ctlr-operator channels: - name: beta - currentCSV: f5-bigip-ctlr-operator.v1.2.0 + currentCSV: f5-bigip-ctlr-operator.v1.3.0 From 876ecda51e07ada5b396b3d1b0d86d75da8f8945 Mon Sep 17 00:00:00 2001 From: Nitin SRIVASTAV Date: Thu, 29 Oct 2020 14:50:24 +0530 Subject: [PATCH 02/23] adding NCC to teems userAgent --- cmd/k8s-bigip-ctlr/main.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmd/k8s-bigip-ctlr/main.go b/cmd/k8s-bigip-ctlr/main.go index 9be9034d7..6e9aff3e3 100644 --- a/cmd/k8s-bigip-ctlr/main.go +++ b/cmd/k8s-bigip-ctlr/main.go @@ -1097,12 +1097,18 @@ func getUserAgentInfo() string { // support for ocp < 3.11 if vInfo, err = rc.Get().AbsPath(versionPathOpenshiftv3).DoRaw(); err == nil { if err = json.Unmarshal(vInfo, &versionInfo); err == nil { + if *nginxCISConnectMode { + return fmt.Sprintf("CIS/v%v OCP/%v NCC", version, versionInfo["gitVersion"]) + } return fmt.Sprintf("CIS/v%v OCP/%v", version, versionInfo["gitVersion"]) } } else if vInfo, err = rc.Get().AbsPath(versionPathOpenshiftv4).DoRaw(); err == nil { // support ocp > 4.0 var ocp4 Ocp4Version if er := json.Unmarshal(vInfo, &ocp4); er == nil { + if *nginxCISConnectMode { + return fmt.Sprintf("CIS/v%v OCP/v4.0.0 NCC", version) + } if len(ocp4.Status.History) > 0 { return fmt.Sprintf("CIS/v%v OCP/v%v", version, ocp4.Status.History[0].Version) } @@ -1111,6 +1117,9 @@ func getUserAgentInfo() string { } else if vInfo, err = rc.Get().AbsPath(versionPathk8s).DoRaw(); err == nil { // support k8s if er := json.Unmarshal(vInfo, &versionInfo); er == nil { + if *nginxCISConnectMode { + return fmt.Sprintf("CIS/v%v K8S/%v NCC", version, versionInfo["gitVersion"]) + } return fmt.Sprintf("CIS/v%v K8S/%v", version, versionInfo["gitVersion"]) } } From 8c1cd3114580393d8f98e5f04d85eded1368631b Mon Sep 17 00:00:00 2001 From: Subba Reddy Veeramreddy Date: Wed, 28 Oct 2020 01:22:16 +0530 Subject: [PATCH 03/23] Add Spec and Informers for New CRD ExternalDNS Signed-off-by: Subba Reddy Veeramreddy --- config/apis/cis/v1/register.go | 2 + config/apis/cis/v1/types.go | 36 ++++ config/apis/cis/v1/zz_generated.deepcopy.go | 98 ++++++++++ .../client/clientset/versioned/clientset.go | 2 +- .../versioned/typed/cis/v1/cis_client.go | 5 + .../versioned/typed/cis/v1/externaldns.go | 174 ++++++++++++++++++ .../typed/cis/v1/fake/fake_cis_client.go | 4 + .../typed/cis/v1/fake/fake_externaldns.go | 128 +++++++++++++ .../typed/cis/v1/generated_expansion.go | 2 + .../externalversions/cis/v1/externaldns.go | 89 +++++++++ .../externalversions/cis/v1/interface.go | 7 + .../informers/externalversions/generic.go | 2 + .../listers/cis/v1/expansion_generated.go | 8 + config/client/listers/cis/v1/externaldns.go | 94 ++++++++++ 14 files changed, 650 insertions(+), 1 deletion(-) create mode 100644 config/client/clientset/versioned/typed/cis/v1/externaldns.go create mode 100644 config/client/clientset/versioned/typed/cis/v1/fake/fake_externaldns.go create mode 100644 config/client/informers/externalversions/cis/v1/externaldns.go create mode 100644 config/client/listers/cis/v1/externaldns.go diff --git a/config/apis/cis/v1/register.go b/config/apis/cis/v1/register.go index 7d5a69b8c..505ab40b5 100644 --- a/config/apis/cis/v1/register.go +++ b/config/apis/cis/v1/register.go @@ -44,6 +44,8 @@ func addKnownTypes(scheme *runtime.Scheme) error { &NginxCisConnectorList{}, &TransportServer{}, &TransportServerList{}, + &ExternalDNS{}, + &ExternalDNSList{}, ) scheme.AddKnownTypes( diff --git a/config/apis/cis/v1/types.go b/config/apis/cis/v1/types.go index 41eea3242..daf58cc8a 100644 --- a/config/apis/cis/v1/types.go +++ b/config/apis/cis/v1/types.go @@ -159,3 +159,39 @@ type TransportServerList struct { Items []TransportServer `json:"items"` } + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:validation:Optional + +// ExternalDNS defines the DNS resource. +type ExternalDNS struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ExternalDNSSpec `json:"spec"` +} + +type ExternalDNSSpec struct { + DomainName string `json:"domainName"` + DNSRecordType string `json:"dnsRecordType"` + LoadBalanceMethod string `json:"loadBalanceMethod"` + Pools []DNSPool `json:"pools"` +} + +type DNSPool struct { + Name string `json:"name"` + DataServerName string `json:"dataServerName"` + DNSRecordType string `json:"dnsRecordType"` + Monitor Monitor `json:"monitor"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ExternalDNSList is list of ExternalDNS +type ExternalDNSList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata"` + + Items []ExternalDNS `json:"items"` +} diff --git a/config/apis/cis/v1/zz_generated.deepcopy.go b/config/apis/cis/v1/zz_generated.deepcopy.go index be1c44f0c..411bcf0a4 100644 --- a/config/apis/cis/v1/zz_generated.deepcopy.go +++ b/config/apis/cis/v1/zz_generated.deepcopy.go @@ -25,6 +25,104 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSPool) DeepCopyInto(out *DNSPool) { + *out = *in + out.Monitor = in.Monitor + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPool. +func (in *DNSPool) DeepCopy() *DNSPool { + if in == nil { + return nil + } + out := new(DNSPool) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalDNS) DeepCopyInto(out *ExternalDNS) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalDNS. +func (in *ExternalDNS) DeepCopy() *ExternalDNS { + if in == nil { + return nil + } + out := new(ExternalDNS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalDNS) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalDNSList) DeepCopyInto(out *ExternalDNSList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ExternalDNS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalDNSList. +func (in *ExternalDNSList) DeepCopy() *ExternalDNSList { + if in == nil { + return nil + } + out := new(ExternalDNSList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalDNSList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalDNSSpec) DeepCopyInto(out *ExternalDNSSpec) { + *out = *in + if in.Pools != nil { + in, out := &in.Pools, &out.Pools + *out = make([]DNSPool, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalDNSSpec. +func (in *ExternalDNSSpec) DeepCopy() *ExternalDNSSpec { + if in == nil { + return nil + } + out := new(ExternalDNSSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Monitor) DeepCopyInto(out *Monitor) { *out = *in diff --git a/config/client/clientset/versioned/clientset.go b/config/client/clientset/versioned/clientset.go index c9bd7fd87..f35224d62 100644 --- a/config/client/clientset/versioned/clientset.go +++ b/config/client/clientset/versioned/clientset.go @@ -59,7 +59,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { configShallowCopy := *c if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { if configShallowCopy.Burst <= 0 { - return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") + return nil, fmt.Errorf("Burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") } configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) } diff --git a/config/client/clientset/versioned/typed/cis/v1/cis_client.go b/config/client/clientset/versioned/typed/cis/v1/cis_client.go index 434471663..f4ab2c376 100644 --- a/config/client/clientset/versioned/typed/cis/v1/cis_client.go +++ b/config/client/clientset/versioned/typed/cis/v1/cis_client.go @@ -26,6 +26,7 @@ import ( type K8sV1Interface interface { RESTClient() rest.Interface + ExternalDNSsGetter NginxCisConnectorsGetter TLSProfilesGetter TransportServersGetter @@ -37,6 +38,10 @@ type K8sV1Client struct { restClient rest.Interface } +func (c *K8sV1Client) ExternalDNSs(namespace string) ExternalDNSInterface { + return newExternalDNSs(c, namespace) +} + func (c *K8sV1Client) NginxCisConnectors(namespace string) NginxCisConnectorInterface { return newNginxCisConnectors(c, namespace) } diff --git a/config/client/clientset/versioned/typed/cis/v1/externaldns.go b/config/client/clientset/versioned/typed/cis/v1/externaldns.go new file mode 100644 index 000000000..99f07809a --- /dev/null +++ b/config/client/clientset/versioned/typed/cis/v1/externaldns.go @@ -0,0 +1,174 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/F5Networks/k8s-bigip-ctlr/config/apis/cis/v1" + scheme "github.com/F5Networks/k8s-bigip-ctlr/config/client/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// ExternalDNSsGetter has a method to return a ExternalDNSInterface. +// A group's client should implement this interface. +type ExternalDNSsGetter interface { + ExternalDNSs(namespace string) ExternalDNSInterface +} + +// ExternalDNSInterface has methods to work with ExternalDNS resources. +type ExternalDNSInterface interface { + Create(*v1.ExternalDNS) (*v1.ExternalDNS, error) + Update(*v1.ExternalDNS) (*v1.ExternalDNS, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ExternalDNS, error) + List(opts metav1.ListOptions) (*v1.ExternalDNSList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ExternalDNS, err error) + ExternalDNSExpansion +} + +// externalDNSs implements ExternalDNSInterface +type externalDNSs struct { + client rest.Interface + ns string +} + +// newExternalDNSs returns a ExternalDNSs +func newExternalDNSs(c *K8sV1Client, namespace string) *externalDNSs { + return &externalDNSs{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the externalDNS, and returns the corresponding externalDNS object, and an error if there is any. +func (c *externalDNSs) Get(name string, options metav1.GetOptions) (result *v1.ExternalDNS, err error) { + result = &v1.ExternalDNS{} + err = c.client.Get(). + Namespace(c.ns). + Resource("externaldnss"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ExternalDNSs that match those selectors. +func (c *externalDNSs) List(opts metav1.ListOptions) (result *v1.ExternalDNSList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.ExternalDNSList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("externaldnss"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested externalDNSs. +func (c *externalDNSs) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("externaldnss"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a externalDNS and creates it. Returns the server's representation of the externalDNS, and an error, if there is any. +func (c *externalDNSs) Create(externalDNS *v1.ExternalDNS) (result *v1.ExternalDNS, err error) { + result = &v1.ExternalDNS{} + err = c.client.Post(). + Namespace(c.ns). + Resource("externaldnss"). + Body(externalDNS). + Do(). + Into(result) + return +} + +// Update takes the representation of a externalDNS and updates it. Returns the server's representation of the externalDNS, and an error, if there is any. +func (c *externalDNSs) Update(externalDNS *v1.ExternalDNS) (result *v1.ExternalDNS, err error) { + result = &v1.ExternalDNS{} + err = c.client.Put(). + Namespace(c.ns). + Resource("externaldnss"). + Name(externalDNS.Name). + Body(externalDNS). + Do(). + Into(result) + return +} + +// Delete takes name of the externalDNS and deletes it. Returns an error if one occurs. +func (c *externalDNSs) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("externaldnss"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *externalDNSs) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("externaldnss"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched externalDNS. +func (c *externalDNSs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ExternalDNS, err error) { + result = &v1.ExternalDNS{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("externaldnss"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/config/client/clientset/versioned/typed/cis/v1/fake/fake_cis_client.go b/config/client/clientset/versioned/typed/cis/v1/fake/fake_cis_client.go index 0e8b0a1f8..56a10c186 100644 --- a/config/client/clientset/versioned/typed/cis/v1/fake/fake_cis_client.go +++ b/config/client/clientset/versioned/typed/cis/v1/fake/fake_cis_client.go @@ -28,6 +28,10 @@ type FakeK8sV1 struct { *testing.Fake } +func (c *FakeK8sV1) ExternalDNSs(namespace string) v1.ExternalDNSInterface { + return &FakeExternalDNSs{c, namespace} +} + func (c *FakeK8sV1) NginxCisConnectors(namespace string) v1.NginxCisConnectorInterface { return &FakeNginxCisConnectors{c, namespace} } diff --git a/config/client/clientset/versioned/typed/cis/v1/fake/fake_externaldns.go b/config/client/clientset/versioned/typed/cis/v1/fake/fake_externaldns.go new file mode 100644 index 000000000..23bb97e1f --- /dev/null +++ b/config/client/clientset/versioned/typed/cis/v1/fake/fake_externaldns.go @@ -0,0 +1,128 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + cisv1 "github.com/F5Networks/k8s-bigip-ctlr/config/apis/cis/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeExternalDNSs implements ExternalDNSInterface +type FakeExternalDNSs struct { + Fake *FakeK8sV1 + ns string +} + +var externaldnssResource = schema.GroupVersionResource{Group: "k8s.nginx.org", Version: "v1", Resource: "externaldnss"} + +var externaldnssKind = schema.GroupVersionKind{Group: "k8s.nginx.org", Version: "v1", Kind: "ExternalDNS"} + +// Get takes name of the externalDNS, and returns the corresponding externalDNS object, and an error if there is any. +func (c *FakeExternalDNSs) Get(name string, options v1.GetOptions) (result *cisv1.ExternalDNS, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(externaldnssResource, c.ns, name), &cisv1.ExternalDNS{}) + + if obj == nil { + return nil, err + } + return obj.(*cisv1.ExternalDNS), err +} + +// List takes label and field selectors, and returns the list of ExternalDNSs that match those selectors. +func (c *FakeExternalDNSs) List(opts v1.ListOptions) (result *cisv1.ExternalDNSList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(externaldnssResource, externaldnssKind, c.ns, opts), &cisv1.ExternalDNSList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &cisv1.ExternalDNSList{ListMeta: obj.(*cisv1.ExternalDNSList).ListMeta} + for _, item := range obj.(*cisv1.ExternalDNSList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested externalDNSs. +func (c *FakeExternalDNSs) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(externaldnssResource, c.ns, opts)) + +} + +// Create takes the representation of a externalDNS and creates it. Returns the server's representation of the externalDNS, and an error, if there is any. +func (c *FakeExternalDNSs) Create(externalDNS *cisv1.ExternalDNS) (result *cisv1.ExternalDNS, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(externaldnssResource, c.ns, externalDNS), &cisv1.ExternalDNS{}) + + if obj == nil { + return nil, err + } + return obj.(*cisv1.ExternalDNS), err +} + +// Update takes the representation of a externalDNS and updates it. Returns the server's representation of the externalDNS, and an error, if there is any. +func (c *FakeExternalDNSs) Update(externalDNS *cisv1.ExternalDNS) (result *cisv1.ExternalDNS, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(externaldnssResource, c.ns, externalDNS), &cisv1.ExternalDNS{}) + + if obj == nil { + return nil, err + } + return obj.(*cisv1.ExternalDNS), err +} + +// Delete takes name of the externalDNS and deletes it. Returns an error if one occurs. +func (c *FakeExternalDNSs) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(externaldnssResource, c.ns, name), &cisv1.ExternalDNS{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeExternalDNSs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(externaldnssResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &cisv1.ExternalDNSList{}) + return err +} + +// Patch applies the patch and returns the patched externalDNS. +func (c *FakeExternalDNSs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *cisv1.ExternalDNS, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(externaldnssResource, c.ns, name, pt, data, subresources...), &cisv1.ExternalDNS{}) + + if obj == nil { + return nil, err + } + return obj.(*cisv1.ExternalDNS), err +} diff --git a/config/client/clientset/versioned/typed/cis/v1/generated_expansion.go b/config/client/clientset/versioned/typed/cis/v1/generated_expansion.go index c1c67e37b..9cee3afaf 100644 --- a/config/client/clientset/versioned/typed/cis/v1/generated_expansion.go +++ b/config/client/clientset/versioned/typed/cis/v1/generated_expansion.go @@ -18,6 +18,8 @@ limitations under the License. package v1 +type ExternalDNSExpansion interface{} + type NginxCisConnectorExpansion interface{} type TLSProfileExpansion interface{} diff --git a/config/client/informers/externalversions/cis/v1/externaldns.go b/config/client/informers/externalversions/cis/v1/externaldns.go new file mode 100644 index 000000000..ea9d0357d --- /dev/null +++ b/config/client/informers/externalversions/cis/v1/externaldns.go @@ -0,0 +1,89 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + cisv1 "github.com/F5Networks/k8s-bigip-ctlr/config/apis/cis/v1" + versioned "github.com/F5Networks/k8s-bigip-ctlr/config/client/clientset/versioned" + internalinterfaces "github.com/F5Networks/k8s-bigip-ctlr/config/client/informers/externalversions/internalinterfaces" + v1 "github.com/F5Networks/k8s-bigip-ctlr/config/client/listers/cis/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// ExternalDNSInformer provides access to a shared informer and lister for +// ExternalDNSs. +type ExternalDNSInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.ExternalDNSLister +} + +type externalDNSInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewExternalDNSInformer constructs a new informer for ExternalDNS type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewExternalDNSInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredExternalDNSInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredExternalDNSInformer constructs a new informer for ExternalDNS type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredExternalDNSInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.K8sV1().ExternalDNSs(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.K8sV1().ExternalDNSs(namespace).Watch(options) + }, + }, + &cisv1.ExternalDNS{}, + resyncPeriod, + indexers, + ) +} + +func (f *externalDNSInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredExternalDNSInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *externalDNSInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&cisv1.ExternalDNS{}, f.defaultInformer) +} + +func (f *externalDNSInformer) Lister() v1.ExternalDNSLister { + return v1.NewExternalDNSLister(f.Informer().GetIndexer()) +} diff --git a/config/client/informers/externalversions/cis/v1/interface.go b/config/client/informers/externalversions/cis/v1/interface.go index 0d4cfecf3..7e824e390 100644 --- a/config/client/informers/externalversions/cis/v1/interface.go +++ b/config/client/informers/externalversions/cis/v1/interface.go @@ -24,6 +24,8 @@ import ( // Interface provides access to all the informers in this group version. type Interface interface { + // ExternalDNSs returns a ExternalDNSInformer. + ExternalDNSs() ExternalDNSInformer // NginxCisConnectors returns a NginxCisConnectorInformer. NginxCisConnectors() NginxCisConnectorInformer // TLSProfiles returns a TLSProfileInformer. @@ -45,6 +47,11 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} } +// ExternalDNSs returns a ExternalDNSInformer. +func (v *version) ExternalDNSs() ExternalDNSInformer { + return &externalDNSInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + // NginxCisConnectors returns a NginxCisConnectorInformer. func (v *version) NginxCisConnectors() NginxCisConnectorInformer { return &nginxCisConnectorInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} diff --git a/config/client/informers/externalversions/generic.go b/config/client/informers/externalversions/generic.go index b029f3da2..868927da4 100644 --- a/config/client/informers/externalversions/generic.go +++ b/config/client/informers/externalversions/generic.go @@ -53,6 +53,8 @@ func (f *genericInformer) Lister() cache.GenericLister { func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { switch resource { // Group=k8s.nginx.org, Version=v1 + case v1.SchemeGroupVersion.WithResource("externaldnss"): + return &genericInformer{resource: resource.GroupResource(), informer: f.K8s().V1().ExternalDNSs().Informer()}, nil case v1.SchemeGroupVersion.WithResource("nginxcisconnectors"): return &genericInformer{resource: resource.GroupResource(), informer: f.K8s().V1().NginxCisConnectors().Informer()}, nil case v1.SchemeGroupVersion.WithResource("tlsprofiles"): diff --git a/config/client/listers/cis/v1/expansion_generated.go b/config/client/listers/cis/v1/expansion_generated.go index a7bf67a75..564e4966c 100644 --- a/config/client/listers/cis/v1/expansion_generated.go +++ b/config/client/listers/cis/v1/expansion_generated.go @@ -18,6 +18,14 @@ limitations under the License. package v1 +// ExternalDNSListerExpansion allows custom methods to be added to +// ExternalDNSLister. +type ExternalDNSListerExpansion interface{} + +// ExternalDNSNamespaceListerExpansion allows custom methods to be added to +// ExternalDNSNamespaceLister. +type ExternalDNSNamespaceListerExpansion interface{} + // NginxCisConnectorListerExpansion allows custom methods to be added to // NginxCisConnectorLister. type NginxCisConnectorListerExpansion interface{} diff --git a/config/client/listers/cis/v1/externaldns.go b/config/client/listers/cis/v1/externaldns.go new file mode 100644 index 000000000..328880ace --- /dev/null +++ b/config/client/listers/cis/v1/externaldns.go @@ -0,0 +1,94 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/F5Networks/k8s-bigip-ctlr/config/apis/cis/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// ExternalDNSLister helps list ExternalDNSs. +type ExternalDNSLister interface { + // List lists all ExternalDNSs in the indexer. + List(selector labels.Selector) (ret []*v1.ExternalDNS, err error) + // ExternalDNSs returns an object that can list and get ExternalDNSs. + ExternalDNSs(namespace string) ExternalDNSNamespaceLister + ExternalDNSListerExpansion +} + +// externalDNSLister implements the ExternalDNSLister interface. +type externalDNSLister struct { + indexer cache.Indexer +} + +// NewExternalDNSLister returns a new ExternalDNSLister. +func NewExternalDNSLister(indexer cache.Indexer) ExternalDNSLister { + return &externalDNSLister{indexer: indexer} +} + +// List lists all ExternalDNSs in the indexer. +func (s *externalDNSLister) List(selector labels.Selector) (ret []*v1.ExternalDNS, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ExternalDNS)) + }) + return ret, err +} + +// ExternalDNSs returns an object that can list and get ExternalDNSs. +func (s *externalDNSLister) ExternalDNSs(namespace string) ExternalDNSNamespaceLister { + return externalDNSNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ExternalDNSNamespaceLister helps list and get ExternalDNSs. +type ExternalDNSNamespaceLister interface { + // List lists all ExternalDNSs in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.ExternalDNS, err error) + // Get retrieves the ExternalDNS from the indexer for a given namespace and name. + Get(name string) (*v1.ExternalDNS, error) + ExternalDNSNamespaceListerExpansion +} + +// externalDNSNamespaceLister implements the ExternalDNSNamespaceLister +// interface. +type externalDNSNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ExternalDNSs in the indexer for a given namespace. +func (s externalDNSNamespaceLister) List(selector labels.Selector) (ret []*v1.ExternalDNS, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ExternalDNS)) + }) + return ret, err +} + +// Get retrieves the ExternalDNS from the indexer for a given namespace and name. +func (s externalDNSNamespaceLister) Get(name string) (*v1.ExternalDNS, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("externaldns"), name) + } + return obj.(*v1.ExternalDNS), nil +} From 3a0abae2f3ff9c775591e302b93bedd397feda56 Mon Sep 17 00:00:00 2001 From: Subba Reddy Veeramreddy Date: Tue, 3 Nov 2020 12:12:10 +0530 Subject: [PATCH 04/23] Add Schema and example Documents for ExternalDNS Signed-off-by: Subba Reddy Veeramreddy --- .../ externaldns-customresourcedefinition.yml | 71 ++++++++++++++++++ .../crd/ExternalDNS/externaldns.yaml | 21 ++++++ .../crd/Install/clusterrole.yml | 2 +- .../crd/Install/customresourcedefinitions.yml | 73 +++++++++++++++++++ 4 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 docs/_static/config_examples/crd/ExternalDNS/ externaldns-customresourcedefinition.yml create mode 100644 docs/_static/config_examples/crd/ExternalDNS/externaldns.yaml diff --git a/docs/_static/config_examples/crd/ExternalDNS/ externaldns-customresourcedefinition.yml b/docs/_static/config_examples/crd/ExternalDNS/ externaldns-customresourcedefinition.yml new file mode 100644 index 000000000..34b2b8f46 --- /dev/null +++ b/docs/_static/config_examples/crd/ExternalDNS/ externaldns-customresourcedefinition.yml @@ -0,0 +1,71 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: externaldnss.cis.f5.com +spec: + group: cis.f5.com + names: + kind: ExternalDNS + plural: externaldnss + shortNames: + - edns + singular: externaldns + scope: Namespaced + versions: + - + name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + properties: + domainName: + type: string + pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' + dnsRecordType: + type: string + pattern: 'A' + loadBalanceMethod: + type: string + pools: + type: array + items: + type: object + properties: + name: + type: string + pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' + dataServerName: + type: string + dnsRecordType: + type: string + pattern: 'A' + loadBalanceMethod: + type: string + monitor: + type: object + properties: + type: + type: string + enum: [http, https] + send: + type: string + recv: + type: string + interval: + type: integer + timeout: + type: integer + required: + - type + - send + - interval + required: + - name + - dataServerName + required: + - domainName diff --git a/docs/_static/config_examples/crd/ExternalDNS/externaldns.yaml b/docs/_static/config_examples/crd/ExternalDNS/externaldns.yaml new file mode 100644 index 000000000..2256928e3 --- /dev/null +++ b/docs/_static/config_examples/crd/ExternalDNS/externaldns.yaml @@ -0,0 +1,21 @@ +apiVersion: "cis.f5.com/v1" +kind: ExternalDNS +metadata: + name: exdns + labels: + f5cr: "true" +spec: + domainName: example.com + dnsRecordType: A + loadBalanceMethod: round-robin + pools: + - name: example.site1.com + dnsRecordType: A + loadBalanceMethod: round-robin + dataServerName: /Common/GSLBServer + monitor: + type: https + send: "GET /" + recv: "" + interval: 10 + timeout: 10 diff --git a/docs/_static/config_examples/crd/Install/clusterrole.yml b/docs/_static/config_examples/crd/Install/clusterrole.yml index 043ba5561..b649f90aa 100644 --- a/docs/_static/config_examples/crd/Install/clusterrole.yml +++ b/docs/_static/config_examples/crd/Install/clusterrole.yml @@ -12,7 +12,7 @@ rules: resources: ["configmaps", "events", "ingresses/status"] verbs: ["get", "list", "watch", "update", "create", "patch"] - apiGroups: ["cis.f5.com"] - resources: ["virtualservers", "tlsprofiles", "transportservers", "nginxcisconnectors"] + resources: ["virtualservers", "tlsprofiles", "transportservers", "nginxcisconnectors", "externaldnss"] verbs: ["get", "list", "watch", "update"] - apiGroups: ["", "extensions"] resources: ["secrets"] diff --git a/docs/_static/config_examples/crd/Install/customresourcedefinitions.yml b/docs/_static/config_examples/crd/Install/customresourcedefinitions.yml index 33d90f4a3..1fc8aad53 100644 --- a/docs/_static/config_examples/crd/Install/customresourcedefinitions.yml +++ b/docs/_static/config_examples/crd/Install/customresourcedefinitions.yml @@ -211,3 +211,76 @@ spec: - virtualServerAddress - virtualServerPort - pool + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: externaldnss.cis.f5.com +spec: + group: cis.f5.com + names: + kind: ExternalDNS + plural: externaldnss + shortNames: + - edns + singular: externaldns + scope: Namespaced + versions: + - + name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + properties: + domainName: + type: string + pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' + dnsRecordType: + type: string + pattern: 'A' + loadBalanceMethod: + type: string + pools: + type: array + items: + type: object + properties: + name: + type: string + pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' + dataServerName: + type: string + dnsRecordType: + type: string + pattern: 'A' + loadBalanceMethod: + type: string + monitor: + type: object + properties: + type: + type: string + enum: [http, https] + send: + type: string + recv: + type: string + interval: + type: integer + timeout: + type: integer + required: + - type + - send + - interval + required: + - name + - dataServerName + required: + - domainName From 6013d97e8cb64cc5bfbbdd964fe0b6672f48e439 Mon Sep 17 00:00:00 2001 From: Subba Reddy Veeramreddy Date: Tue, 3 Nov 2020 12:01:58 +0530 Subject: [PATCH 05/23] Process CRD ExternalDNS and Create GTM Configuration Signed-off-by: Subba Reddy Veeramreddy --- config/apis/cis/v1/types.go | 9 +-- pkg/crmanager/backend.go | 33 ++++++++++ pkg/crmanager/crManager.go | 4 +- pkg/crmanager/informers.go | 34 ++++++++++ pkg/crmanager/resourceConfig.go | 16 +++-- pkg/crmanager/types.go | 42 ++++++++++--- pkg/crmanager/worker.go | 106 ++++++++++++++++++++++++++++++-- 7 files changed, 222 insertions(+), 22 deletions(-) diff --git a/config/apis/cis/v1/types.go b/config/apis/cis/v1/types.go index daf58cc8a..30c58eff8 100644 --- a/config/apis/cis/v1/types.go +++ b/config/apis/cis/v1/types.go @@ -180,10 +180,11 @@ type ExternalDNSSpec struct { } type DNSPool struct { - Name string `json:"name"` - DataServerName string `json:"dataServerName"` - DNSRecordType string `json:"dnsRecordType"` - Monitor Monitor `json:"monitor"` + Name string `json:"name"` + DataServerName string `json:"dataServerName"` + DNSRecordType string `json:"dnsRecordType"` + LoadBalanceMethod string `json:"loadBalanceMethod"` + Monitor Monitor `json:"monitor"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index 0cc43ebe1..0662536e5 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -85,6 +85,7 @@ func NewAgent(params AgentParams) *Agent { VerifyInterval: params.VerifyInterval, VXLANPartition: vxlanPartition, DisableLTM: true, + GTM: true, } bs := bigIPSection{ BigIPUsername: params.PostParams.BIGIPUsername, @@ -108,6 +109,7 @@ func (agent *Agent) Stop() { } func (agent *Agent) PostConfig(config ResourceConfigWrapper) { + agent.PostGTMConfig(config) decl := createAS3Declaration(config, agent.userAgent) if DeepEqualJSON(agent.activeDecl, decl) { log.Debug("[AS3] No Change in the Configuration") @@ -136,6 +138,37 @@ func (agent *Agent) PostConfig(config ResourceConfigWrapper) { } } +func (agent Agent) PostGTMConfig(config ResourceConfigWrapper) { + + dnsConfig := make(map[string]interface{}) + wideIPs := WideIPs{} + for _, v := range config.dnsConfig { + wideIPs.WideIPs = append(wideIPs.WideIPs, v) + } + + if len(wideIPs.WideIPs) == 0 { + return + } + + // TODO: Need to change to DEFAULT_PARTITION from Common, once Agent starts to support DEFAULT_PARTITION + dnsConfig["Common"] = wideIPs + + doneCh, errCh, err := agent.ConfigWriter.SendSection("gtm", dnsConfig) + + if nil != err { + log.Warningf("Failed to write gtm config section: %v", err) + } else { + select { + case <-doneCh: + log.Debugf("Wrote gtm config section: %v", config.dnsConfig) + case e := <-errCh: + log.Warningf("Failed to write gtm config section: %v", e) + case <-time.After(time.Second): + log.Warningf("Did not receive write response in 1s") + } + } +} + //Create AS3 declaration func createAS3Declaration(config ResourceConfigWrapper, userAgentInfo string) as3Declaration { var as3Config map[string]interface{} diff --git a/pkg/crmanager/crManager.go b/pkg/crmanager/crManager.go index 2fa26c58d..879ff691d 100644 --- a/pkg/crmanager/crManager.go +++ b/pkg/crmanager/crManager.go @@ -42,8 +42,10 @@ const ( TLSProfile = "TLSProfile" // NginxCisConnector is a Custom Resource used by both F5 and Nginx NginxCisConnector = "NginxCisConnector" - //TransportServer is a F5 Custom Resource Kind + // TransportServer is a F5 Custom Resource Kind TransportServer = "TransportServer" + // ExternalDNS is a F5 Customr Resource Kind + ExternalDNS = "ExternalDNS" // Service is a k8s native Service Resource. Service = "Service" // Endpoints is a k8s native Endpoint Resource. diff --git a/pkg/crmanager/informers.go b/pkg/crmanager/informers.go index 8bd29a51d..84923d45c 100644 --- a/pkg/crmanager/informers.go +++ b/pkg/crmanager/informers.go @@ -53,6 +53,11 @@ func (crInfr *CRInformer) start() { go crInfr.nccInformer.Run(crInfr.stopCh) cacheSyncs = append(cacheSyncs, crInfr.nccInformer.HasSynced) } + if crInfr.ednsInformer != nil { + log.Infof("Starting ExternalDNS Informer") + go crInfr.ednsInformer.Run(crInfr.stopCh) + cacheSyncs = append(cacheSyncs, crInfr.ednsInformer.HasSynced) + } if crInfr.svcInformer != nil { go crInfr.svcInformer.Run(crInfr.stopCh) cacheSyncs = append(cacheSyncs, crInfr.svcInformer.HasSynced) @@ -174,6 +179,13 @@ func (crMgr *CRManager) newNamespacedInformer( cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, crOptions, ) + crInf.ednsInformer = cisinfv1.NewFilteredExternalDNSInformer( + crMgr.kubeCRClient, + namespace, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + crOptions, + ) } return crInf @@ -220,6 +232,15 @@ func (crMgr *CRManager) addEventHandlers(crInf *CRInformer) { ) } + if crInf.ednsInformer != nil { + crInf.ednsInformer.AddEventHandler( + &cache.ResourceEventHandlerFuncs{ + AddFunc: func(obj interface{}) { crMgr.enqueueExternalDNS(obj) }, + UpdateFunc: func(oldObj, newObj interface{}) { crMgr.enqueueExternalDNS(newObj) }, + // DeleteFunc: nil, + }) + } + if crInf.svcInformer != nil { crInf.svcInformer.AddEventHandler( &cache.ResourceEventHandlerFuncs{ @@ -437,6 +458,19 @@ func (crMgr *CRManager) enqueueUpdatedNginxCisConnector(oldObj, newObj interface crMgr.rscQueue.Add(key) } +func (crMgr *CRManager) enqueueExternalDNS(obj interface{}) { + edns := obj.(*cisapiv1.ExternalDNS) + log.Infof("Enqueueing ExternalDNS: %v", edns) + key := &rqKey{ + namespace: edns.ObjectMeta.Namespace, + kind: ExternalDNS, + rscName: edns.ObjectMeta.Name, + rsc: obj, + } + + crMgr.rscQueue.Add(key) +} + func (crMgr *CRManager) enqueueService(obj interface{}) { flag := true svc := obj.(*corev1.Service) diff --git a/pkg/crmanager/resourceConfig.go b/pkg/crmanager/resourceConfig.go index 376a02661..a4052e11c 100644 --- a/pkg/crmanager/resourceConfig.go +++ b/pkg/crmanager/resourceConfig.go @@ -43,10 +43,12 @@ func NewResources() *Resources { // Resources is Map of Resource configs type Resources struct { sync.Mutex - rm resourceKeyMap - rsMap ResourceConfigMap - objDeps ObjectDependencyMap - oldRsMap ResourceConfigMap + rm resourceKeyMap + rsMap ResourceConfigMap + objDeps ObjectDependencyMap + oldRsMap ResourceConfigMap + dnsConfig DNSConfig + oldDNSConfig DNSConfig } // Init is Receiver to initialize the object. @@ -55,6 +57,8 @@ func (rs *Resources) Init() { rs.rsMap = make(ResourceConfigMap) rs.objDeps = make(ObjectDependencyMap) rs.oldRsMap = make(ResourceConfigMap) + rs.dnsConfig = make(DNSConfig) + rs.oldDNSConfig = make(DNSConfig) } type mergedRuleEntry struct { @@ -1425,6 +1429,10 @@ func (rs *Resources) updateOldConfig() { rs.oldRsMap[k] = &ResourceConfig{} rs.oldRsMap[k].copyConfig(v) } + rs.oldDNSConfig = make(DNSConfig) + for k, v := range rs.dnsConfig { + rs.oldDNSConfig[k] = v + } } // Deletes respective VirtualServer resource configuration from diff --git a/pkg/crmanager/types.go b/pkg/crmanager/types.go index f71f05a33..5d171662a 100644 --- a/pkg/crmanager/types.go +++ b/pkg/crmanager/types.go @@ -84,14 +84,15 @@ type ( } // CRInformer defines the structure of Custom Resource Informer CRInformer struct { - namespace string - stopCh chan struct{} - vsInformer cache.SharedIndexInformer - tlsInformer cache.SharedIndexInformer - tsInformer cache.SharedIndexInformer - nccInformer cache.SharedIndexInformer - svcInformer cache.SharedIndexInformer - epsInformer cache.SharedIndexInformer + namespace string + stopCh chan struct{} + svcInformer cache.SharedIndexInformer + epsInformer cache.SharedIndexInformer + vsInformer cache.SharedIndexInformer + tlsInformer cache.SharedIndexInformer + tsInformer cache.SharedIndexInformer + nccInformer cache.SharedIndexInformer + ednsInformer cache.SharedIndexInformer } NSInformer struct { @@ -110,6 +111,7 @@ type ( Active bool ResourceType string rscName string + hosts []string } // Virtual Server Key - unique server is Name + Port @@ -169,12 +171,33 @@ type ( // ResourceConfigs is group of ResourceConfig ResourceConfigs []*ResourceConfig + DNSConfig map[string]WideIP + + WideIPs struct { + WideIPs []WideIP `json:"wideIPs"` + } + + WideIP struct { + DomainName string `json:"name"` + RecordType string `json:"recordType"` + LBMethod string `json:"LoadBalancingMode"` + Pools []GSLBPool `json:"pools"` + } + GSLBPool struct { + Name string `json:"name"` + RecordType string `json:"recordType"` + LBMethod string `json:"LoadBalancingMode"` + Members []string `json:"members"` + Monitor *Monitor `json:"monitor,omitempty"` + } + ResourceConfigWrapper struct { rsCfgs ResourceConfigs iRuleMap IRulesMap intDgMap InternalDataGroupMap customProfiles *CustomProfileStore shareNodes bool + dnsConfig DNSConfig } // Pool config @@ -197,7 +220,7 @@ type ( Interval int `json:"interval,omitempty"` Type string `json:"type,omitempty"` Send string `json:"send,omitempty"` - Recv string `json:"recv,omitempty"` + Recv string `json:"recv"` Timeout int `json:"timeout,omitempty"` } // Monitors is slice of monitor @@ -368,6 +391,7 @@ type ( VerifyInterval int `json:"verify-interval,omitempty"` VXLANPartition string `json:"vxlan-partition,omitempty"` DisableLTM bool `json:"disable-ltm,omitempty"` + GTM bool `json:"gtm,omitempty"` } bigIPSection struct { diff --git a/pkg/crmanager/worker.go b/pkg/crmanager/worker.go index 929e2010f..bc8f34375 100644 --- a/pkg/crmanager/worker.go +++ b/pkg/crmanager/worker.go @@ -87,6 +87,9 @@ func (crMgr *CRManager) processResource() bool { utilruntime.HandleError(fmt.Errorf("Sync %v failed with %v", key, err)) isError = true } + case ExternalDNS: + edns := rKey.rsc.(*cisapiv1.ExternalDNS) + crMgr.syncExternalDNS(edns) case Service: if crMgr.initState { break @@ -194,10 +197,9 @@ func (crMgr *CRManager) processResource() bool { crMgr.rscQueue.Forget(key) } - if crMgr.rscQueue.Len() == 0 && !reflect.DeepEqual( - crMgr.resources.rsMap, - crMgr.resources.oldRsMap, - ) { + if crMgr.rscQueue.Len() == 0 && + (!reflect.DeepEqual(crMgr.resources.rsMap, crMgr.resources.oldRsMap) || + !reflect.DeepEqual(crMgr.resources.dnsConfig, crMgr.resources.oldDNSConfig)) { config := ResourceConfigWrapper{ rsCfgs: crMgr.resources.GetAllResources(), @@ -205,6 +207,7 @@ func (crMgr *CRManager) processResource() bool { intDgMap: crMgr.intDgMap, customProfiles: crMgr.customProfiles, shareNodes: crMgr.shareNodes, + dnsConfig: crMgr.resources.dnsConfig, } crMgr.Agent.PostConfig(config) crMgr.initState = false @@ -550,6 +553,7 @@ func (crMgr *CRManager) syncVirtualServers( rsCfg.MetaData.ResourceType = VirtualServer rsCfg.Virtual.Enabled = true rsCfg.Virtual.Name = rsName + rsCfg.MetaData.hosts = append(rsCfg.MetaData.hosts, virtual.Spec.Host) rsCfg.Virtual.SetVirtualAddress( virtual.Spec.VirtualServerAddress, portStruct.port, @@ -598,10 +602,18 @@ func (crMgr *CRManager) syncVirtualServers( } if !processingError { + var newVSCreated bool // Update rsMap with ResourceConfigs created for the current virtuals for rsName, rsCfg := range vsMap { + if _, ok := crMgr.resources.rsMap[rsName]; !ok { + newVSCreated = true + } crMgr.resources.rsMap[rsName] = rsCfg } + if newVSCreated { + // TODO: Need to improve the algorithm by taking "host" as a factor + crMgr.ProcessAllExternalDNS() + } } return nil @@ -961,3 +973,89 @@ func getVirtualServersForTransportServerService(allVirtuals []*cisapiv1.Transpor return result } + +func (crMgr *CRManager) syncExternalDNS(edns *cisapiv1.ExternalDNS) { + + wip := WideIP{ + DomainName: edns.Spec.DomainName, + RecordType: edns.Spec.DNSRecordType, + LBMethod: edns.Spec.LoadBalanceMethod, + } + if edns.Spec.DNSRecordType == "" { + wip.RecordType = "A" + } + if edns.Spec.LoadBalanceMethod == "" { + wip.LBMethod = "round-robin" + } + + log.Debugf("Processing WideIP: %v", edns.Spec.DomainName) + + for _, pl := range edns.Spec.Pools { + log.Debugf("Processing WideIP Pool: %v", pl.Name) + pool := GSLBPool{ + Name: pl.Name, + RecordType: pl.DNSRecordType, + LBMethod: pl.LoadBalanceMethod, + } + + if pl.DNSRecordType == "" { + pool.RecordType = "A" + } + if pl.LoadBalanceMethod == "" { + pool.LBMethod = "round-robin" + } + + for vsName, vs := range crMgr.resources.rsMap { + var found bool + for _, host := range vs.MetaData.hosts { + if host == edns.Spec.DomainName { + found = true + break + } + } + if found { + log.Debugf("Adding WideIP Pool Member: %v", fmt.Sprintf("%v:/%v/Shared/%v", + pl.DataServerName, DEFAULT_PARTITION, vsName)) + pool.Members = append( + pool.Members, + fmt.Sprintf("%v:/%v/Shared/%v", + pl.DataServerName, DEFAULT_PARTITION, vsName), + ) + } + } + if pl.Monitor.Send != "" && pl.Monitor.Type != "" { + // TODO: Need to change to DEFAULT_PARTITION from Common, once Agent starts to support DEFAULT_PARTITION + pool.Monitor = &Monitor{ + Name: pl.Name + "_monitor", + Partition: "Common", + Type: pl.Monitor.Type, + Interval: pl.Monitor.Interval, + Send: pl.Monitor.Send, + Recv: pl.Monitor.Recv, + Timeout: pl.Monitor.Timeout, + } + } + wip.Pools = append(wip.Pools, pool) + } + + crMgr.resources.dnsConfig[wip.DomainName] = wip + return +} + +func (crMgr *CRManager) ProcessAllExternalDNS() { + for ns, crInf := range crMgr.crInformers { + // TODO: It does not support the case of all namespaces (""). Need to Fix. + nsEDNSs, err := crInf.ednsInformer.GetIndexer().ByIndex("namespace", ns) + if err != nil { + log.Errorf("Unable to get list of ExternalDNSs for namespace '%v': %v", + ns, err) + continue + } + log.Debugf("Processing all ExternalDNS: %v, Namespace: %v.", len(nsEDNSs), ns) + + for _, obj := range nsEDNSs { + edns := obj.(*cisapiv1.ExternalDNS) + crMgr.syncExternalDNS(edns) + } + } +} From 38085c8e237da09651393a1bfbfe59a51d783b7d Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Thu, 29 Oct 2020 09:51:39 +0530 Subject: [PATCH 06/23] Added support for iRules in NCC Crd --- all_attributions.txt | 1 - config/apis/cis/v1/types.go | 1 + ...xcisconnector-customresourcedefinition.yml | 4 +++ .../NginxCisConnector/nginxcisconnector.yaml | 2 ++ pkg/crmanager/backend.go | 26 +++++++++++++++---- pkg/crmanager/nccWorker.go | 3 +++ pkg/crmanager/resourceConfig.go | 3 +++ pkg/crmanager/types.go | 2 +- 8 files changed, 35 insertions(+), 7 deletions(-) mode change 100644 => 100755 all_attributions.txt diff --git a/all_attributions.txt b/all_attributions.txt old mode 100644 new mode 100755 index 6e83c29d8..fda149088 --- a/all_attributions.txt +++ b/all_attributions.txt @@ -1437,4 +1437,3 @@ LICENSE: "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - diff --git a/config/apis/cis/v1/types.go b/config/apis/cis/v1/types.go index 30c58eff8..16fa07056 100644 --- a/config/apis/cis/v1/types.go +++ b/config/apis/cis/v1/types.go @@ -111,6 +111,7 @@ type NginxCisConnector struct { type NginxCisConnectorSpec struct { VirtualServerAddress string `json:"virtualServerAddress"` Selector *metav1.LabelSelector `json:"selector"` + IRules []string `json:"iRules,omitempty"` } // NginxCisConnectorStatus is Status for NginxCisConnector diff --git a/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector-customresourcedefinition.yml b/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector-customresourcedefinition.yml index 3d2f6a851..720875883 100644 --- a/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector-customresourcedefinition.yml +++ b/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector-customresourcedefinition.yml @@ -26,6 +26,10 @@ spec: virtualServerAddress: type: string pattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$' + iRules: + type: array + items: + type: string selector: properties: matchLabels: diff --git a/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector.yaml b/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector.yaml index 45af11581..7df820c50 100644 --- a/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector.yaml +++ b/docs/_static/config_examples/crd/NginxCisConnector/nginxcisconnector.yaml @@ -4,6 +4,8 @@ metadata: name: my-nginxcisconnector spec: virtualServerAddress: "172.16.3.4" + iRules: + - /Common/test-irule selector: matchLabels: app: nginx-kic diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index 0662536e5..aeea5946c 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -463,13 +463,29 @@ func createServiceDecl(cfg *ResourceConfig, sharedApp as3Application) { for _, v := range cfg.Virtual.IRules { splits := strings.Split(v, "/") iRuleName := splits[len(splits)-1] - if iRuleName == SslPassthroughIRuleName { - svc.ServerTLS = &as3ResourcePointer{ - BigIP: "/Common/clientssl", + matched := false + var IRules []interface{} + for _, b := range IRuleList { + if iRuleName == b { + matched = true } - updateVirtualToHTTPS(svc) } - svc.IRules = append(svc.IRules, iRuleName) + if matched { + if iRuleName == SslPassthroughIRuleName { + svc.ServerTLS = &as3ResourcePointer{ + BigIP: "/Common/clientssl", + } + updateVirtualToHTTPS(svc) + } + IRules = append(IRules, iRuleName) + } else { + irule := &as3ResourcePointer{ + BigIP: fmt.Sprintf("%v", v), + } + IRules = append(IRules, irule) + } + svc.IRules = IRules + } sharedApp[cfg.Virtual.Name] = svc diff --git a/pkg/crmanager/nccWorker.go b/pkg/crmanager/nccWorker.go index 6806d3a20..8a4f72d29 100644 --- a/pkg/crmanager/nccWorker.go +++ b/pkg/crmanager/nccWorker.go @@ -230,6 +230,9 @@ func (crMgr *CRManager) syncNginxCisConnector( rsCfg.Virtual.Enabled = true rsCfg.Virtual.Name = rsName rsCfg.Virtual.SNAT = DEFAULT_SNAT + if len(ncc.Spec.IRules) > 0 { + rsCfg.Virtual.IRules = ncc.Spec.IRules + } rsCfg.Virtual.SetVirtualAddress( ncc.Spec.VirtualServerAddress, port.Port, diff --git a/pkg/crmanager/resourceConfig.go b/pkg/crmanager/resourceConfig.go index a4052e11c..d2caada96 100644 --- a/pkg/crmanager/resourceConfig.go +++ b/pkg/crmanager/resourceConfig.go @@ -126,6 +126,9 @@ const ( SslPassthroughIRuleName = "passthrough_irule" ) +// Irule list +var IRuleList = [...]string{SslPassthroughIRuleName, HttpRedirectNoHostIRuleName, HttpRedirectIRuleName} + // constants for TLS references const ( // reference for profiles stored in BIG-IP diff --git a/pkg/crmanager/types.go b/pkg/crmanager/types.go index 5d171662a..febc65761 100644 --- a/pkg/crmanager/types.go +++ b/pkg/crmanager/types.go @@ -527,7 +527,7 @@ type ( PolicyEndpoint as3MultiTypeParam `json:"policyEndpoint,omitempty"` ClientTLS as3MultiTypeParam `json:"clientTLS,omitempty"` ServerTLS as3MultiTypeParam `json:"serverTLS,omitempty"` - IRules []string `json:"iRules,omitempty"` + IRules as3MultiTypeParam `json:"iRules,omitempty"` Redirect80 *bool `json:"redirect80,omitempty"` Pool string `json:"pool,omitempty"` WAF as3MultiTypeParam `json:"policyWAF,omitempty"` From 0e3bea26152152083d4f9e58968c7b3b7ab67e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLavanya?= Date: Wed, 11 Nov 2020 15:42:08 +0530 Subject: [PATCH 07/23] ncc change class for passthrough ncc change class for passthrough --- pkg/crmanager/backend.go | 74 ++++++++++++++++++++++---------------- pkg/crmanager/nccWorker.go | 6 +++- pkg/crmanager/types.go | 33 +++++++++-------- 3 files changed, 66 insertions(+), 47 deletions(-) diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index aeea5946c..8722e0231 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -393,6 +393,36 @@ func updateVirtualToHTTPS(v *as3Service) { v.Redirect80 = &redirect80 } +// Process Irules for CRD +func processIrulesForCRD(cfg *ResourceConfig, svc *as3Service) { + for _, v := range cfg.Virtual.IRules { + splits := strings.Split(v, "/") + iRuleName := splits[len(splits)-1] + matched := false + var IRules []interface{} + for _, b := range IRuleList { + if iRuleName == b { + matched = true + } + } + if matched { + if iRuleName == SslPassthroughIRuleName { + svc.ServerTLS = &as3ResourcePointer{ + BigIP: "/Common/clientssl", + } + updateVirtualToHTTPS(svc) + } + IRules = append(IRules, iRuleName) + } else { + irule := &as3ResourcePointer{ + BigIP: fmt.Sprintf("%v", v), + } + IRules = append(IRules, irule) + } + svc.IRules = IRules + } +} + // Create AS3 Service for CRD func createServiceDecl(cfg *ResourceConfig, sharedApp as3Application) { svc := &as3Service{} @@ -459,35 +489,8 @@ func createServiceDecl(cfg *ResourceConfig, sharedApp as3Application) { svc.VirtualAddresses = va svc.VirtualPort = port } - - for _, v := range cfg.Virtual.IRules { - splits := strings.Split(v, "/") - iRuleName := splits[len(splits)-1] - matched := false - var IRules []interface{} - for _, b := range IRuleList { - if iRuleName == b { - matched = true - } - } - if matched { - if iRuleName == SslPassthroughIRuleName { - svc.ServerTLS = &as3ResourcePointer{ - BigIP: "/Common/clientssl", - } - updateVirtualToHTTPS(svc) - } - IRules = append(IRules, iRuleName) - } else { - irule := &as3ResourcePointer{ - BigIP: fmt.Sprintf("%v", v), - } - IRules = append(IRules, irule) - } - svc.IRules = IRules - - } - + //process irules for crd + processIrulesForCRD(cfg, svc) sharedApp[cfg.Virtual.Name] = svc } @@ -862,7 +865,15 @@ func createTransportServiceDecl(cfg *ResourceConfig, sharedApp as3Application) { BigIP: fmt.Sprintf("%v", cfg.Virtual.SNAT), } } - + if cfg.Virtual.TranslateServerAddress == true { + svc.TranslateServerAddress = cfg.Virtual.TranslateServerAddress + } + if cfg.Virtual.TranslateServerPort == true { + svc.TranslateServerPort = cfg.Virtual.TranslateServerPort + } + if cfg.Virtual.Source != "" { + svc.Source = cfg.Virtual.Source + } virtualAddress, port := extractVirtualAddressAndPort(cfg.Virtual.Destination) // verify that ip address and port exists. if virtualAddress != "" && port != 0 { @@ -873,6 +884,7 @@ func createTransportServiceDecl(cfg *ResourceConfig, sharedApp as3Application) { for _, pool := range cfg.Pools { svc.Pool = pool.Name } - + //process irules for crd + processIrulesForCRD(cfg, svc) sharedApp[cfg.Virtual.Name] = svc } diff --git a/pkg/crmanager/nccWorker.go b/pkg/crmanager/nccWorker.go index 8a4f72d29..3472a5a61 100644 --- a/pkg/crmanager/nccWorker.go +++ b/pkg/crmanager/nccWorker.go @@ -226,7 +226,11 @@ func (crMgr *CRManager) syncNginxCisConnector( rsCfg := &ResourceConfig{} rsCfg.Virtual.Partition = crMgr.Partition - rsCfg.MetaData.ResourceType = VirtualServer + rsCfg.MetaData.ResourceType = "TransportServer" + rsCfg.Virtual.Mode = "standard" + rsCfg.Virtual.TranslateServerAddress = true + rsCfg.Virtual.TranslateServerPort = true + rsCfg.Virtual.Source = "0.0.0.0/0" rsCfg.Virtual.Enabled = true rsCfg.Virtual.Name = rsName rsCfg.Virtual.SNAT = DEFAULT_SNAT diff --git a/pkg/crmanager/types.go b/pkg/crmanager/types.go index febc65761..7146ade74 100644 --- a/pkg/crmanager/types.go +++ b/pkg/crmanager/types.go @@ -123,21 +123,24 @@ type ( // Virtual server config Virtual struct { - Name string `json:"name"` - PoolName string `json:"pool,omitempty"` - Partition string `json:"-"` - Destination string `json:"destination"` - Enabled bool `json:"enabled"` - IpProtocol string `json:"ipProtocol,omitempty"` - SourceAddrTranslation SourceAddrTranslation `json:"sourceAddressTranslation,omitempty"` - Policies []nameRef `json:"policies,omitempty"` - Profiles ProfileRefs `json:"profiles,omitempty"` - IRules []string `json:"rules,omitempty"` - Description string `json:"description,omitempty"` - VirtualAddress *virtualAddress `json:"-"` - SNAT string `json:"snat,omitempty"` - WAF string `json:"waf,omitempty"` - Mode string `json:"mode,omitempty"` + Name string `json:"name"` + PoolName string `json:"pool,omitempty"` + Partition string `json:"-"` + Destination string `json:"destination"` + Enabled bool `json:"enabled"` + IpProtocol string `json:"ipProtocol,omitempty"` + SourceAddrTranslation SourceAddrTranslation `json:"sourceAddressTranslation,omitempty"` + Policies []nameRef `json:"policies,omitempty"` + Profiles ProfileRefs `json:"profiles,omitempty"` + IRules []string `json:"rules,omitempty"` + Description string `json:"description,omitempty"` + VirtualAddress *virtualAddress `json:"-"` + SNAT string `json:"snat,omitempty"` + WAF string `json:"waf,omitempty"` + Mode string `json:"mode,omitempty"` + TranslateServerAddress bool `json:"translateServerAddress"` + TranslateServerPort bool `json:"translateServerPort"` + Source string `json:"source,omitempty"` } // Virtuals is slice of virtuals Virtuals []Virtual From fe07d969c32a40cdca50283b747cf6601d7238ba Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Fri, 6 Nov 2020 15:26:12 +0530 Subject: [PATCH 08/23] Added support for multiport services in config-map --- pkg/agent/as3/as3ConfigMap.go | 11 +++++++---- pkg/appmanager/appManager.go | 15 ++++++++++----- pkg/test/configs/as3config_valid_1.json | 4 ++-- pkg/test/configs/as3config_valid_2.json | 4 ++-- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/pkg/agent/as3/as3ConfigMap.go b/pkg/agent/as3/as3ConfigMap.go index 6f8623037..d0195d884 100644 --- a/pkg/agent/as3/as3ConfigMap.go +++ b/pkg/agent/as3/as3ConfigMap.go @@ -166,15 +166,18 @@ func (am *AS3Manager) processCfgMap(rscCfgMap *AgentCfgMap) ( if len(eps) == 0 { continue } - members = append(members, eps...) + poolMem := (((poolObj["members"]).([]interface{}))[0]).(map[string]interface{}) var ips []string + var port int32 for _, v := range eps { - ips = append(ips, v.Address) + if int(v.Port) == int(poolMem["servicePort"].(float64)) { + ips = append(ips, v.Address) + members = append(members, v) + port = v.Port + } } - port := eps[0].Port - poolMem := (((poolObj["members"]).([]interface{}))[0]).(map[string]interface{}) // Replace pool member IP addresses poolMem["serverAddresses"] = ips // Replace port number diff --git a/pkg/appmanager/appManager.go b/pkg/appmanager/appManager.go index d2a78705a..524953c53 100644 --- a/pkg/appmanager/appManager.go +++ b/pkg/appmanager/appManager.go @@ -2505,17 +2505,22 @@ func (m *Manager) getEndpoints(selector, namespace string) []Member { for _, endpoints := range endpointsList.Items { for _, subset := range endpoints.Subsets { for _, address := range subset.Addresses { - member := Member{ - Address: address.IP, - Port: subset.Ports[0].Port, + for _, port := range subset.Ports { + member := Member{ + Address: address.IP, + Port: port.Port, + } + members = append(members, member) } - members = append(members, member) + } } } } else { // Controller is in NodePort mode. if service.Spec.Type == v1.ServiceTypeNodePort { - members = m.getEndpointsForNodePort(service.Spec.Ports[0].NodePort) + for _, port := range service.Spec.Ports { + members = m.getEndpointsForNodePort(port.NodePort) + } } /* else { msg := fmt.Sprintf("[CORE] Requested service backend '%+v' not of NodePort type", service.Name) log.Debug(msg) diff --git a/pkg/test/configs/as3config_valid_1.json b/pkg/test/configs/as3config_valid_1.json index 19b6a2565..d4b42066c 100644 --- a/pkg/test/configs/as3config_valid_1.json +++ b/pkg/test/configs/as3config_valid_1.json @@ -53,7 +53,7 @@ ], "members": [ { - "servicePort": 90, + "servicePort": 80, "serverAddresses": [ ] } @@ -90,7 +90,7 @@ ], "members": [ { - "servicePort": 90, + "servicePort": 80, "serverAddresses": [ ] } diff --git a/pkg/test/configs/as3config_valid_2.json b/pkg/test/configs/as3config_valid_2.json index c6c9bca36..a2f4d96b4 100644 --- a/pkg/test/configs/as3config_valid_2.json +++ b/pkg/test/configs/as3config_valid_2.json @@ -53,7 +53,7 @@ ], "members": [ { - "servicePort": 90, + "servicePort": 80, "serverAddresses": [ ] } @@ -90,7 +90,7 @@ ], "members": [ { - "servicePort": 90, + "servicePort": 80, "serverAddresses": [ ] } From 44293df3cc8fccc1d0330d96fcae7e52fc9633f3 Mon Sep 17 00:00:00 2001 From: Nitin SRIVASTAV Date: Thu, 12 Nov 2020 12:53:15 +0530 Subject: [PATCH 09/23] concurrent read and write --- pkg/appmanager/appManager.go | 4 ++-- pkg/appmanager/profiles.go | 2 ++ pkg/appmanager/validateResources.go | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/appmanager/appManager.go b/pkg/appmanager/appManager.go index 524953c53..dcb0fe46f 100644 --- a/pkg/appmanager/appManager.go +++ b/pkg/appmanager/appManager.go @@ -2311,9 +2311,9 @@ func handleConfigMapParseFailure( } sKey := ServiceKey{serviceName, servicePort, cm.ObjectMeta.Namespace} rsName := FormatConfigMapVSName(cm) + appMgr.resources.Lock() + defer appMgr.resources.Unlock() if _, ok := appMgr.resources.Get(sKey, rsName); ok { - appMgr.resources.Lock() - defer appMgr.resources.Unlock() appMgr.resources.Delete(sKey, rsName) delete(cm.ObjectMeta.Annotations, VsStatusBindAddrAnnotation) appMgr.kubeClient.CoreV1().ConfigMaps(cm.ObjectMeta.Namespace).Update(cm) diff --git a/pkg/appmanager/profiles.go b/pkg/appmanager/profiles.go index 6c00c6e63..f10332dc5 100644 --- a/pkg/appmanager/profiles.go +++ b/pkg/appmanager/profiles.go @@ -429,6 +429,8 @@ func (appMgr *Manager) deleteUnusedProfiles( } // Loop through and delete any profileRefs for cfgs that are // no longer referenced, or have been deleted + appMgr.resources.Lock() + defer appMgr.resources.Unlock() for _, cfg := range appMgr.resources.GetAllResources() { if cfg.MetaData.ResourceType == "iapp" { continue diff --git a/pkg/appmanager/validateResources.go b/pkg/appmanager/validateResources.go index ec091afc5..e9147f3e2 100644 --- a/pkg/appmanager/validateResources.go +++ b/pkg/appmanager/validateResources.go @@ -72,6 +72,8 @@ func (appMgr *Manager) checkValidConfigMap( // time we see a config. rsName := FormatConfigMapVSName(cm) // Checking for annotation in VS, not iApp + appMgr.resources.Lock() + defer appMgr.resources.Unlock() if _, exists := appMgr.resources.GetByName(rsName); !exists && cfg.MetaData.ResourceType != "iapp" && cfg.Virtual.VirtualAddress != nil && From e0b4675e4235985a4cf7f3268d30145080de4147 Mon Sep 17 00:00:00 2001 From: Subba Reddy Veeramreddy Date: Tue, 17 Nov 2020 18:47:53 +0530 Subject: [PATCH 10/23] Improve performance while processing unassociated Services Signed-off-by: Subba Reddy Veeramreddy --- pkg/appmanager/appManager.go | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/pkg/appmanager/appManager.go b/pkg/appmanager/appManager.go index dcb0fe46f..e8b231527 100644 --- a/pkg/appmanager/appManager.go +++ b/pkg/appmanager/appManager.go @@ -1040,20 +1040,28 @@ func (appMgr *Manager) syncConfigMaps( return nil } if nil != svc { - selector := "cis.f5.com/as3-tenant=" + svc.ObjectMeta.Labels["cis.f5.com/as3-tenant"] + "," + - "cis.f5.com/as3-app=" + svc.ObjectMeta.Labels["cis.f5.com/as3-app"] + "," + - "cis.f5.com/as3-pool=" + svc.ObjectMeta.Labels["cis.f5.com/as3-pool"] - //TODO: Sorting endpoints members - members := appMgr.getEndpoints(selector, sKey.Namespace) - if _, ok := appMgr.agentCfgMapEndpoint[key]; !ok { - if len(members) != 0 { - appMgr.agentCfgMapEndpoint[key] = members - stats.vsUpdated += 1 - } - } else { - if len(members) != len(appMgr.agentCfgMapEndpoint[key]) || !reflect.DeepEqual(members, appMgr.agentCfgMapEndpoint[key]) { - stats.vsUpdated += 1 - appMgr.agentCfgMapEndpoint[key] = members + tntLabel, tntOk := svc.ObjectMeta.Labels["cis.f5.com/as3-tenant"] + appLabel, appOk := svc.ObjectMeta.Labels["cis.f5.com/as3-app"] + poolLabel, poolOk := svc.ObjectMeta.Labels["cis.f5.com/as3-pool"] + + // A service can be considered as an as3 configmap associated service only when it has these 3 labels + if tntOk && appOk && poolOk { + key := sKey.Namespace + "/" + sKey.ServiceName + selector := "cis.f5.com/as3-tenant=" + tntLabel + "," + + "cis.f5.com/as3-app=" + appLabel + "," + + "cis.f5.com/as3-pool=" + poolLabel + //TODO: Sorting endpoints members + members := appMgr.getEndpoints(selector, sKey.Namespace) + if _, ok := appMgr.agentCfgMapEndpoint[key]; !ok { + if len(members) != 0 { + appMgr.agentCfgMapEndpoint[key] = members + stats.vsUpdated += 1 + } + } else { + if len(members) != len(appMgr.agentCfgMapEndpoint[key]) || !reflect.DeepEqual(members, appMgr.agentCfgMapEndpoint[key]) { + stats.vsUpdated += 1 + appMgr.agentCfgMapEndpoint[key] = members + } } } } From 3185b086b2f59fb84d9c8c8bd445ef6b9545642d Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Tue, 17 Nov 2020 21:38:22 +0530 Subject: [PATCH 11/23] Fix CIS crash when kubernetes api services are exposed --- pkg/appmanager/appManager.go | 53 ++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/pkg/appmanager/appManager.go b/pkg/appmanager/appManager.go index e8b231527..ec6cecce9 100644 --- a/pkg/appmanager/appManager.go +++ b/pkg/appmanager/appManager.go @@ -1853,12 +1853,16 @@ func (appMgr *Manager) handleConfigForType( var reason string var msg string - if appMgr.IsNodePort() { - correctBackend, reason, msg = - appMgr.updatePoolMembersForNodePort(svc, svcKey, rsCfg, plIdx) + if svc.ObjectMeta.Labels["component"] == "apiserver" && svc.ObjectMeta.Labels["provider"] == "kubernetes" { + appMgr.exposeKubernetesService(svc, svcKey, rsCfg, appInf, plIdx) } else { - correctBackend, reason, msg = - appMgr.updatePoolMembersForCluster(svc, svcKey, rsCfg, appInf, plIdx) + if appMgr.IsNodePort() { + correctBackend, reason, msg = + appMgr.updatePoolMembersForNodePort(svc, svcKey, rsCfg, plIdx) + } else { + correctBackend, reason, msg = + appMgr.updatePoolMembersForCluster(svc, svcKey, rsCfg, appInf, plIdx) + } } // This will only update the config if the vs actually changed. @@ -2538,3 +2542,42 @@ func (m *Manager) getEndpoints(selector, namespace string) []Member { return members } + +func (appMgr *Manager) exposeKubernetesService( + svc *v1.Service, + sKey ServiceKey, + rsCfg *ResourceConfig, + appInf *appInformer, + index int, +) (bool, string, string) { + svcKey := sKey.Namespace + "/" + sKey.ServiceName + item, found, _ := appInf.endptInformer.GetStore().GetByKey(svcKey) + if !found { + msg := fmt.Sprintf("Endpoints for service '%v' not found!", svcKey) + log.Debug(msg) + return false, "EndpointsNotFound", msg + } + eps, _ := item.(*v1.Endpoints) + for _, portSpec := range svc.Spec.Ports { + if portSpec.Port == sKey.ServicePort { + var members []Member + for _, subset := range eps.Subsets { + for _, p := range subset.Ports { + if portSpec.Name == p.Name { + for _, addr := range subset.Addresses { + member := Member{ + Address: addr.IP, + Port: p.Port, + } + members = append(members, member) + } + } + } + } + log.Debugf("[CORE] Found endpoints for backend %+v: %v", sKey, members) + rsCfg.MetaData.Active = true + rsCfg.Pools[index].Members = members + } + } + return true, "", "" +} From 92dddd629f62e0d0ce2b5610a04babff6615a175 Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Thu, 29 Oct 2020 12:07:08 +0530 Subject: [PATCH 12/23] Operator new format --- operator/manifest/f5-bundle.zip | Bin 84112 -> 0 bytes ...r-operator.v1.3.0.clusterserviceversion.yaml | 1 - .../manifests}/f5bigipctlrs.cis.f5.com.crd.yaml | 0 .../1.3.0/metadata/annotations.yaml | 7 +++++++ .../new-f5-bundle/bundle-1.3.0.Dockerfile | 14 ++++++++++++++ .../manifest/new-f5-bundle/new-f5-bundle.zip | Bin 0 -> 85041 bytes 6 files changed, 21 insertions(+), 1 deletion(-) delete mode 100644 operator/manifest/f5-bundle.zip rename operator/manifest/{f5-bundle/1.3.0 => new-f5-bundle/1.3.0/manifests}/f5-bigip-ctlr-operator.v1.3.0.clusterserviceversion.yaml (99%) rename operator/manifest/{f5-bundle/1.3.0 => new-f5-bundle/1.3.0/manifests}/f5bigipctlrs.cis.f5.com.crd.yaml (100%) create mode 100644 operator/manifest/new-f5-bundle/1.3.0/metadata/annotations.yaml create mode 100644 operator/manifest/new-f5-bundle/bundle-1.3.0.Dockerfile create mode 100644 operator/manifest/new-f5-bundle/new-f5-bundle.zip diff --git a/operator/manifest/f5-bundle.zip b/operator/manifest/f5-bundle.zip deleted file mode 100644 index a2b001e31f13302d81e0b3609902b570e99957fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84112 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 `NI+3{BNP-5fIa%2EpRG>1{i#pkq64^AhL{s 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 Snsd1XbV`c>fb90UeE$PYc9{SG literal 0 HcmV?d00001 From 3c956331f3da5789a0f3507e3dabc187a86323d9 Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Mon, 23 Nov 2020 16:20:12 +0530 Subject: [PATCH 13/23] Added new cli parameters for external gtm --- cmd/k8s-bigip-ctlr/main.go | 98 ++++++++++++++++++++++++++++++++--- pkg/crmanager/backend.go | 7 +++ pkg/crmanager/postManager.go | 6 +++ pkg/crmanager/pythonDriver.go | 8 +-- pkg/crmanager/types.go | 7 +++ 5 files changed, 117 insertions(+), 9 deletions(-) diff --git a/cmd/k8s-bigip-ctlr/main.go b/cmd/k8s-bigip-ctlr/main.go index 6e9aff3e3..58b00545d 100644 --- a/cmd/k8s-bigip-ctlr/main.go +++ b/cmd/k8s-bigip-ctlr/main.go @@ -99,12 +99,13 @@ var ( buildInfo string // Flag sets and supported flags - flags *pflag.FlagSet - globalFlags *pflag.FlagSet - bigIPFlags *pflag.FlagSet - kubeFlags *pflag.FlagSet - vxlanFlags *pflag.FlagSet - osRouteFlags *pflag.FlagSet + flags *pflag.FlagSet + globalFlags *pflag.FlagSet + bigIPFlags *pflag.FlagSet + kubeFlags *pflag.FlagSet + vxlanFlags *pflag.FlagSet + osRouteFlags *pflag.FlagSet + gtmBigIPFlags *pflag.FlagSet // Custom Resource customResourceMode *bool @@ -167,6 +168,11 @@ var ( clientSSL *string serverSSL *string + gtmBigIPURL *string + gtmBigIPUsername *string + gtmBigIPPassword *string + gtmCredsDir *string + // package variables isNodePort bool watchAllNamespaces bool @@ -185,6 +191,7 @@ func _init() { kubeFlags = pflag.NewFlagSet("Kubernetes", pflag.PanicOnError) vxlanFlags = pflag.NewFlagSet("VXLAN", pflag.PanicOnError) osRouteFlags = pflag.NewFlagSet("OpenShift Routes", pflag.PanicOnError) + gtmBigIPFlags = pflag.NewFlagSet("GTM", pflag.PanicOnError) // Flag wrapping var err error @@ -356,11 +363,26 @@ func _init() { fmt.Fprintf(os.Stderr, " Openshift Routes:\n%s\n", osRouteFlags.FlagUsagesWrapped(width)) } + // GTM Big IP flags + gtmBigIPURL = gtmBigIPFlags.String("gtm-bigip-url", "", + "Optional, URL for the GTM Big-IP") + gtmBigIPUsername = gtmBigIPFlags.String("gtm-bigip-username", "", + "Optional, user name for the GTM Big-IP user account.") + gtmBigIPPassword = gtmBigIPFlags.String("gtm-bigip-password", "", + "Optional, password for the GMT Big-IP user account.") + gtmCredsDir = gtmBigIPFlags.String("gtm-credentials-directory", "", + "Optional, directory that contains the GTM BIG-IP username, password, and/or "+ + "url files. To be used instead of username, password, and/or url arguments.") + gtmBigIPFlags.Usage = func() { + fmt.Fprintf(os.Stderr, " GTM:\n%s\n", gtmBigIPFlags.FlagUsagesWrapped(width)) + } + flags.AddFlagSet(globalFlags) flags.AddFlagSet(bigIPFlags) flags.AddFlagSet(kubeFlags) flags.AddFlagSet(vxlanFlags) flags.AddFlagSet(osRouteFlags) + flags.AddFlagSet(gtmBigIPFlags) flags.Usage = func() { fmt.Fprintf(os.Stderr, "Usage of %s\n", os.Args[0]) @@ -369,6 +391,7 @@ func _init() { kubeFlags.Usage() vxlanFlags.Usage() osRouteFlags.Usage() + gtmBigIPFlags.Usage() } } @@ -548,6 +571,61 @@ func getCredentials() error { return nil } +func getGTMCredentials() { + if len(*gtmCredsDir) > 0 { + var usr, pass, gtmBigipURL string + if strings.HasSuffix(*gtmCredsDir, "/") { + usr = *gtmCredsDir + "username" + pass = *gtmCredsDir + "password" + gtmBigipURL = *gtmCredsDir + "url" + } else { + usr = *gtmCredsDir + "/username" + pass = *gtmCredsDir + "/password" + gtmBigipURL = *gtmCredsDir + "/url" + } + + setField := func(field *string, filename, fieldType string) { + fileBytes, readErr := ioutil.ReadFile(filename) + if readErr != nil { + log.Debug(fmt.Sprintf( + "No %s in credentials directory, falling back to CLI argument", fieldType)) + if len(*field) == 0 { + log.Errorf(fmt.Sprintf("GTM BIG-IP %s not specified", fieldType)) + } + } else { + *field = string(fileBytes) + } + } + + setField(gtmBigIPUsername, usr, "username") + setField(gtmBigIPPassword, pass, "password") + setField(gtmBigIPURL, gtmBigipURL, "url") + } + // Verify URL is valid + u, err := url.Parse(*gtmBigIPURL) + if nil != err { + log.Errorf("Error parsing url: %s", err) + } + + if len(u.Scheme) == 0 { + *gtmBigIPURL = "https://" + *gtmBigIPURL + u, err = url.Parse(*gtmBigIPURL) + if nil != err { + log.Errorf("Error parsing url: %s", err) + } + } + + if u.Scheme != "https" { + log.Errorf("Invalid GTM BIGIP-URL protocol: '%s' - Must be 'https'", + u.Scheme) + } + + if len(u.Path) > 0 && u.Path != "/" { + log.Errorf("GTM BIGIP-URL path must be empty or '/'; check URL formatting and/or remove %s from path", + u.Path) + } +} + func setupNodePolling( appMgr *appmanager.Manager, np pollers.Poller, @@ -669,8 +747,15 @@ func initCustomResourceManager( LogResponse: *logAS3Response, } + GtmParams := crmanager.GTMParams{ + GTMBigIpUsername: *gtmBigIPUsername, + GTMBigIpPassword: *gtmBigIPPassword, + GTMBigIpUrl: *gtmBigIPURL, + } + agentParams := crmanager.AgentParams{ PostParams: postMgrParams, + GTMParams: GtmParams, Partition: (*bigIPPartitions)[0], LogLevel: *logLevel, VerifyInterval: *verifyInterval, @@ -774,6 +859,7 @@ func main() { } if *customResourceMode || *nginxCISConnectMode { + getGTMCredentials() crMgr := initCustomResourceManager(config) err = crMgr.Agent.GetBigipAS3Version() if err != nil { diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index 8722e0231..eef177b1e 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -94,9 +94,16 @@ func NewAgent(params AgentParams) *Agent { BigIPPartitions: []string{params.Partition}, } + gtm := gtmBigIPSection{ + GtmBigIPUsername: params.GTMParams.GTMBigIpUsername, + GtmBigIPPassword: params.GTMParams.GTMBigIpPassword, + GtmBigIPURL: params.GTMParams.GTMBigIpUrl, + } + agent.startPythonDriver( gs, bs, + gtm, params.PythonBaseDir, ) diff --git a/pkg/crmanager/postManager.go b/pkg/crmanager/postManager.go index 9916587c2..350016ec0 100644 --- a/pkg/crmanager/postManager.go +++ b/pkg/crmanager/postManager.go @@ -54,6 +54,12 @@ type PostParams struct { LogResponse bool } +type GTMParams struct { + GTMBigIpUsername string + GTMBigIpPassword string + GTMBigIpUrl string +} + type config struct { data string routesMap map[string][]string diff --git a/pkg/crmanager/pythonDriver.go b/pkg/crmanager/pythonDriver.go index 1037929d4..011213170 100644 --- a/pkg/crmanager/pythonDriver.go +++ b/pkg/crmanager/pythonDriver.go @@ -36,13 +36,14 @@ func initializeDriverConfig( configWriter writer.Writer, global globalSection, bigIP bigIPSection, + gtm gtmBigIPSection, ) error { if nil == configWriter { return fmt.Errorf("config writer argument cannot be nil") } - sectionNames := []string{"global", "bigip"} - for i, v := range []interface{}{global, bigIP} { + sectionNames := []string{"global", "bigip", "gtm_bigip"} + for i, v := range []interface{}{global, bigIP, gtm} { doneCh, errCh, err := configWriter.SendSection(sectionNames[i], v) if nil != err { return fmt.Errorf("failed writing global config section: %v", err) @@ -139,11 +140,12 @@ func runBigIPDriver(pid chan<- int, cmd *exec.Cmd) { func (agent *Agent) startPythonDriver( global globalSection, bigIP bigIPSection, + gtmBigIP gtmBigIPSection, pythonBaseDir string, ) { var pyCmd string - err := initializeDriverConfig(agent.ConfigWriter, global, bigIP) + err := initializeDriverConfig(agent.ConfigWriter, global, bigIP, gtmBigIP) if nil != err { log.Fatalf("Could not initialize subprocess configuration: %v", err) return diff --git a/pkg/crmanager/types.go b/pkg/crmanager/types.go index 7146ade74..acb7c147c 100644 --- a/pkg/crmanager/types.go +++ b/pkg/crmanager/types.go @@ -380,6 +380,7 @@ type ( AgentParams struct { PostParams PostParams + GTMParams GTMParams //VxlnParams VXLANParams Partition string LogLevel string @@ -404,6 +405,12 @@ type ( BigIPPartitions []string `json:"partitions,omitempty"` } + gtmBigIPSection struct { + GtmBigIPUsername string `json:"username,omitempty"` + GtmBigIPPassword string `json:"password,omitempty"` + GtmBigIPURL string `json:"url,omitempty"` + } + as3Template string as3Declaration string From 3e4628441fa5a631bfce3a17fab395f565df145e Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Tue, 24 Nov 2020 12:00:36 +0530 Subject: [PATCH 14/23] Discovery member log --- pkg/appmanager/appManager.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/appmanager/appManager.go b/pkg/appmanager/appManager.go index ec6cecce9..caad93966 100644 --- a/pkg/appmanager/appManager.go +++ b/pkg/appmanager/appManager.go @@ -1056,11 +1056,13 @@ func (appMgr *Manager) syncConfigMaps( if len(members) != 0 { appMgr.agentCfgMapEndpoint[key] = members stats.vsUpdated += 1 + log.Debugf("[CORE] Discovered members for service %v is %v", key, members) } } else { if len(members) != len(appMgr.agentCfgMapEndpoint[key]) || !reflect.DeepEqual(members, appMgr.agentCfgMapEndpoint[key]) { stats.vsUpdated += 1 appMgr.agentCfgMapEndpoint[key] = members + log.Debugf("[CORE] Discovered members for service %v is %v", key, members) } } } @@ -2539,7 +2541,6 @@ func (m *Manager) getEndpoints(selector, namespace string) []Member { }*/ } } - return members } From 9cabb40dc8c65add14a8badec8c3f3f7c14f708a Mon Sep 17 00:00:00 2001 From: Nitin SRIVASTAV Date: Wed, 25 Nov 2020 21:16:18 +0530 Subject: [PATCH 15/23] redirect termination fix for crd --- pkg/crmanager/backend.go | 8 ++++---- pkg/crmanager/resourceConfig.go | 3 --- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index eef177b1e..357f293eb 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -407,11 +407,11 @@ func processIrulesForCRD(cfg *ResourceConfig, svc *as3Service) { iRuleName := splits[len(splits)-1] matched := false var IRules []interface{} - for _, b := range IRuleList { - if iRuleName == b { - matched = true - } + iRuleNoPort := iRuleName[:strings.LastIndex(iRuleName, "_")] + if iRuleNoPort == HttpRedirectIRuleName || iRuleName == HttpRedirectNoHostIRuleName+"_"+fmt.Sprint(svc.VirtualPort) || iRuleName == SslPassthroughIRuleName { + matched = true } + if matched { if iRuleName == SslPassthroughIRuleName { svc.ServerTLS = &as3ResourcePointer{ diff --git a/pkg/crmanager/resourceConfig.go b/pkg/crmanager/resourceConfig.go index d2caada96..a4052e11c 100644 --- a/pkg/crmanager/resourceConfig.go +++ b/pkg/crmanager/resourceConfig.go @@ -126,9 +126,6 @@ const ( SslPassthroughIRuleName = "passthrough_irule" ) -// Irule list -var IRuleList = [...]string{SslPassthroughIRuleName, HttpRedirectNoHostIRuleName, HttpRedirectIRuleName} - // constants for TLS references const ( // reference for profiles stored in BIG-IP From 7a337995ca8ccabb07b1a3d2949b26672e8ad686 Mon Sep 17 00:00:00 2001 From: Nitin SRIVASTAV Date: Fri, 27 Nov 2020 11:54:27 +0530 Subject: [PATCH 16/23] hostless crd fix --- pkg/crmanager/backend.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index 357f293eb..35019e1ce 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -408,7 +408,7 @@ func processIrulesForCRD(cfg *ResourceConfig, svc *as3Service) { matched := false var IRules []interface{} iRuleNoPort := iRuleName[:strings.LastIndex(iRuleName, "_")] - if iRuleNoPort == HttpRedirectIRuleName || iRuleName == HttpRedirectNoHostIRuleName+"_"+fmt.Sprint(svc.VirtualPort) || iRuleName == SslPassthroughIRuleName { + if iRuleNoPort == HttpRedirectIRuleName || iRuleNoPort == HttpRedirectNoHostIRuleName || iRuleName == SslPassthroughIRuleName { matched = true } From 88bf5919254dae555f79bdd8cb486c49a3765ee5 Mon Sep 17 00:00:00 2001 From: agupta49 Date: Thu, 19 Nov 2020 16:22:34 +0530 Subject: [PATCH 17/23] Added new AS3 3.24.0 Schema validation --- build-tools/Dockerfile.debian.runtime | 2 +- build-tools/Dockerfile.debug.runtime | 2 +- build-tools/Dockerfile.rhel7.runtime | 2 +- build-tools/build-release-images.sh | 2 +- pkg/agent/as3/as3Manager.go | 8 +- pkg/agent/as3/as3Manager_test.go | 4 +- .../configs/as3_route_cfgmap_declaration.json | 4 +- pkg/test/configs/as3_route_declaration.json | 4 +- .../as3_route_declaration_overridden.json | 4 +- .../configs/as3config_multi_cm_unified.json | 4 +- ...-cis.json => as3-schema-3.24.0-5-cis.json} | 136 +++++++++++++++++- 11 files changed, 152 insertions(+), 20 deletions(-) rename schemas/{as3-schema-3.23.0-5-cis.json => as3-schema-3.24.0-5-cis.json} (99%) diff --git a/build-tools/Dockerfile.debian.runtime b/build-tools/Dockerfile.debian.runtime index ba6a3f12b..d7540afeb 100755 --- a/build-tools/Dockerfile.debian.runtime +++ b/build-tools/Dockerfile.debian.runtime @@ -21,7 +21,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get remove -y libidn11 COPY bigip-virtual-server_v*.json $APPPATH/vendor/src/f5/schemas/ -COPY as3-schema-3.23.0-5-cis.json $APPPATH/vendor/src/f5/schemas/ +COPY as3-schema-3.24.0-5-cis.json $APPPATH/vendor/src/f5/schemas/ COPY k8s-bigip-ctlr $APPPATH/bin COPY VERSION_BUILD.json $APPPATH/vendor/src/f5/ diff --git a/build-tools/Dockerfile.debug.runtime b/build-tools/Dockerfile.debug.runtime index 3d6eb06c6..5227a491e 100644 --- a/build-tools/Dockerfile.debug.runtime +++ b/build-tools/Dockerfile.debug.runtime @@ -26,7 +26,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get remove -y libidn11 COPY bigip-virtual-server_v*.json $APPPATH/vendor/src/f5/schemas/ -COPY as3-schema-3.23.0-5-cis.json $APPPATH/vendor/src/f5/schemas/ +COPY as3-schema-3.24.0-5-cis.json $APPPATH/vendor/src/f5/schemas/ COPY k8s-bigip-ctlr $APPPATH/bin COPY VERSION_BUILD.json $APPPATH/vendor/src/f5/ COPY --from=builder /go/bin/dlv /app/bin diff --git a/build-tools/Dockerfile.rhel7.runtime b/build-tools/Dockerfile.rhel7.runtime index 32a77bc02..9388e1359 100644 --- a/build-tools/Dockerfile.rhel7.runtime +++ b/build-tools/Dockerfile.rhel7.runtime @@ -39,7 +39,7 @@ RUN microdnf --enablerepo=rhel-7-server-rpms --enablerepo=rhel-7-server-optional microdnf clean all COPY bigip-virtual-server_v*.json $APPPATH/vendor/src/f5/schemas/ -COPY as3-schema-3.23.0-5-cis.json $APPPATH/vendor/src/f5/schemas/ +COPY as3-schema-3.24.0-5-cis.json $APPPATH/vendor/src/f5/schemas/ COPY k8s-bigip-ctlr $APPPATH/bin/k8s-bigip-ctlr.real COPY VERSION_BUILD.json $APPPATH/vendor/src/f5/ diff --git a/build-tools/build-release-images.sh b/build-tools/build-release-images.sh index ee0c62d43..bb71c3fb1 100755 --- a/build-tools/build-release-images.sh +++ b/build-tools/build-release-images.sh @@ -36,7 +36,7 @@ docker rm -f cp-temp cp requirements.txt $WKDIR/ cp schemas/bigip-virtual-server_v*.json $WKDIR/ -cp schemas/as3-schema-3.23.0-5-cis.json $WKDIR/ +cp schemas/as3-schema-3.24.0-5-cis.json $WKDIR/ cp LICENSE $WKDIR/ cp $CURDIR/help.md $WKDIR/help.md echo "{\"version\": \"${VERSION_INFO}\", \"build\": \"${BUILD_INFO}\"}" \ diff --git a/pkg/agent/as3/as3Manager.go b/pkg/agent/as3/as3Manager.go index cc29d9d71..33733ee8d 100644 --- a/pkg/agent/as3/as3Manager.go +++ b/pkg/agent/as3/as3Manager.go @@ -34,9 +34,9 @@ const ( svcAppLabel = "cis.f5.com/as3-app=" svcPoolLabel = "cis.f5.com/as3-pool=" as3SupportedVersion = 3.18 - //Update as3Version,defaultAS3Version,defaultAS3Build while updating AS3 validation schema - as3Version = 3.23 - defaultAS3Version = "3.23.0" + //Update as3Version,defaultAS3Version,defaultAS3Build while updating AS3 validation schema. + as3Version = 3.24 + defaultAS3Version = "3.24.0" defaultAS3Build = "5" as3tenant = "Tenant" as3class = "class" @@ -45,7 +45,7 @@ const ( as3shared = "shared" as3template = "template" //as3SchemaLatestURL = "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/latest/as3-schema.json" - as3SchemaFileName = "as3-schema-3.23.0-5-cis.json" + as3SchemaFileName = "as3-schema-3.24.0-5-cis.json" ) var baseAS3Config = `{ diff --git a/pkg/agent/as3/as3Manager_test.go b/pkg/agent/as3/as3Manager_test.go index a229a2b18..68adcc6b4 100644 --- a/pkg/agent/as3/as3Manager_test.go +++ b/pkg/agent/as3/as3Manager_test.go @@ -46,8 +46,8 @@ var _ = Describe("AS3Manager Tests", func() { var mockMgr *mockAS3Manager BeforeEach(func() { mockMgr = newMockAS3Manager(&Params{ - As3Version: "3.23.0", - As3Release: "3.23.0-5", + As3Version: "3.24.0", + As3Release: "3.24.0-5", }) }) AfterEach(func() { diff --git a/pkg/test/configs/as3_route_cfgmap_declaration.json b/pkg/test/configs/as3_route_cfgmap_declaration.json index 3019fe611..26ea71dc6 100644 --- a/pkg/test/configs/as3_route_cfgmap_declaration.json +++ b/pkg/test/configs/as3_route_cfgmap_declaration.json @@ -1,9 +1,9 @@ { - "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.23.0/as3-schema-3.23.0-5.json", + "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.24.0/as3-schema-3.24.0-5.json", "class": "AS3", "declaration": { "class": "ADC", - "schemaVersion": "3.23.0", + "schemaVersion": "3.24.0", "id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d", "label": "CIS Declaration", "remark": "Auto-generated by CIS", diff --git a/pkg/test/configs/as3_route_declaration.json b/pkg/test/configs/as3_route_declaration.json index 43b432526..f9ee333df 100644 --- a/pkg/test/configs/as3_route_declaration.json +++ b/pkg/test/configs/as3_route_declaration.json @@ -1,9 +1,9 @@ { - "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.23.0/as3-schema-3.23.0-5.json", + "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.24.0/as3-schema-3.24.0-5.json", "class": "AS3", "declaration": { "class": "ADC", - "schemaVersion": "3.23.0", + "schemaVersion": "3.24.0", "id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d", "label": "CIS Declaration", "remark": "Auto-generated by CIS", diff --git a/pkg/test/configs/as3_route_declaration_overridden.json b/pkg/test/configs/as3_route_declaration_overridden.json index 2cee989d3..d8dff2dd6 100644 --- a/pkg/test/configs/as3_route_declaration_overridden.json +++ b/pkg/test/configs/as3_route_declaration_overridden.json @@ -1,9 +1,9 @@ { - "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.23.0/as3-schema-3.23.0-5.json", + "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.24.0/as3-schema-3.24.0-5.json", "class": "AS3", "declaration": { "class": "ADC", - "schemaVersion": "3.23.0", + "schemaVersion": "3.24.0", "id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d", "label": "CIS Declaration", "remark": "Auto-generated by CIS", diff --git a/pkg/test/configs/as3config_multi_cm_unified.json b/pkg/test/configs/as3config_multi_cm_unified.json index 572926ca0..d21ec8600 100644 --- a/pkg/test/configs/as3config_multi_cm_unified.json +++ b/pkg/test/configs/as3config_multi_cm_unified.json @@ -1,9 +1,9 @@ { - "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.23.0/as3-schema-3.23.0-5.json", + "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.24.0/as3-schema-3.24.0-5.json", "class": "AS3", "declaration": { "class": "ADC", - "schemaVersion": "3.23.0", + "schemaVersion": "3.24.0", "id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d", "label": "CIS Declaration", "remark": "Auto-generated by CIS", diff --git a/schemas/as3-schema-3.23.0-5-cis.json b/schemas/as3-schema-3.24.0-5-cis.json similarity index 99% rename from schemas/as3-schema-3.23.0-5-cis.json rename to schemas/as3-schema-3.24.0-5-cis.json index 44578d49c..53dd49ca7 100644 --- a/schemas/as3-schema-3.23.0-5-cis.json +++ b/schemas/as3-schema-3.24.0-5-cis.json @@ -119,6 +119,11 @@ "type": "string", "const": "AS3" }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, "action": { "title": "Action", "description": "Indicates desired action: 'deploy' means deploy the included declaration to targetHost; 'dry-run' does NOT deploy the declaration but does do everything short of changing targetHost's configuration; 'patch' modifies the declaration based on the provided set of commands and then deploys the updated declaration; 'redeploy' causes an old declaration from targetHost's declaration history to be re-deployed (property redeployAge (default 0) selects the old declaration, and note redeployUpdateMode as well); 'retrieve' returns a copy of a previously-deployed declaration; 'remove' deletes the declaration or declaration component.", @@ -2128,6 +2133,15 @@ "$ref": "#/definitions/Pointer_HTTP2_Profile" } ] + }, + "egress": { + "type": "object", + "description": "Egress (server-side context) HTTP2 profile. This option is only available on BIG-IP 14.1+.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_HTTP2_Profile" + } + ] } }, "minProperties": 1, @@ -2286,6 +2300,18 @@ "$ref": "#/definitions/Pointer_Per_Request_Access_Policy" } ] + }, + "profileVdi": { + "title": "VDI profile", + "description": "VDI profile to attach to servie.", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_VDI_Profile" + } + ] } }, "allOf": [ @@ -3755,6 +3781,12 @@ "type": "boolean", "default": false }, + "httpMrfRoutingEnabled": { + "title": "HTTP MRF Router", + "description": "Specifies whether to use the HTTP message routing framework (MRF) functionality. Note: This is available in TMOS versions 14.1 and later.", + "type": "boolean", + "default": false + }, "persistenceMethods": { "title": "Persistence method(s)", "description": "List of persistence methods (each by name or AS3 pointer). Element 0 is primary (default) persistence method. Use 'persistenceMethods: []' for no persistence.", @@ -5344,6 +5376,19 @@ "type": "integer", "minimum": 0, "default": 5 + }, + "fqdnPrefix": { + "description": "String to prepend onto the hostname to create the node name", + "type": "string", + "oneOf": [ + { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$" + }, + { + "const": "" + } + ], + "default": "" } }, "if": { @@ -5990,6 +6035,11 @@ "description": "If true, the server certificate is verified against the list of supplied/default CAs when making requests to the Consul API.", "type": "boolean", "default": true + }, + "jmesPathQuery": { + "title": "JMESPath Query", + "type": "string", + "description": "Custom JMESPath Query" } }, "if": { @@ -6425,6 +6475,14 @@ "type": "string", "default": "", "f5expand": true + }, + "environmentVariables": { + "description": "Specifies user defined command line parameters that the external program requires.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} } }, "oneOf": [ @@ -18040,6 +18098,26 @@ "default": 1, "minimum": 0, "maximum": 65535 + }, + "dependsOn": { + "description": "Specifies the name of the virtual server on which this pool member depends.", + "type": [ + "string", + "array" + ], + "oneOf": [ + { + "type": "string", + "const": "none" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^/Common/Shared/.*:.*" + } + } + ] } }, "additionalProperties": false, @@ -18073,6 +18151,26 @@ "default": 1, "minimum": 0, "maximum": 65535 + }, + "dependsOn": { + "description": "Specifies the name of the virtual server on which this pool member depends.", + "type": [ + "string", + "array" + ], + "oneOf": [ + { + "type": "string", + "const": "none" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^/Common/Shared/.*:.*" + } + } + ] } }, "additionalProperties": false, @@ -28726,6 +28824,25 @@ } ] }, + "Pointer_VDI_Profile": { + "description": "Reference to a VDI profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP VDI profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm profile vdi" + } + ] + }, "Pointer_VLAN": { "description": "Reference to a VLAN", "type": "object", @@ -28794,6 +28911,11 @@ "type": "string", "const": "ADC" }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, "updateMode": { "title": "Update mode", "description": "When set to 'selective' (default) AS3 does not modify Tenants not referenced in the declaration. Otherwise ('complete') AS3 removes unreferenced Tenants.", @@ -28810,6 +28932,7 @@ "type": "string", "$comment": "IMPORTANT: In enum array, please put current schema version first, oldest-supported version last. Keep enum array sorted most-recent-first.", "enum": [ + "3.24.0", "3.23.0", "3.22.0", "3.21.0", @@ -29051,8 +29174,17 @@ "$ref": "#/definitions/Tenant" }, "propertyNames": { - "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$", - "maxLength": 190 + "oneOf": [ + { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$", + "maxLength": 190 + }, + { + "enum": [ + "$schema" + ] + } + ] }, "required": [ "class", From 683e34ab027e4294a528db41d47d05013605440f Mon Sep 17 00:00:00 2001 From: Vivek Lohiya Date: Mon, 30 Nov 2020 12:29:37 +0530 Subject: [PATCH 18/23] Added validation for GTM parameters --- pkg/crmanager/backend.go | 13 +++++++++---- pkg/crmanager/pythonDriver.go | 15 +++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index 35019e1ce..103182d78 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -94,10 +94,15 @@ func NewAgent(params AgentParams) *Agent { BigIPPartitions: []string{params.Partition}, } - gtm := gtmBigIPSection{ - GtmBigIPUsername: params.GTMParams.GTMBigIpUsername, - GtmBigIPPassword: params.GTMParams.GTMBigIpPassword, - GtmBigIPURL: params.GTMParams.GTMBigIpUrl, + var gtm gtmBigIPSection + if len(params.GTMParams.GTMBigIpUsername) == 0 || len(params.GTMParams.GTMBigIpPassword) == 0 || len(params.GTMParams.GTMBigIpUrl) == 0 { + gs.GTM = false + } else { + gtm = gtmBigIPSection{ + GtmBigIPUsername: params.GTMParams.GTMBigIpUsername, + GtmBigIPPassword: params.GTMParams.GTMBigIpPassword, + GtmBigIPURL: params.GTMParams.GTMBigIpUrl, + } } agent.startPythonDriver( diff --git a/pkg/crmanager/pythonDriver.go b/pkg/crmanager/pythonDriver.go index 011213170..eadf1c666 100644 --- a/pkg/crmanager/pythonDriver.go +++ b/pkg/crmanager/pythonDriver.go @@ -42,9 +42,16 @@ func initializeDriverConfig( return fmt.Errorf("config writer argument cannot be nil") } - sectionNames := []string{"global", "bigip", "gtm_bigip"} - for i, v := range []interface{}{global, bigIP, gtm} { - doneCh, errCh, err := configWriter.SendSection(sectionNames[i], v) + sections := make(map[string]interface{}) + + sections["global"] = global + sections["bigip"] = bigIP + if global.GTM { + sections["gtm_bigip"] = gtm + } + + for k, v := range sections { + doneCh, errCh, err := configWriter.SendSection(k, v) if nil != err { return fmt.Errorf("failed writing global config section: %v", err) } @@ -52,7 +59,7 @@ func initializeDriverConfig( case <-doneCh: case e := <-errCh: return fmt.Errorf("failed writing section %s - %v: %v", - sectionNames[i], e, v) + k, e, v) case <-time.After(1000 * time.Millisecond): log.Warning("Did not receive config write response in 1 second") } From 0671e1e6dfa963f9ff7fa58d7e7c1107c8b05b89 Mon Sep 17 00:00:00 2001 From: Subba Reddy Veeramreddy Date: Wed, 25 Nov 2020 11:19:11 +0530 Subject: [PATCH 19/23] Add UPDATE and DELETE support for CRD ExternalDNS Signed-off-by: Subba Reddy Veeramreddy --- pkg/crmanager/backend.go | 4 ---- pkg/crmanager/informers.go | 45 ++++++++++++++++++++++++++++++++++++-- pkg/crmanager/worker.go | 10 ++++++--- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/pkg/crmanager/backend.go b/pkg/crmanager/backend.go index 103182d78..292043c3d 100644 --- a/pkg/crmanager/backend.go +++ b/pkg/crmanager/backend.go @@ -158,10 +158,6 @@ func (agent Agent) PostGTMConfig(config ResourceConfigWrapper) { wideIPs.WideIPs = append(wideIPs.WideIPs, v) } - if len(wideIPs.WideIPs) == 0 { - return - } - // TODO: Need to change to DEFAULT_PARTITION from Common, once Agent starts to support DEFAULT_PARTITION dnsConfig["Common"] = wideIPs diff --git a/pkg/crmanager/informers.go b/pkg/crmanager/informers.go index 84923d45c..d94d9ef2c 100644 --- a/pkg/crmanager/informers.go +++ b/pkg/crmanager/informers.go @@ -236,8 +236,8 @@ func (crMgr *CRManager) addEventHandlers(crInf *CRInformer) { crInf.ednsInformer.AddEventHandler( &cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { crMgr.enqueueExternalDNS(obj) }, - UpdateFunc: func(oldObj, newObj interface{}) { crMgr.enqueueExternalDNS(newObj) }, - // DeleteFunc: nil, + UpdateFunc: func(oldObj, newObj interface{}) { crMgr.enqueueUpdatedExternalDNS(oldObj, newObj) }, + DeleteFunc: func(obj interface{}) { crMgr.enqueueDeletedExternalDNS(obj) }, }) } @@ -471,6 +471,47 @@ func (crMgr *CRManager) enqueueExternalDNS(obj interface{}) { crMgr.rscQueue.Add(key) } +func (crMgr *CRManager) enqueueUpdatedExternalDNS(oldObj, newObj interface{}) { + oldEDNS := oldObj.(*cisapiv1.ExternalDNS) + edns := newObj.(*cisapiv1.ExternalDNS) + + if oldEDNS.Spec.DomainName != edns.Spec.DomainName { + key := &rqKey{ + namespace: oldEDNS.ObjectMeta.Namespace, + kind: ExternalDNS, + rscName: oldEDNS.ObjectMeta.Name, + rsc: oldEDNS, + rscDelete: true, + } + + crMgr.rscQueue.Add(key) + } + + log.Infof("Enqueueing Updated ExternalDNS: %v", edns) + key := &rqKey{ + namespace: edns.ObjectMeta.Namespace, + kind: ExternalDNS, + rscName: edns.ObjectMeta.Name, + rsc: edns, + } + + crMgr.rscQueue.Add(key) +} + +func (crMgr *CRManager) enqueueDeletedExternalDNS(obj interface{}) { + edns := obj.(*cisapiv1.ExternalDNS) + log.Infof("Enqueueing ExternalDNS: %v", edns) + key := &rqKey{ + namespace: edns.ObjectMeta.Namespace, + kind: ExternalDNS, + rscName: edns.ObjectMeta.Name, + rsc: obj, + rscDelete: true, + } + + crMgr.rscQueue.Add(key) +} + func (crMgr *CRManager) enqueueService(obj interface{}) { flag := true svc := obj.(*corev1.Service) diff --git a/pkg/crmanager/worker.go b/pkg/crmanager/worker.go index bc8f34375..6258c9aa4 100644 --- a/pkg/crmanager/worker.go +++ b/pkg/crmanager/worker.go @@ -89,7 +89,7 @@ func (crMgr *CRManager) processResource() bool { } case ExternalDNS: edns := rKey.rsc.(*cisapiv1.ExternalDNS) - crMgr.syncExternalDNS(edns) + crMgr.syncExternalDNS(edns, rKey.rscDelete) case Service: if crMgr.initState { break @@ -974,8 +974,12 @@ func getVirtualServersForTransportServerService(allVirtuals []*cisapiv1.Transpor return result } -func (crMgr *CRManager) syncExternalDNS(edns *cisapiv1.ExternalDNS) { +func (crMgr *CRManager) syncExternalDNS(edns *cisapiv1.ExternalDNS, isDelete bool) { + if isDelete { + delete(crMgr.resources.dnsConfig, edns.Spec.DomainName) + return + } wip := WideIP{ DomainName: edns.Spec.DomainName, RecordType: edns.Spec.DNSRecordType, @@ -1055,7 +1059,7 @@ func (crMgr *CRManager) ProcessAllExternalDNS() { for _, obj := range nsEDNSs { edns := obj.(*cisapiv1.ExternalDNS) - crMgr.syncExternalDNS(edns) + crMgr.syncExternalDNS(edns, false) } } } From 5b354d15920b8a4d30a989c95ea7b248087a8212 Mon Sep 17 00:00:00 2001 From: Subba Reddy Veeramreddy Date: Tue, 1 Dec 2020 19:43:51 +0530 Subject: [PATCH 20/23] Fix Pool Members not update not Service modification Signed-off-by: Subba Reddy Veeramreddy --- pkg/appmanager/appManager.go | 44 ++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/pkg/appmanager/appManager.go b/pkg/appmanager/appManager.go index caad93966..09ecadcbb 100644 --- a/pkg/appmanager/appManager.go +++ b/pkg/appmanager/appManager.go @@ -61,7 +61,7 @@ type Manager struct { irulesMap IRulesMap intDgMap InternalDataGroupMap agentCfgMap map[string]*AgentCfgMap - agentCfgMapEndpoint map[string][]Member + agentCfgMapSvcCache map[string]*SvcEndPointsCache kubeClient kubernetes.Interface restClientv1 rest.Interface restClientv1beta1 rest.Interface @@ -178,6 +178,11 @@ type RouteConfig struct { ServerSSL string } +type SvcEndPointsCache struct { + members []Member + labelString string +} + var RoutesProcessed []*routeapi.Route // Create and return a new app manager that meets the Manager interface @@ -225,7 +230,7 @@ func NewManager(params *Params) *Manager { agRspChan: params.AgRspChan, processAgentLabels: params.ProcessAgentLabels, agentCfgMap: make(map[string]*AgentCfgMap), - agentCfgMapEndpoint: make(map[string][]Member), + agentCfgMapSvcCache: make(map[string]*SvcEndPointsCache), } // Initialize agent response worker @@ -1044,27 +1049,42 @@ func (appMgr *Manager) syncConfigMaps( appLabel, appOk := svc.ObjectMeta.Labels["cis.f5.com/as3-app"] poolLabel, poolOk := svc.ObjectMeta.Labels["cis.f5.com/as3-pool"] + selector := "cis.f5.com/as3-tenant=" + tntLabel + "," + + "cis.f5.com/as3-app=" + appLabel + "," + + "cis.f5.com/as3-pool=" + poolLabel + + key := sKey.Namespace + "/" + sKey.ServiceName + // A service can be considered as an as3 configmap associated service only when it has these 3 labels if tntOk && appOk && poolOk { - key := sKey.Namespace + "/" + sKey.ServiceName - selector := "cis.f5.com/as3-tenant=" + tntLabel + "," + - "cis.f5.com/as3-app=" + appLabel + "," + - "cis.f5.com/as3-pool=" + poolLabel //TODO: Sorting endpoints members members := appMgr.getEndpoints(selector, sKey.Namespace) - if _, ok := appMgr.agentCfgMapEndpoint[key]; !ok { + + if _, ok := appMgr.agentCfgMapSvcCache[key]; !ok { if len(members) != 0 { - appMgr.agentCfgMapEndpoint[key] = members - stats.vsUpdated += 1 + appMgr.agentCfgMapSvcCache[key] = &SvcEndPointsCache{ + members: members, + labelString: selector, + } + stats.poolsUpdated += 1 log.Debugf("[CORE] Discovered members for service %v is %v", key, members) } } else { - if len(members) != len(appMgr.agentCfgMapEndpoint[key]) || !reflect.DeepEqual(members, appMgr.agentCfgMapEndpoint[key]) { - stats.vsUpdated += 1 - appMgr.agentCfgMapEndpoint[key] = members + sc := &SvcEndPointsCache{ + members: members, + labelString: selector, + } + if len(sc.members) != len(appMgr.agentCfgMapSvcCache[key].members) || !reflect.DeepEqual(sc, appMgr.agentCfgMapSvcCache[key]) { + stats.poolsUpdated += 1 + appMgr.agentCfgMapSvcCache[key] = sc log.Debugf("[CORE] Discovered members for service %v is %v", key, members) } } + } else { + if _, ok := appMgr.agentCfgMapSvcCache[key]; ok { + stats.poolsUpdated += 1 + delete(appMgr.agentCfgMapSvcCache, key) + } } } } From 61ab16c3d962541d8ed068134e5c55095e109396 Mon Sep 17 00:00:00 2001 From: agupta49 Date: Fri, 4 Dec 2020 12:34:44 +0530 Subject: [PATCH 21/23] F5-ctrl-agent and f5-cccl hash update --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 4a5d7df75..57221314b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ --e git+https://github.com/f5devcentral/f5-ctlr-agent.git@2fd5393a29ae9ec35de8c5c7dc6389f15e989668#egg=f5-ctlr-agent --e git+https://github.com/f5devcentral/f5-cccl.git@ae25523e0b52abe0195b8208a1ac1b0fa4823eea#egg=f5-cccl +-e git+https://github.com/f5devcentral/f5-ctlr-agent.git@5cb53a0fafc0262bf48e66211842e4d821fb81db#egg=f5-ctlr-agent +-e git+https://github.com/f5devcentral/f5-cccl.git@d8da31b9090042c8f84abdaf8e0ac5f83e30a16a#egg=f5-cccl From 4a8ffa5741fb02931b8a35718e3112bab2663e90 Mon Sep 17 00:00:00 2001 From: Nitin SRIVASTAV Date: Fri, 27 Nov 2020 17:23:56 +0530 Subject: [PATCH 22/23] operator changes for 2.2.1 release --- operator/build/Dockerfile | 2 +- .../crds/cis.f5.com_v1_f5bigipctlr_cr.yaml | 2 +- operator/helm-charts/f5-bigip-ctlr/Chart.yaml | 2 +- .../templates/f5-bigip-ctlr-clusterrole.yaml | 1 + ...5-bigip-ctlr-customresourcedefinitions.yml | 75 +++++- .../helm-charts/f5-bigip-ctlr/values.yaml | 3 + ...operator.v1.4.0.clusterserviceversion.yaml | 251 ++++++++++++++++++ .../f5bigipctlrs.cis.f5.com.crd.yaml | 19 ++ .../1.4.0/metadata/annotations.yaml | 7 + .../{bundle-1.3.0.Dockerfile => Dockerfile} | 4 +- 10 files changed, 360 insertions(+), 6 deletions(-) create mode 100644 operator/manifest/new-f5-bundle/1.4.0/manifests/f5-bigip-ctlr-operator.v1.4.0.clusterserviceversion.yaml create mode 100644 operator/manifest/new-f5-bundle/1.4.0/manifests/f5bigipctlrs.cis.f5.com.crd.yaml create mode 100644 operator/manifest/new-f5-bundle/1.4.0/metadata/annotations.yaml rename operator/manifest/new-f5-bundle/{bundle-1.3.0.Dockerfile => Dockerfile} (89%) diff --git a/operator/build/Dockerfile b/operator/build/Dockerfile index d9beb9e64..ecd0c6e74 100644 --- a/operator/build/Dockerfile +++ b/operator/build/Dockerfile @@ -3,7 +3,7 @@ FROM quay.io/operator-framework/helm-operator:latest ### Required OpenShift Labels LABEL name="F5 BIG-IP Controller Operator" \ vendor="F5 Networks Inc" \ - version="v1.3.0" \ + version="v1.4.0" \ release="1" \ summary="F5 BIG-IP Controller Operator" \ description="This operator will deploy F5 BIG-IP Controller for Kubernetes and OpenShift into the cluster." diff --git a/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml b/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml index 92f327c0d..152b8ca24 100644 --- a/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml +++ b/operator/deploy/crds/cis.f5.com_v1_f5bigipctlr_cr.yaml @@ -3,7 +3,7 @@ kind: F5BigIpCtlr metadata: name: f5-server spec: - version: 2.2.0 + version: 2.2.1 args: log_as3_response: true manage_routes: true diff --git a/operator/helm-charts/f5-bigip-ctlr/Chart.yaml b/operator/helm-charts/f5-bigip-ctlr/Chart.yaml index cb00ac4e5..75624a8ed 100644 --- a/operator/helm-charts/f5-bigip-ctlr/Chart.yaml +++ b/operator/helm-charts/f5-bigip-ctlr/Chart.yaml @@ -1,4 +1,4 @@ apiVersion: v1 description: Deploy the F5 Networks BIG-IP Controller for Kubernetes and OpenShift (k8s-bigip-ctlr). name: f5-bigip-ctlr -version: 0.0.9 +version: 0.0.10 \ No newline at end of file diff --git a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml index 3e7ab9edb..76f4c0605 100644 --- a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml +++ b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml @@ -55,4 +55,5 @@ rules: - virtualservers - tlsprofiles - transportservers + - externaldnss {{- end -}} diff --git a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml index 2f9cc6316..79c032e4f 100644 --- a/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml +++ b/operator/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-customresourcedefinitions.yml @@ -210,4 +210,77 @@ spec: required: - virtualServerAddress - virtualServerPort - - pool \ No newline at end of file + - pool + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: externaldnss.cis.f5.com +spec: + group: cis.f5.com + names: + kind: ExternalDNS + plural: externaldnss + shortNames: + - edns + singular: externaldns + scope: Namespaced + versions: + - + name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + properties: + domainName: + type: string + pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' + dnsRecordType: + type: string + pattern: 'A' + loadBalanceMethod: + type: string + pools: + type: array + items: + type: object + properties: + name: + type: string + pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' + dataServerName: + type: string + dnsRecordType: + type: string + pattern: 'A' + loadBalanceMethod: + type: string + monitor: + type: object + properties: + type: + type: string + enum: [http, https] + send: + type: string + recv: + type: string + interval: + type: integer + timeout: + type: integer + required: + - type + - send + - interval + required: + - name + - dataServerName + required: + - domainName \ No newline at end of file diff --git a/operator/helm-charts/f5-bigip-ctlr/values.yaml b/operator/helm-charts/f5-bigip-ctlr/values.yaml index fdc82c030..a97216667 100644 --- a/operator/helm-charts/f5-bigip-ctlr/values.yaml +++ b/operator/helm-charts/f5-bigip-ctlr/values.yaml @@ -45,6 +45,9 @@ args: # insecure: true # custom-resource-mode: true # log-as3-response: true + # gtm-bigip-password + # gtm-bigip-url + # gtm-bigip-username image: # Use the tag to target a specific version of the Controller user: f5networks diff --git a/operator/manifest/new-f5-bundle/1.4.0/manifests/f5-bigip-ctlr-operator.v1.4.0.clusterserviceversion.yaml b/operator/manifest/new-f5-bundle/1.4.0/manifests/f5-bigip-ctlr-operator.v1.4.0.clusterserviceversion.yaml new file mode 100644 index 000000000..ba3bab477 --- /dev/null +++ b/operator/manifest/new-f5-bundle/1.4.0/manifests/f5-bigip-ctlr-operator.v1.4.0.clusterserviceversion.yaml @@ -0,0 +1,251 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + name: f5-bigip-ctlr-operator.v1.4.0 + namespace: placeholder + annotations: + alm-examples: >- + [{"apiVersion":"cis.f5.com/v1","kind":"F5BigIpCtlr","metadata":{"name":"f5-server"},"spec":{"args":{"log_as3_response":true,"manage_routes":true,"agent":"as3","log_level":"","route_vserver_addr":"","bigip_partition":"","openshift_sdn_name":"","bigip_url":"","insecure":true,"pool-member-type":""},"bigip_login_secret":"","image":{"pullPolicy":"Always","repo":"k8s-bigip-ctlr","user":"f5networks"},"namespace":"kube-system","rbac":{"create":true},"resources":{},"serviceAccount":{"create":true,"name":null},"version":"latest"}}] + categories: Networking + certified: 'false' + createdAt: '2020-10-22' + description: >- + Operator to install F5 Container Ingress Services (CIS) for BIG-IP. + containerImage: 'quay.io/n.srivastav/k8s-bigip-ctlr-operator:operator_2.2.1_changes' + support: F5 Operators Team + capabilities: Basic Install + repository: 'https://github.com/F5Networks/k8s-bigip-ctlr' +spec: + displayName: 'F5 Container Ingress Services' + description: > + ## Introduction + + This Operator installs F5 Container Ingress Services (CIS) for BIG-IP in + your Cluster. This enables to configure and deploy CIS using Helm Charts. + + ## F5 Container Ingress Services for BIG-IP + + F5 Container Ingress Services (CIS) integrates with container orchestration + environments to dynamically create L4/L7 services on F5 BIG-IP systems, and + load balance network traffic across the services. + + Monitoring the orchestration API server, CIS is able to modify the BIG-IP + system configuration based on changes made to containerized applications. + + ## Documentation + + Refer to F5 documentation + + - CIS on OpenShift (https://clouddocs.f5.com/containers/latest/userguide/openshift/) + - OpenShift Routes (https://clouddocs.f5.com/containers/latest/userguide/routes.html) + + ## Prerequisites + + Create BIG-IP login credentials for use with Operator Helm charts. A basic + way be, + + ``` + + oc create secret generic -n kube-system + --from-literal=username= --from-literal=password= + + ``` + maturity: beta + version: 1.4.0 + minKubeVersion: 1.13.0 + keywords: + - Ingress Controller + - BIGIP + - F5 + - container + - router + - application + - delivery + - controller + - waf + - firewall + - loadbalancer + maintainers: + - name: F5 Operators Team + email: f5_cis_operators@f5.com + provider: + name: F5 Networks Inc. + labels: {} + selector: + matchLabels: {} + links: + - name: Documentation + url: 'https://clouddocs.f5.com/containers/latest/' + - name: Github Repo + url: 'https://github.com/F5Networks/k8s-bigip-ctlr/operator' + icon: + - base64data: >- + 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 + mediatype: image/png + customresourcedefinitions: + owned: + - name: f5bigipctlrs.cis.f5.com + displayName: F5BigIpCtlr + kind: F5BigIpCtlr + version: v1 + description: >- + This CRD provides kind `F5BigIpCtlr` to configure and deploy F5 BIG-IP + Controller. + resources: + - version: v1 + kind: Deployment + - version: v1 + kind: Service + - version: v1 + kind: ReplicaSet + - version: v1 + kind: Pod + - version: v1 + kind: Secret + - version: v1 + kind: ConfigMap + specDescriptors: + - description: Version is a read-only field. It contains the current version of F5 BIG-IP Controller Operator. + displayName: Version + path: version + statusDescriptors: + - path: phase + displayName: Status + description: Status of the F5 Container Ingress Services Operator. + x-descriptors: + - 'urn:alm:descriptor:io.kubernetes.phase' + required: [] + install: + strategy: deployment + spec: + clusterPermissions: + - serviceAccountName: f5-bigip-ctlr-operator + rules: + - apiGroups: + - '' + resources: + - pods + - services + - services/finalizers + - endpoints + - persistentvolumeclaims + - events + - configmaps + - secrets + - serviceaccounts + verbs: + - '*' + - apiGroups: + - apps + resources: + - deployments + - daemonsets + - replicasets + - statefulsets + verbs: + - '*' + - apiGroups: + - '' + resources: + - namespaces + verbs: + - '*' + - apiGroups: + - '' + resources: + - configmaps + - secrets + verbs: + - '*' + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - get + - create + - apiGroups: + - apps + resourceNames: + - f5-bigip-ctlr-operator + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - '' + resources: + - pods + verbs: + - get + - apiGroups: + - apps + resources: + - replicasets + - deployments + verbs: + - get + - apiGroups: + - cis.f5.com + resources: + - '*' + verbs: + - '*' + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - clusterrolebindings + - roles + - rolebindings + verbs: + - '*' + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - '*' + - apiGroups: + - charts.helm.k8s.io + resources: + - '*' + verbs: + - '*' + deployments: + - name: f5-bigip-ctlr-operator + spec: + replicas: 1 + selector: + matchLabels: + name: f5-bigip-ctlr-operator + template: + metadata: + labels: + name: f5-bigip-ctlr-operator + spec: + serviceAccountName: f5-bigip-ctlr-operator + containers: + - name: f5-bigip-ctlr-operator + image: quay.io/n.srivastav/k8s-bigip-ctlr-operator:operator_2.2.1_changes + imagePullPolicy: Always + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: f5-bigip-ctlr-operator + installModes: + - type: OwnNamespace + supported: true + - type: SingleNamespace + supported: true + - type: MultiNamespace + supported: true + - type: AllNamespaces + supported: true diff --git a/operator/manifest/new-f5-bundle/1.4.0/manifests/f5bigipctlrs.cis.f5.com.crd.yaml b/operator/manifest/new-f5-bundle/1.4.0/manifests/f5bigipctlrs.cis.f5.com.crd.yaml new file mode 100644 index 000000000..9e6743024 --- /dev/null +++ b/operator/manifest/new-f5-bundle/1.4.0/manifests/f5bigipctlrs.cis.f5.com.crd.yaml @@ -0,0 +1,19 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: f5bigipctlrs.cis.f5.com +spec: + group: cis.f5.com + names: + kind: F5BigIpCtlr + listKind: F5BigIpCtlrList + plural: f5bigipctlrs + singular: f5bigipctlr + scope: Namespaced + subresources: + status: {} + version: v1 + versions: + - name: v1 + served: true + storage: true diff --git a/operator/manifest/new-f5-bundle/1.4.0/metadata/annotations.yaml b/operator/manifest/new-f5-bundle/1.4.0/metadata/annotations.yaml new file mode 100644 index 000000000..80acdf034 --- /dev/null +++ b/operator/manifest/new-f5-bundle/1.4.0/metadata/annotations.yaml @@ -0,0 +1,7 @@ +annotations: + operators.operatorframework.io.bundle.channel.default.v1: beta + operators.operatorframework.io.bundle.channels.v1: beta + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: f5-bigip-ctlr-operator diff --git a/operator/manifest/new-f5-bundle/bundle-1.3.0.Dockerfile b/operator/manifest/new-f5-bundle/Dockerfile similarity index 89% rename from operator/manifest/new-f5-bundle/bundle-1.3.0.Dockerfile rename to operator/manifest/new-f5-bundle/Dockerfile index 7f76e3b35..8765852fd 100644 --- a/operator/manifest/new-f5-bundle/bundle-1.3.0.Dockerfile +++ b/operator/manifest/new-f5-bundle/Dockerfile @@ -7,8 +7,8 @@ LABEL operators.operatorframework.io.bundle.package.v1=f5-bigip-ctlr-operator LABEL operators.operatorframework.io.bundle.channels.v1=beta LABEL operators.operatorframework.io.bundle.channel.default.v1=beta -COPY 1.3.0/manifests /manifests/ -COPY 1.3.0/metadata /metadata/ +COPY 1.4.0/manifests /manifests/ +COPY 1.4.0/metadata /metadata/ LABEL com.redhat.openshift.versions="v4.5,v4.6" LABEL com.redhat.delivery.backport=true LABEL com.redhat.delivery.operator.bundle=true From 7de37486481ac0633e5553087cb23c5a6833ebf6 Mon Sep 17 00:00:00 2001 From: Nitin SRIVASTAV Date: Fri, 4 Dec 2020 17:01:10 +0530 Subject: [PATCH 23/23] CIS 2.2.1 release notes --- docs/RELEASE-NOTES.rst | 50 +++++++++-- .../config_examples/crd/CustomResource.md | 82 ++++++++++++++++++- .../config_examples/crd/ExternalDNS/README.md | 3 + 3 files changed, 125 insertions(+), 10 deletions(-) create mode 100644 docs/_static/config_examples/crd/ExternalDNS/README.md diff --git a/docs/RELEASE-NOTES.rst b/docs/RELEASE-NOTES.rst index ee116df85..76e5122fe 100644 --- a/docs/RELEASE-NOTES.rst +++ b/docs/RELEASE-NOTES.rst @@ -1,6 +1,38 @@ Release Notes for Container Ingress Services for Kubernetes & OpenShift ======================================================================= +2.2.1 +------------- +Added Functionality +``````````````````` +* CIS is now compatible with: + - OpenShift 4.6.4. + - AS3 3.24. +* CIS supports OVN-Kubernetes CNI for Standalone and HA with OSCP 4.5. +* External DNS CRD – Preview available in CRD mode. + - Supports single CIS to configure both LTM and GTM configuration. + - Supports external DNS for GTM configuration. + - Create wide-IP on BigIP using Virtual server CRD's domain name + - Multi cluster support for same domain + - Health montior support for monitoring GSLB pools + - CIS deployment parameter added `--gtm-bigip-url`, `--gtm-bigip-username`, `--gtm-bigip-password` and `--gtm-credentials-directory` for External DNS. + - `CRD schema definition for External DNS `_. + - `CRD examples `_. + +Bug Fixes +````````` +* :issues:`1464` CIS AS3 does not support k8s services has multiple port. +* :issues:`1391` Expose Kubernetes api services via F5 ingress crashes CIS. +* :issues:`1527` Service Discovery logs not being output. +* SR - Fix for concurrent map read and write with configmap processing. +* SR - Improved performance by skipping the processing of endpoints for unassociated services + +Limitations +``````````` +* On updating or deleting CIS virtual server CRD's virtualServerAddress for a domain, CIS does not update the GSLB pool members. +* CIS is unable to delete the Wide-IP without Health Monitor. +* CIS is unable to delete the Health Monitor when there are no virtual server CRD available for a domain name. + 2.2.0 ------------- Added Functionality @@ -488,15 +520,15 @@ Added Functionality Bug Fixes ````````` -* :issues:`552` - Controller properly creates Secret SSL profiles for ConfigMaps. -* :issues:`592` - Node label selector works properly in cluster mode. -* :issues:`603` - Pool only mode no longer prints excessive logs. -* :issues:`608` - Single service Ingresses cannot share virtual servers. -* :issues:`636` - Controller configures default ssl profiles for Routes when specified via CLI. -* :issues:`635` - Controller cleans up policy rules when an Ingress removes them. -* :issues:`638` - Ingress extended paths no longer break BIG-IP GUI links. -* :issues:`649` - Route annotation profiles are no longer ignored. -* :cccl-issue:`214` - Keys and certificates are now installed onto the managed partition. +* :issues:552 - Controller properly creates Secret SSL profiles for ConfigMaps. +* :issues:592 - Node label selector works properly in cluster mode. +* :issues:603 - Pool only mode no longer prints excessive logs. +* :issues:608 - Single service Ingresses cannot share virtual servers. +* :issues:636 - Controller configures default ssl profiles for Routes when specified via CLI. +* :issues:635 - Controller cleans up policy rules when an Ingress removes them. +* :issues:638 - Ingress extended paths no longer break BIG-IP GUI links. +* :issues:649 - Route annotation profiles are no longer ignored. +* :cccl-issue:214 - Keys and certificates are now installed onto the managed partition. Limitations ``````````` diff --git a/docs/_static/config_examples/crd/CustomResource.md b/docs/_static/config_examples/crd/CustomResource.md index d9611172c..ecd31fbbf 100644 --- a/docs/_static/config_examples/crd/CustomResource.md +++ b/docs/_static/config_examples/crd/CustomResource.md @@ -17,9 +17,11 @@ This page is created to document the behaviour of CIS in CRD Mode(ALPHA Release) ``` ## Contents -* CIS supports 2 Custom Resources at this point of time. +* CIS supports following Custom Resources at this point of time. - VirtualServer - TLSProfile + - TransportServer + - ExternalDNS ## VirtualServer @@ -119,6 +121,39 @@ different terminations(for same domain), one with edge and another with re-encry timeout: 10 ``` +## ExternalDNS + +* ExternalDNS CRD's allows you to control DNS records dynamically via Kubernetes/OSCP resources in a DNS provider-agnostic way. +``` +apiVersion: "cis.f5.com/v1" +kind: ExternalDNS +metadata: + name: exdns + labels: + f5cr: "true" +spec: + domainName: example.com + dnsRecordType: A + loadBalanceMethod: round-robin + pools: + - name: example.site1.com + dnsRecordType: A + loadBalanceMethod: round-robin + dataServerName: /Common/GSLBServer + monitor: + type: https + send: "GET /" + recv: "" + interval: 10 + timeout: 10 +``` + +Note: +* To set up external DNS using BIG-IP GTM user needs to first manually configure GSLB → Datacenter and GSLB → Server on BIG-IP common partition. + +Known Issues: +* CIS does not update the GSLB pool members when virtual server CRD's virtualServerAddress is updated or virtual server CRD is deleted for a domain. + ## How CIS works with CRDs * CIS registers to the kubernetes client-go using informers to retrieve Virtual Server, TLSProfile, Service, Endpoint and Node creation, updation and deletion events. Resources identified from such events will be pushed to a Resource Queue maintained by CIS. @@ -222,6 +257,46 @@ different terminations(for same domain), one with edge and another with re-encry | interval | Int | Required | 5 | Seconds between health queries | | timeout | Int | Optional | 16 | Seconds before query fails | + +# ExternalDNS + * Schema Validation + - OpenAPI Schema Validation + + https://github.com/F5Networks/k8s-bigip-ctlr/blob/master/docs/_static/config_examples/crd/ExternalDNS/%20externaldns-customresourcedefinition.yml + + +**ExternalDNS Components** + +| PARAMETER | TYPE | REQUIRED | DEFAULT | DESCRIPTION | +| ------ | ------ | ------ | ------ | ------ | +| domainName | String | Required | NA | Domain name of virtual server CRD | +| dnsRecordType | String | Required | A | DNS record type | +| loadBalancerMethod | String | Required | round-robin | Load balancing method for DNS traffic | +| pools | pool | Optional | NA | GTM Pools | + +**Pool Components** + +| PARAMETER | TYPE | REQUIRED | DEFAULT | DESCRIPTION | +| ------ | ------ | ------ | ------ | ------ | +| name | String | Required | NA | Name of the GSLB pool | +| dnsRecordType | String | Optional | NA | DNS record type | +| loadBalancerMethod | String | Optional | round-robin | Load balancing method for DNS traffic | +| dataServerName | String | Required | NA | Name of the GSLB server on BIG-IP (i.e. /Common/SiteName) | +| monitor | Monitor | Optional | NA | Monitor for GSLB Pool | + + +Note: The user needs to mention the same GSLB DataServer Name to dataServerName field, which is create on the BIG-IP common partition. + +**GSLB Monitor Components** + +| PARAMETER | TYPE | REQUIRED | DEFAULT | DESCRIPTION | +| ------ | ------ | ------ | ------ | ------ | +| type | String | Required | NA | http or https | +| send | String | Required | NA | Send string for monitor i.e. "GET /health HTTP/1.1\r\nHOST: example.com\r\n" | +| recv | String | Optional | NA | Receive string and can be empty | +| interval | Int | Required | 5 | Seconds between health queries | +| timeout | Int | Optional | 16 | Seconds before query fails | + ## Prerequisites Since CIS is using the AS3 declarative API we need the AS3 extension installed on BIG-IP. Follow the link to install AS3 3.18 is required for CIS 2.0. @@ -281,6 +356,11 @@ kubectl create -f sample-cluster-k8s-bigip-ctlr-crd-secret.yml [-n kube-system] CIS deployment parameter `--share-nodes` can be used to share the pool member nodes among multiple BIG-IP tenants. `--share-nodes=true` will create nodes on `/Common` partition. +## External DNS + +CIS deployment parameter `--gtm-bigip-url`, `--gtm-bigip-username`, `--gtm-bigip-password` and `--gtm-credentials-directory` can be used to configure External DNS. + + ## Examples https://github.com/F5Networks/k8s-bigip-ctlr/tree/master/docs/_static/config_examples/crd diff --git a/docs/_static/config_examples/crd/ExternalDNS/README.md b/docs/_static/config_examples/crd/ExternalDNS/README.md new file mode 100644 index 000000000..8d2c5e8f4 --- /dev/null +++ b/docs/_static/config_examples/crd/ExternalDNS/README.md @@ -0,0 +1,3 @@ +# ExternalDNS + +ExternalDNS CRD's allows you to control DNS records dynamically via Kubernetes/OSCP resources in a DNS provider-agnostic way. \ No newline at end of file