From 429a9ce602f7dd8f8b0e4fd03a07346c444514f5 Mon Sep 17 00:00:00 2001 From: Angel Kafazov Date: Wed, 16 Oct 2024 16:50:17 +0300 Subject: [PATCH] First commit --- .github/workflows/account-operator-crds.yaml | 28 +++ .github/workflows/account-operator.yaml | 28 +++ .../workflows/update-chart-parameters.yaml | 71 ++++++ .vscode/settings.json | 22 ++ Taskfile.yaml | 33 +++ charts/account-operator-crds/Chart.yaml | 9 + .../templates/core.openmfp.io_accounts.yaml | 197 +++++++++++++++++ charts/account-operator-crds/test-values.yaml | 0 .../__snapshot__/deployment_test.yaml.snap | 205 ++++++++++++++++++ .../tests/deployment_test.yaml | 12 + charts/account-operator-crds/values.yaml | 0 charts/account-operator/.helmignore | 23 ++ charts/account-operator/Chart.lock | 9 + charts/account-operator/Chart.yaml | 14 ++ .../charts/account-operator-crds-0.0.2.tgz | Bin 0 -> 3658 bytes .../account-operator/charts/common-0.1.3.tgz | Bin 0 -> 491 bytes .../templates/cluster-role.yaml | 55 +++++ .../templates/cluster-rolebinding.yaml | 12 + .../templates/deployment.yaml | 59 +++++ .../templates/service-account.yaml | 6 + .../__snapshot__/deployment_test.yaml.snap | 135 ++++++++++++ .../tests/deployment_test.yaml | 12 + charts/account-operator/values.yaml | 24 ++ charts/common/Chart.yaml | 7 + charts/common/templates/_entityName.tpl | 11 + charts/common/templates/_imagePullSecret.tpl | 4 + charts/common/values.yaml | 0 27 files changed, 976 insertions(+) create mode 100644 .github/workflows/account-operator-crds.yaml create mode 100644 .github/workflows/account-operator.yaml create mode 100644 .github/workflows/update-chart-parameters.yaml create mode 100644 .vscode/settings.json create mode 100644 Taskfile.yaml create mode 100644 charts/account-operator-crds/Chart.yaml create mode 100644 charts/account-operator-crds/templates/core.openmfp.io_accounts.yaml create mode 100644 charts/account-operator-crds/test-values.yaml create mode 100644 charts/account-operator-crds/tests/__snapshot__/deployment_test.yaml.snap create mode 100644 charts/account-operator-crds/tests/deployment_test.yaml create mode 100644 charts/account-operator-crds/values.yaml create mode 100644 charts/account-operator/.helmignore create mode 100644 charts/account-operator/Chart.lock create mode 100644 charts/account-operator/Chart.yaml create mode 100644 charts/account-operator/charts/account-operator-crds-0.0.2.tgz create mode 100644 charts/account-operator/charts/common-0.1.3.tgz create mode 100644 charts/account-operator/templates/cluster-role.yaml create mode 100644 charts/account-operator/templates/cluster-rolebinding.yaml create mode 100644 charts/account-operator/templates/deployment.yaml create mode 100644 charts/account-operator/templates/service-account.yaml create mode 100644 charts/account-operator/tests/__snapshot__/deployment_test.yaml.snap create mode 100644 charts/account-operator/tests/deployment_test.yaml create mode 100644 charts/account-operator/values.yaml create mode 100644 charts/common/Chart.yaml create mode 100644 charts/common/templates/_entityName.tpl create mode 100644 charts/common/templates/_imagePullSecret.tpl create mode 100644 charts/common/values.yaml diff --git a/.github/workflows/account-operator-crds.yaml b/.github/workflows/account-operator-crds.yaml new file mode 100644 index 000000000..f1155214c --- /dev/null +++ b/.github/workflows/account-operator-crds.yaml @@ -0,0 +1,28 @@ +name: Build account-operator-crds Workflow +on: + push: + paths: + - 'charts/account-operator-crds/**' + - '.github/workflows/account-operator-crds.yaml' + +jobs: + pipeline: + concurrency: + group: account-operator-crds-${{ github.ref }} + cancel-in-progress: true + uses: openmfp/gha/.github/workflows/pipeline-chart.yml@main + with: + chartFolder: charts + chartName: account-operator-crds + additionalTestFilesCommand: '' + chartRepos: 'bitnami=https://charts.bitnami.com/bitnami,openfga=https://openfga.github.io/helm-charts' + secrets: inherit + + updateVersionFile: + if: ${{ github.ref == 'refs/heads/main' }} + needs: [pipeline] + uses: openmfp/gha/.github/workflows/job-update-version-file.yml@main + secrets: inherit + with: + componentVersionKey: "account-operator-crds" + version: ${{ needs.pipeline.outputs.version }} diff --git a/.github/workflows/account-operator.yaml b/.github/workflows/account-operator.yaml new file mode 100644 index 000000000..ae256929a --- /dev/null +++ b/.github/workflows/account-operator.yaml @@ -0,0 +1,28 @@ +name: Build account-operator Workflow +on: + push: + paths: + - 'charts/account-operator/**' + - '.github/workflows/account-operator.yaml' + +jobs: + pipeline: + concurrency: + group: account-operator-${{ github.ref }} + cancel-in-progress: true + uses: openmfp/gha/.github/workflows/pipeline-chart.yml@main + with: + chartFolder: charts + chartName: account-operator + additionalTestFilesCommand: '' + chartRepos: 'bitnami=https://charts.bitnami.com/bitnami,openfga=https://openfga.github.io/helm-charts' + secrets: inherit + + updateVersionFile: + if: ${{ github.ref == 'refs/heads/main' }} + needs: [pipeline] + uses: openmfp/gha/.github/workflows/job-update-version-file.yml@main + secrets: inherit + with: + componentVersionKey: "account-operator" + version: ${{ needs.pipeline.outputs.version }} \ No newline at end of file diff --git a/.github/workflows/update-chart-parameters.yaml b/.github/workflows/update-chart-parameters.yaml new file mode 100644 index 000000000..44426d63b --- /dev/null +++ b/.github/workflows/update-chart-parameters.yaml @@ -0,0 +1,71 @@ +name: Update chart parameters + +on: + workflow_dispatch: + inputs: + chart: + description: 'The name of the helm chart' + required: true + default: '' + appVersion: + description: 'The version tag of the docker image' + required: true + default: '0.0.0' + +jobs: + version-update: + runs-on: ubuntu-latest + steps: + - uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: "838464" + private-key: ${{ secrets.OPENMFP_PUBLISHER_PRIVATE_KEY }} + - uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + - name: Setup yq@latest + run: | + if ! command -v yq &>/dev/null + then + mkdir -p /home/runner/.local/bin + wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /home/runner/.local/bin/yq &&\ + chmod +x /home/runner/.local/bin/yq + fi + - name: Configure GIT + run: | + git config --global user.name "OpenMFP Publisher" + git config --global user.email "openmfp@gmail.com" + - name: Update appVersion in Chart.yaml + run: | + chart_file="charts/${{ inputs.chart }}/Chart.yaml" + ls -al charts/ + if [ -f "$chart_file" ]; then + echo "Chart.yaml file found at $chart_file" + yq e -i '.appVersion = "${{ inputs.appVersion }}"' "$chart_file" + echo "Updated appVersion to ${{ inputs.appVersion }} in $chart_file" + + # bump version parameter in chart + CHART_VERSION=$(yq '.version' "$chart_file") + IFS='.' read -r -a VERSION_PARTS <<< "$CHART_VERSION" + MAJOR=${VERSION_PARTS[0]} + MINOR=${VERSION_PARTS[1]} + PATCH=${VERSION_PARTS[2]} + NEW_PATCH=$((PATCH + 1)) + NEW_CHART_VERSION="$MAJOR.$MINOR.$NEW_PATCH" + yq e -i ".version = \"$NEW_CHART_VERSION\"" "$chart_file" + echo "Version bumped to $NEW_CHART_VERSION in $chart_file" + + git add "$chart_file" + git commit -m "Updating appVersion to ${{ inputs.appVersion }} in $chart_file" || echo "appVersion was already up to date" + else + echo "Chart.yaml file not found at $chart_file" + exit 1 + fi + - name: Git push + run: | + git push origin main + echo "Pushed changes to main" + git show HEAD + + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..02ad061a1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "workbench.colorCustomizations": { + "activityBar.activeBackground": "#5d57d5", + "activityBar.background": "#5d57d5", + "activityBar.foreground": "#e7e7e7", + "activityBar.inactiveForeground": "#e7e7e799", + "activityBarBadge.background": "#df847f", + "activityBarBadge.foreground": "#15202b", + "commandCenter.border": "#e7e7e799", + "sash.hoverBorder": "#5d57d5", + "statusBar.background": "#3932c7", + "statusBar.foreground": "#e7e7e7", + "statusBarItem.hoverBackground": "#5d57d5", + "statusBarItem.remoteBackground": "#3932c7", + "statusBarItem.remoteForeground": "#e7e7e7", + "titleBar.activeBackground": "#3932c7", + "titleBar.activeForeground": "#e7e7e7", + "titleBar.inactiveBackground": "#3932c799", + "titleBar.inactiveForeground": "#e7e7e799" + }, + "peacock.color": "#3932c7" +} \ No newline at end of file diff --git a/Taskfile.yaml b/Taskfile.yaml new file mode 100644 index 000000000..1de1b48cc --- /dev/null +++ b/Taskfile.yaml @@ -0,0 +1,33 @@ +version: '3' + +vars: + LOCAL_BIN: bin + CHARTS: + sh: "ls charts/ | sed 's/^/charts\\//g' | paste -sd ',' -" +tasks: + ## Development + lint: + deps: [] + cmds: + - "ct lint --target-branch main --validate-maintainers=false --charts={{.CHARTS}}" + package: + cmds: + - helm package ./charts/openmfp + helmtest: + cmds: + - helm unittest ./charts/common + - helm unittest ./charts/account-operator-crds + - helm unittest ./charts/account-operator + test: + deps: + - task: helmtest + update: + cmds: + - helm dependency update ./charts/common + - helm dependency update ./charts/account-operator-crds + - helm dependency update ./charts/account-operator + validate: + cmds: + - task: lint + - task: package + - task: test diff --git a/charts/account-operator-crds/Chart.yaml b/charts/account-operator-crds/Chart.yaml new file mode 100644 index 000000000..8cfdf803e --- /dev/null +++ b/charts/account-operator-crds/Chart.yaml @@ -0,0 +1,9 @@ +apiVersion: v2 +name: account-operator-crds +description: A Helm chart for Kubernetes + +type: application + +version: 0.0.2 + +appVersion: "1.16.0" diff --git a/charts/account-operator-crds/templates/core.openmfp.io_accounts.yaml b/charts/account-operator-crds/templates/core.openmfp.io_accounts.yaml new file mode 100644 index 000000000..e38f6597a --- /dev/null +++ b/charts/account-operator-crds/templates/core.openmfp.io_accounts.yaml @@ -0,0 +1,197 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + name: accounts.core.openmfp.io +spec: + group: core.openmfp.io + names: + kind: Account + listKind: AccountList + plural: accounts + singular: account + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.displayName + name: Display Name + type: string + - jsonPath: .status.namespace + name: Account Namespace + type: string + - jsonPath: .spec.type + name: Type + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Account is the Schema for the accounts API + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: AccountSpec defines the desired state of Account + properties: + creator: + description: The initial creator of this account + type: string + data: + description: Additional information that should be stored with the + account + x-kubernetes-preserve-unknown-fields: true + description: + description: An optional description for this account + type: string + displayName: + description: The display name for this account + maxLength: 255 + type: string + extensions: + items: + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + readyConditionType: + description: |- + The type of a condition that must be set to True on the Extension object + for the extension to be considered reconciled and ready. If this is empty, + the extension is considered ready. + type: string + specGoTemplate: + x-kubernetes-preserve-unknown-fields: true + required: + - specGoTemplate + type: object + type: array + namespace: + description: Namespace is the account should take ownership of + type: string + type: + description: Type specifies the intended type for this Account object. + enum: + - folder + - account + type: string + required: + - displayName + - type + type: object + status: + description: AccountStatus defines the observed state of Account + properties: + conditions: + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + namespace: + type: string + nextReconcileTime: + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/charts/account-operator-crds/test-values.yaml b/charts/account-operator-crds/test-values.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/charts/account-operator-crds/tests/__snapshot__/deployment_test.yaml.snap b/charts/account-operator-crds/tests/__snapshot__/deployment_test.yaml.snap new file mode 100644 index 000000000..b4837184c --- /dev/null +++ b/charts/account-operator-crds/tests/__snapshot__/deployment_test.yaml.snap @@ -0,0 +1,205 @@ +operator match the snapshot: + 1: | + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + name: accounts.core.openmfp.io + spec: + group: core.openmfp.io + names: + kind: Account + listKind: AccountList + plural: accounts + singular: account + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.displayName + name: Display Name + type: string + - jsonPath: .status.namespace + name: Account Namespace + type: string + - jsonPath: .spec.type + name: Type + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Account is the Schema for the accounts API + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: AccountSpec defines the desired state of Account + properties: + creator: + description: The initial creator of this account + type: string + data: + description: Additional information that should be stored with the account + x-kubernetes-preserve-unknown-fields: true + description: + description: An optional description for this account + type: string + displayName: + description: The display name for this account + maxLength: 255 + type: string + extensions: + items: + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + readyConditionType: + description: |- + The type of a condition that must be set to True on the Extension object + for the extension to be considered reconciled and ready. If this is empty, + the extension is considered ready. + type: string + specGoTemplate: + x-kubernetes-preserve-unknown-fields: true + required: + - specGoTemplate + type: object + type: array + namespace: + description: Namespace is the account should take ownership of + type: string + type: + description: Type specifies the intended type for this Account object. + enum: + - folder + - account + type: string + required: + - displayName + - type + type: object + status: + description: AccountStatus defines the observed state of Account + properties: + conditions: + items: + description: |- + Condition contains details for one aspect of the current state of this API Resource. + --- + This struct is intended for direct use as an array at the field path .status.conditions. For example, + + + type FooStatus struct{ + // Represents the observations of a foo's current state. + // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" + // +patchMergeKey=type + // +patchStrategy=merge + // +listType=map + // +listMapKey=type + Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + + + // other fields + } + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + namespace: + type: string + nextReconcileTime: + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/charts/account-operator-crds/tests/deployment_test.yaml b/charts/account-operator-crds/tests/deployment_test.yaml new file mode 100644 index 000000000..0eca5c3c6 --- /dev/null +++ b/charts/account-operator-crds/tests/deployment_test.yaml @@ -0,0 +1,12 @@ +suite: operator +templates: + - core.openmfp.io_accounts.yaml +values: + - ../test-values.yaml +chart: + version: 0.1.1 + appVersion: 1.16.0 +tests: + - it: operator match the snapshot + asserts: + - matchSnapshot: {} \ No newline at end of file diff --git a/charts/account-operator-crds/values.yaml b/charts/account-operator-crds/values.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/charts/account-operator/.helmignore b/charts/account-operator/.helmignore new file mode 100644 index 000000000..0e8a0eb36 --- /dev/null +++ b/charts/account-operator/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/account-operator/Chart.lock b/charts/account-operator/Chart.lock new file mode 100644 index 000000000..b05b88ff5 --- /dev/null +++ b/charts/account-operator/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: account-operator-crds + repository: file://../account-operator-crds + version: 0.0.2 +- name: common + repository: file://../common + version: 0.1.3 +digest: sha256:730dc28746874baa598e3ff9907363d78806445b26f348daedfe2a01582cd803 +generated: "2024-10-11T11:32:48.745658+02:00" diff --git a/charts/account-operator/Chart.yaml b/charts/account-operator/Chart.yaml new file mode 100644 index 000000000..ca8ff8e03 --- /dev/null +++ b/charts/account-operator/Chart.yaml @@ -0,0 +1,14 @@ +apiVersion: v2 +name: account-operator +description: A Helm chart for Kubernetes +type: application +version: 0.1.11 +appVersion: "0.54.0" +dependencies: + - name: account-operator-crds + version: 0.0.2 + condition: crds.enabled + repository: file://../account-operator-crds + - name: common + version: 0.1.3 + repository: file://../common diff --git a/charts/account-operator/charts/account-operator-crds-0.0.2.tgz b/charts/account-operator/charts/account-operator-crds-0.0.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e77e53019b0cd8a82f40347f9f827a96df68f408 GIT binary patch literal 3658 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 literal 0 HcmV?d00001 diff --git a/charts/account-operator/charts/common-0.1.3.tgz b/charts/account-operator/charts/common-0.1.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..efd5812a857916b0532745c86f24ddd962d77e27 GIT binary patch literal 491 zcmVDc zVQyr3R8em|NM&qo0PI%HirX*{_E}Fc7z*tnTG^3f$gT8JD3sE|UW?*PwgO2uk{k%> zzI$~pe3S6SKk)A=pDN2Q_a zY6Et)g%9lptwE2D7@=_uef1E3XmAZmZmh5evLE#^n$ab>cZ3mt!odH%P%XMEHGnz( zcl&_4T6+qM=V#Jg${kd-@j@C0v>y|?+5q|)6$*#_X%KF#G=2x^E0<1$zk|1}sbIAn zB~iIwyjq+dPBhP`G25S>j(hSlCOhbw1~u_>V(#}Q?wzUY;GF+bizoclD)j{`i~a&l zV2=NJUIhGK6)etwH^ED;JgIsk6b%X>?T8S3b87;yfPM%(9y<-9RUYVLKSu=O@Or%H hO}sf1m~!pjKP4g}BH};5j{pDw|Nr7O%DDg%000>c;*0