diff --git a/promenade/templates/roles/genesis/etc/kubernetes/manifests/armada.airshipit.io_armadacharts.yaml b/promenade/templates/roles/genesis/etc/kubernetes/manifests/armada.airshipit.io_armadacharts.yaml new file mode 100644 index 00000000..3c214b86 --- /dev/null +++ b/promenade/templates/roles/genesis/etc/kubernetes/manifests/armada.airshipit.io_armadacharts.yaml @@ -0,0 +1,269 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: armadacharts.armada.airshipit.io +spec: + group: armada.airshipit.io + names: + kind: ArmadaChart + listKind: ArmadaChartList + plural: armadacharts + singular: armadachart + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ArmadaChart is the Schema for the armadacharts 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 + data: + description: ArmadaChartSpec defines the desired state of ArmadaChart + properties: + chart_name: + description: ChartName is an example field of ArmadaChart. Edit armadachart_types.go + to remove/update + type: string + namespace: + description: Namespace is an example field of ArmadaChart. Edit armadachart_types.go + to remove/update + type: string + release: + description: Release is an example field of ArmadaChart. Edit armadachart_types.go + to remove/update + type: string + source: + description: Source is an example field of ArmadaChart. Edit armadachart_types.go + to remove/update + properties: + location: + description: Location is an example field of ArmadaChart. Edit + armadachart_types.go to remove/update + type: string + subpath: + description: Subpath is an example field of ArmadaChart. Edit + armadachart_types.go to remove/update + type: string + type: + description: Type is an example field of ArmadaChart. Edit armadachart_types.go + to remove/update + type: string + type: object + test: + description: Test holds the values for this Helm release. + properties: + enabled: + description: Enabled is an example field of ArmadaChart. Edit + armadachart_types.go to remove/update + type: boolean + type: object + upgrade: + description: Delete holds the values for this Helm release. + properties: + pre: + properties: + delete: + items: + description: ArmadaChartDeleteResource defines the wait + options of ArmadaChart + properties: + labels: + additionalProperties: + type: string + description: Labels is an example field of ArmadaChart. + Edit armadachart_types.go to remove/update + type: object + type: + description: Type is an example field of ArmadaChart. + Edit armadachart_types.go to remove/update + type: string + type: object + type: array + type: object + type: object + values: + description: Values holds the values for this Helm release. + x-kubernetes-preserve-unknown-fields: true + wait: + description: Wait holds the values for this Helm release. + properties: + labels: + additionalProperties: + type: string + description: Labels is an example field of ArmadaChart. Edit armadachart_types.go + to remove/update + type: object + native: + description: ArmadaChartWaitNative defines the wait options of + ArmadaChart + properties: + enabled: + description: Enabled is an example field of ArmadaChart. Edit + armadachart_types.go to remove/update + type: boolean + type: object + resources: + items: + description: ArmadaChartWaitResource defines the wait options + of ArmadaChart + properties: + labels: + additionalProperties: + type: string + description: Labels is an example field of ArmadaChart. + Edit armadachart_types.go to remove/update + type: object + min_ready: + type: string + type: + description: Type is an example field of ArmadaChart. Edit + armadachart_types.go to remove/update + type: string + type: object + type: array + timeout: + description: Timeout is the time to wait for full reconciliation + of Helm release. + type: integer + type: object + type: object + 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 + status: + description: ArmadaChartStatus defines the observed state of ArmadaChart + properties: + conditions: + description: Conditions holds the conditions for the ArmadaChart. + 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, + \n 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\"` \n // 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 + failures: + description: Failures is the reconciliation failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + helmChart: + description: HelmChart is the namespaced name of the HelmChart resource + created by the controller for the ArmadaChart. + type: string + installFailures: + description: InstallFailures is the install failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + lastAppliedRevision: + description: LastAppliedRevision is the revision of the last successfully + applied source. + type: string + lastAttemptedRevision: + description: LastAttemptedRevision is the revision of the last reconciliation + attempt. + type: string + lastAttemptedValuesChecksum: + description: LastAttemptedValuesChecksum is the SHA1 checksum of the + values of the last reconciliation attempt. + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change of the annotation value can + be detected. + type: string + lastReleaseRevision: + description: LastReleaseRevision is the revision of the last successful + Helm release. + type: integer + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + tested: + description: Tested is the bool value whether the Helm Release was + successfully tested or not. + type: boolean + upgradeFailures: + description: UpgradeFailures is the upgrade failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/promenade/templates/roles/genesis/etc/kubernetes/manifests/bootstrap-armada.yaml b/promenade/templates/roles/genesis/etc/kubernetes/manifests/bootstrap-armada.yaml index 4384bb2d..845d43d8 100644 --- a/promenade/templates/roles/genesis/etc/kubernetes/manifests/bootstrap-armada.yaml +++ b/promenade/templates/roles/genesis/etc/kubernetes/manifests/bootstrap-armada.yaml @@ -28,9 +28,6 @@ spec: if armada \ apply \ --target-manifest {{ config.get_path('Genesis:armada.target_manifest', 'cluster-bootstrap') }} \ -{%- if config['Genesis:enable_operator'] is sameas true %} - --enable-operator \ -{%- endif %} $([[ $attempt -le $ARMADA_METRICS_MAX_ATTEMPTS ]] && echo --metrics-output "${ARMADA_METRICS_OUTPUT_DIR}/armada-bootstrap-${attempt}.prom") \ /etc/genesis/armada/assets/manifest.yaml &>> "${ARMADA_LOGFILE}"; then break @@ -78,8 +75,10 @@ spec: - --leader-elect - --leader-elect-namespace=ucp command: - - /manager + - /manager &>> "${ARMADA_LOGFILE}" env: + - name: ARMADA_LOGFILE + value: /tmp/log/bootstrap-armada.log - name: KUBECONFIG value: /root/.kube/config image: {{ config['Genesis:images.armada-operator'] }} @@ -101,6 +100,8 @@ spec: volumeMounts: - name: auth mountPath: /root/.kube + - name: log + mountPath: /tmp/log {%- endif %} - name: monitor image: {{ config['HostSystem:images.monitoring_image'] }}