Support armada-go image for bootstrap purposes
Signed-off-by: Ruslan Aliev <raliev@mirantis.com> Change-Id: I6d8629a48c1b862db937ddc3cd68792220388b19
This commit is contained in:
parent
2dda3c505c
commit
11c36627ee
@ -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: {}
|
@ -21,6 +21,11 @@ spec:
|
||||
- |-
|
||||
set -x
|
||||
|
||||
if [ ! -e "${ARMADA_LOGFILE}" ]; then
|
||||
touch "${ARMADA_LOGFILE}"
|
||||
fi
|
||||
tail -f "${ARMADA_LOGFILE}" &
|
||||
|
||||
declare -i attempt=1
|
||||
|
||||
while true; do
|
||||
@ -28,9 +33,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
|
||||
@ -72,14 +74,25 @@ spec:
|
||||
- name: metrics
|
||||
mountPath: /tmp/metrics
|
||||
{%- if config['Genesis:enable_operator'] is sameas true %}
|
||||
- args:
|
||||
- --health-probe-bind-address=:8081
|
||||
- --metrics-bind-address=127.0.0.1:8080
|
||||
- --leader-elect
|
||||
- --leader-elect-namespace=ucp
|
||||
command:
|
||||
- /manager
|
||||
- command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- |-
|
||||
set -x
|
||||
|
||||
if [ ! -e "${ARMADA_OPERATOR_LOGFILE}" ]; then
|
||||
touch "${ARMADA_OPERATOR_LOGFILE}"
|
||||
fi
|
||||
tail -f "${ARMADA_OPERATOR_LOGFILE}" &
|
||||
|
||||
/manager \
|
||||
--health-probe-bind-address=:8081 \
|
||||
--metrics-bind-address=127.0.0.1:8080 \
|
||||
--leader-elect \
|
||||
--leader-elect-namespace=ucp 2>&1 | tee -a "${ARMADA_OPERATOR_LOGFILE}"
|
||||
env:
|
||||
- name: ARMADA_OPERATOR_LOGFILE
|
||||
value: /tmp/log/bootstrap-armada-operator.log
|
||||
- name: KUBECONFIG
|
||||
value: /root/.kube/config
|
||||
image: {{ config['Genesis:images.armada-operator'] }}
|
||||
@ -101,6 +114,8 @@ spec:
|
||||
volumeMounts:
|
||||
- name: auth
|
||||
mountPath: /root/.kube
|
||||
- name: log
|
||||
mountPath: /tmp/log
|
||||
{%- endif %}
|
||||
- name: monitor
|
||||
image: {{ config['HostSystem:images.monitoring_image'] }}
|
||||
|
@ -7,6 +7,8 @@
|
||||
mkdir -p /var/log/armada
|
||||
touch /var/log/armada/bootstrap-armada.log
|
||||
chmod 777 /var/log/armada/bootstrap-armada.log
|
||||
touch /var/log/armada/bootstrap-armada-operator.log
|
||||
chmod 777 /var/log/armada/bootstrap-armada-operator.log
|
||||
|
||||
{% set metrics_output_dir = config.get_path('Genesis:armada.metrics.output_dir', '/var/log/node-exporter-textfiles') %}
|
||||
install -d -m 755 {{ metrics_output_dir }}
|
||||
@ -33,10 +35,11 @@ log
|
||||
log === Deploying bootstrap manifest via Armada ===
|
||||
set -x
|
||||
|
||||
while [[ ! -e /var/log/armada/bootstrap-armada.log ]]; do
|
||||
while [[ ! -e /var/log/armada/bootstrap-armada.log || ! -e /var/log/armada/bootstrap-armada-operator.log ]]; do
|
||||
sleep 5
|
||||
done
|
||||
tail -f /var/log/armada/bootstrap-armada.log &
|
||||
tail -f /var/log/armada/bootstrap-armada-operator.log &
|
||||
|
||||
set +x
|
||||
while true; do
|
||||
|
Loading…
Reference in New Issue
Block a user