使用operator-sdk生成Bundle时CSV未采用自定义Kustomize配置的问题
Operator SDK生成Bundle时未使用Kustomize输出的CSV配置,而是从未知位置获取定义
我尝试为Operator生成Bundle,但operator-sdk正在从某个未知位置获取*ClusterServiceVersion(CSV)*定义,找不到任何相关线索。
我的操作方式是使用kustomize build生成配置,再通过管道传入operator-sdk generate bundle来生成Bundle。理论上应使用Kustomize生成的文件创建Bundle,但实际operator-sdk并未采用这些文件。
Kustomize生成的CSV示例:
apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: '[]' capabilities: Basic Install name: example-operator.v0.0.0 namespace: placeholder spec: apiservicedefinitions: {} customresourcedefinitions: {} description: | Very Long Description displayName: Example Operator icon: - base64data: "base64_enconded_image" mediatype: image/jpeg install: spec: deployments: null strategy: "" installModes: - supported: false type: OwnNamespace - supported: true type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - assessment - audit - state - cluster links: - name: Example Inc. url: https://example.com maturity: alpha minKubeVersion: 1.16.0 provider: name: Example url: example.com version: 0.0.0
Bundle文件夹中实际生成的CSV内容:
apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "custom.example.com/v1alpha1", "kind": "Memcached", "metadata": { "labels": { "app.kubernetes.io/created-by": "example-operator", "app.kubernetes.io/instance": "memcached-sample", "app.kubernetes.io/managed-by": "kustomize", "app.kubernetes.io/name": "memcached", "app.kubernetes.io/part-of": "example-operator" }, "name": "example-sample" }, "spec": { "author": "", "author_email": "", "client": "", "git_token": "" } } ] capabilities: Basic Install createdAt: "2024-04-18T08:02:35Z" operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: ansible.sdk.operatorframework.io/v1 name: example-operator.v0.0.44 namespace: placeholder spec: apiservicedefinitions: {} customresourcedefinitions: owned: - kind: Memcached name: memcached.custom.example.com version: v1alpha1 description: Example Operator description. TODO. displayName: Example Operator icon: - base64data: "" mediatype: "" install: spec: clusterPermissions: - rules: - apiGroups: - authorization.openshift.io resources: - '*' verbs: - '*' - apiGroups: - rbac.authorization.k8s.io resources: - '*' verbs: - '*' - apiGroups: - "" resources: - secrets - configmaps - serviceaccounts - pods - pods/exec - pods/log verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apps resources: - deployments - daemonsets - replicasets - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - batch resources: - jobs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - custom.crossvale.com resources: - assessments - assessments/status - assessments/finalizers verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create serviceAccountName: example-operator-controller-manager deployments: - label: app.kubernetes.io/component: manager app.kubernetes.io/created-by: new-operator app.kubernetes.io/instance: controller-manager app.kubernetes.io/managed-by: kustomize app.kubernetes.io/name: deployment app.kubernetes.io/part-of: new-operator control-plane: controller-manager name: example-operator-controller-manager spec: replicas: 1 selector: matchLabels: control-plane: controller-manager strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: manager labels: control-plane: controller-manager spec: containers: - args: - --secure-listen-address=0.0.0.0:8443 - --upstream=http://127.0.0.1:8080/ - --logtostderr=true - --v=0 image: gcr.io/kubebuilder/kube-rbac-proxy:v0.14.1 name: kube-rbac-proxy ports: - containerPort: 8443 name: https protocol: TCP resources: limits: cpu: 500m memory: 128Mi requests: cpu: 5m memory: 64Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL - args: - --health-probe-bind-address=:6789 - --metrics-bind-address=127.0.0.1:8080 - --leader-elect - --leader-election-id=new-operator env: - name: ANSIBLE_GATHERING value: explicit image: ghcr.io/crossvale-inc/example-operator:0.0.44 livenessProbe: httpGet: path: /healthz port: 6789 initialDelaySeconds: 15 periodSeconds: 20 name: manager readinessProbe: httpGet: path: /readyz port: 6789 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 768Mi requests: cpu: 10m memory: 256Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL securityContext: runAsNonRoot: true serviceAccountName: example-operator-controller-manager terminationGracePeriodSeconds: 10 permissions: - rules: - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - create - update - patch - delete - apiGroups: - coordination.k8s.io resources: - leases verbs: - get - list - watch - create - update - patch - delete - apiGroups: - "" resources: - events verbs: - create - patch serviceAccountName: example-operator-controller-manager strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - example-operator links: - name: Example Operator url: https://example-operator.domain maintainers: - email: your@email.com name: Maintainer Name maturity: alpha provider: name: Provider Name url: https://your.domain version: 0.0.44
如您所见,生成的内容与我提供的基础清单完全无关。有人知道原因吗?提前感谢各位的帮助。
内容的提问来源于stack exchange,提问作者arturoxv
相关产品推荐
相关产品推荐

