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