201 lines
8.8 KiB
Cheetah
201 lines
8.8 KiB
Cheetah
# Copyright 2018 The Kubernetes Authors All rights reserved.
|
||
#
|
||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
# you may not use this file except in compliance with the License.
|
||
# You may obtain a copy of the License at
|
||
#
|
||
# http://www.apache.org/licenses/LICENSE-2.0
|
||
#
|
||
# Unless required by applicable law or agreed to in writing, software
|
||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
# See the License for the specific language governing permissions and
|
||
# limitations under the License.
|
||
|
||
apiVersion: apiextensions.k8s.io/v1
|
||
kind: CustomResourceDefinition
|
||
metadata:
|
||
name: ambassadorinstallations.getambassador.io
|
||
spec:
|
||
additionalPrinterColumns:
|
||
- JSONPath: .spec.version
|
||
name: VERSION
|
||
type: string
|
||
- JSONPath: .spec.updateWindow
|
||
name: UPDATE-WINDOW
|
||
type: integer
|
||
- JSONPath: .status.lastCheckTime
|
||
description: Last time checked
|
||
name: LAST-CHECK
|
||
type: string
|
||
- JSONPath: .status.conditions[?(@.type=='Deployed')].status
|
||
description: Indicates if deployment has completed
|
||
name: DEPLOYED
|
||
type: string
|
||
- JSONPath: .status.conditions[?(@.type=='Deployed')].reason
|
||
description: Reason for deployment completed
|
||
name: REASON
|
||
priority: 1
|
||
type: string
|
||
- JSONPath: .status.conditions[?(@.type=='Deployed')].message
|
||
description: Message for deployment completed
|
||
name: MESSAGE
|
||
priority: 1
|
||
type: string
|
||
- JSONPath: .status.deployedRelease.appVersion
|
||
description: Deployed version of Ambassador
|
||
name: DEPLOYED-VERSION
|
||
type: string
|
||
- JSONPath: .status.deployedRelease.flavor
|
||
description: Deployed flavor of Ambassador (OSS or AES)
|
||
name: DEPLOYED-FLAVOR
|
||
type: string
|
||
group: getambassador.io
|
||
names:
|
||
kind: AmbassadorInstallation
|
||
listKind: AmbassadorInstallationList
|
||
plural: ambassadorinstallations
|
||
singular: ambassadorinstallation
|
||
scope: Namespaced
|
||
subresources:
|
||
status: {}
|
||
validation:
|
||
openAPIV3Schema:
|
||
description: AmbassadorInstallation is the Schema for the ambassadorinstallations
|
||
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: AmbassadorInstallationSpec defines the desired state of AmbassadorInstallation
|
||
properties:
|
||
baseImage:
|
||
description: An (optional) image to use instead of the image specified
|
||
in the Helm chart.
|
||
type: string
|
||
helmRepo:
|
||
description: An (optional) Helm repository.
|
||
type: string
|
||
installOSS:
|
||
description: 'Installs [Ambassador OSS](https://www.getambassador.io/docs/latest/topics/install/install-ambassador-oss/)
|
||
instead of [AES](https://www.getambassador.io/docs/latest/topics/install/).
|
||
Default is false which means it installs AES by default. TODO: 1.
|
||
AES/AOSS is not installed and the user installs using `installOSS:
|
||
true`, then we straight away install AOSS. 2. AOSS is installed via
|
||
operator and the user sets `installOSS: false`, then we perform the
|
||
migration as detailed here - https://www.getambassador.io/docs/latest/topics/install/upgrade-to-edge-stack/
|
||
3. AES is installed and the user sets `installOSS: true`, then we
|
||
point users to the docs which gives them pointers on how to do
|
||
that themselves.'
|
||
type: boolean
|
||
logLevel:
|
||
description: 'An (optional) log level: debug, info...'
|
||
enum:
|
||
- info
|
||
- debug
|
||
- warn
|
||
- warning
|
||
- error
|
||
- critical
|
||
- fatal
|
||
type: string
|
||
updateWindow:
|
||
description: "`updateWindow` is an optional item that will control when
|
||
the updates can take place. This is used to force system updates to
|
||
happen late at night if that’s what the sysadmins want. \n * There
|
||
can be any number of `updateWindow` entries (separated by commas).
|
||
\ * `Never` turns off automatic updates even if there are other entries
|
||
in the comma-separated list. `Never` is used by sysadmins to disable
|
||
all updates during blackout periods by doing a `kubectl apply`
|
||
or using our Edge Policy Console to set this. * Each `updateWindow`
|
||
is in crontab format (see https://crontab.guru/) Some examples of
|
||
`updateWindows` are: - `* 0-6 * * * SUN`: every Sunday, from _0am_
|
||
to _6am_ - `* 5 1 * * *`: every first day of the month, at _5am_
|
||
* The Operator cannot guarantee minute time granularity, so specifying
|
||
\ a minute in the crontab expression can lead to some updates happening
|
||
\ sooner/later than expected."
|
||
type: string
|
||
version:
|
||
description: "We are using SemVer for the version number and it can
|
||
be specified with any level of precision and can optionally end in
|
||
`*`. These are interpreted as: \n * `1.0` = exactly version 1.0 *
|
||
`1.1` = exactly version 1.1 * `1.1.*` = version 1.1 and any bug fix
|
||
versions `1.1.1`, `1.1.2`, `1.1.3`, etc. * `2.*` = version 2.0 and
|
||
any incremental and bug fix versions `2.0`, `2.0.1`, `2.0.2`, `2.1`,
|
||
`2.2`, `2.2.1`, etc. * `*` = all versions. * `3.0-ea` = version `3.0-ea1`
|
||
and any subsequent EA releases on `3.0`. Also selects the final
|
||
3.0 once the final GA version is released. * `4.*-ea` = version `4.0-ea1`
|
||
and any subsequent EA release on `4.0`. Also selects the final GA
|
||
`4.0`. Also selects any incremental and bug fix versions `4.*` and
|
||
`4.*.*`. Also selects the most recent `4.*` EA release i.e., if
|
||
`4.0.5` is the last GA version and there is a `4.1-EA3`, then this
|
||
\ selects `4.1-EA3` over the `4.0.5` GA. \n You can find the reference
|
||
docs about the SemVer syntax accepted [here](https://github.com/Masterminds/semver#basic-comparisons)."
|
||
type: string
|
||
type: object
|
||
status:
|
||
description: AmbassadorInstallationStatus defines the observed state of
|
||
AmbassadorInstallation
|
||
properties:
|
||
conditions:
|
||
description: List of conditions the installation has experienced.
|
||
items:
|
||
description: AmbInsCondition defines an Ambassador installation condition,
|
||
as well as the last time there was a transition to this condition..
|
||
properties:
|
||
lastTransitionTime:
|
||
format: date-time
|
||
type: string
|
||
message:
|
||
type: string
|
||
reason:
|
||
type: string
|
||
status:
|
||
type: string
|
||
type:
|
||
type: string
|
||
required:
|
||
- status
|
||
- type
|
||
type: object
|
||
type: array
|
||
deployedRelease:
|
||
description: the currently deployed Helm chart
|
||
nullable: true
|
||
properties:
|
||
appVersion:
|
||
type: string
|
||
flavor:
|
||
type: string
|
||
manifest:
|
||
type: string
|
||
name:
|
||
type: string
|
||
version:
|
||
type: string
|
||
type: object
|
||
lastCheckTime:
|
||
description: Last time a successful update check was performed.
|
||
format: date-time
|
||
nullable: true
|
||
type: string
|
||
required:
|
||
- conditions
|
||
type: object
|
||
type: object
|
||
version: v2
|
||
versions:
|
||
- name: v2
|
||
served: true
|
||
storage: true
|