crd/kalm.yaml (503 lines of code) (raw):

apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: creationTimestamp: null labels: controller-tools.k8s.io: "1.0" name: releases.kalm.google.com spec: group: kalm.google.com names: kind: Release plural: releases scope: Namespaced versions: - name: v1alpha1 served: true storage: true schema: openAPIV3Schema: type: object 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/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/api-conventions.md#types-kinds' type: string metadata: type: object spec: properties: applicationRef: description: '`applicationRef` is a reference to an Application object in the same namespace that will include the information about the application and will be used as the root/owner object referenced by all resources related to the application, including this Release object.' type: object deadlineSeconds: description: The duration in seconds relative to the time when the controller starts the actuation of the desired application state (via an installation or upgrade), before the controller gives up and actively terminates it. By default, no deadline is set. format: int64 minimum: 0 type: integer digest: description: '`digest` is the digest of the application manifest. Digest is a content-addressable identifier and can be used in addition to `version` to validate the application manifest to download.' type: string name: description: '`name` is the uniquely identifiable name of the application manifest to retrieve from the repository. This field will be ignored for "Deployer" format repository.' type: string repositoryRef: description: '`repositoryRef` references a Repository that houses application manifests.' type: object revisionHistoryLimit: description: The number of revision history objects (i.e. ControllerRevisions) to retain to allow rollback. If not specified, 10 most recent ControllerRevision objects will be kept. format: int32 type: integer serviceAccountName: description: '`serviceAccountName` is the service account used for launching the application.' type: string values: description: '`values` is a string containing (unparsed) JSON data for declaring parameter values to customize the application. The value must be able to be serialized to JSON format. This is only used when referencing a "Helm" format Repository.' type: string valuesSecretRef: description: '`valuesSecretRef` is an optional reference to a Secret in the same namespace containing data for declaring parameter values to customize the application. This is only used when referencing a "Deployer" format Repository.' type: object version: description: '`version` is the version of the application manifest. The version needs to follow SemVer 2 guidelines (in MAJOR.MINOR.PATCH format).' minLength: 1 type: string required: - repositoryRef - version - applicationRef type: object status: properties: availableVersions: description: '`availableVersions` lists all available versions of this application manifest discovered from the repository.' items: properties: deprecated: description: '`deprecated` is a flag that tells whether this release has been deprecated.' type: boolean digest: description: '`digest` is the checksum of the artifact, either a helm chart or a deployer' type: string name: description: '`name` is the name of the application.' type: string recommended: description: '`recommended` is a flag that tells whether this is a recommended update' type: boolean releaseDate: description: '`releaseDate` is the date on which this release became available.' format: date-time type: string releaseNote: description: '`releaseNote` is information about this release.' type: string releaseType: description: '`releaseType` is the type of release. This can be either Feature, BugFix or Security.' items: enum: - Feature - BugFix - Security type: string type: array version: description: '`version` is the version of this release the application.' type: string required: - name - version type: object type: array conditions: description: '`conditions` represents the latest observations of a Release''s current state.' items: properties: lastTransitionTime: description: Last time this condition was updated. format: date-time type: string message: description: A human readable message indicating details about the transition. type: string reason: description: "The reason for the condition's last transition." type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: Type of Release condition. type: string required: - type - status type: object type: array currentReleaseRevision: description: '`currentReleaseRevision` is the current revision number of the Release spec.' format: int64 type: integer currentVersion: description: '`currentVersion` is the current version of the application manifest that has been launched.' type: string type: object status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: creationTimestamp: null labels: controller-tools.k8s.io: "1.0" name: releaserollbacks.kalm.google.com spec: group: kalm.google.com names: kind: ReleaseRollback plural: releaserollbacks scope: Namespaced versions: - name: v1alpha1 served: true storage: true schema: openAPIV3Schema: type: object 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/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/api-conventions.md#types-kinds' type: string metadata: type: object spec: properties: releaseName: description: '`releaseName` is the name of the Release object to auto-rollback on failure.' minLength: 1 type: string rollbackPolicy: description: '`rollbackPolicy` specifies the criteria when a Release should be auto-rolled back. Can be "OnceOnFailure".' enum: - OnceOnFailure type: string required: - releaseName - rollbackPolicy type: object status: properties: lastRollbackTime: description: '`lastRollbackTime` is the RFC 3339 time when the Release that this ReleaseRollback refers to is last rolled back.' format: date-time type: string lastRollbackTo: description: '`lastRollbackTo` is the name of the ControllerRevision that''s last used to roll back the Release that this ReleaseRollback refers to.' type: string type: object status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: creationTimestamp: null labels: controller-tools.k8s.io: "1.0" name: repositories.kalm.google.com spec: group: kalm.google.com names: kind: Repository plural: repositories scope: Namespaced versions: - name: v1alpha1 served: true storage: true schema: openAPIV3Schema: type: object 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/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/api-conventions.md#types-kinds' type: string metadata: type: object spec: properties: secretRef: description: '`secretRef` is an optional reference to a secret in the same namespace to be used for connecting to the repository.' type: object type: description: '`type` indicates the type of the repository. Currently, this can be "Helm" or "Deployer"' enum: - Helm - Deployer type: string url: description: '`url` resolves to a repository that houses application manifests.' minLength: 1 type: string required: - type - url type: object status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: v1 kind: Namespace metadata: labels: controller-tools.k8s.io: "1.0" name: kalm-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: kalm-manager-role rules: - apiGroups: - kalm.google.com resources: - releases verbs: - get - list - watch - create - update - patch - delete - apiGroups: - kalm.google.com resources: - repositories verbs: - get - list - watch - apiGroups: - batch resources: - jobs verbs: - get - list - watch - create - update - patch - delete - apiGroups: - app.k8s.io resources: - applications verbs: - get - list - watch - apiGroups: - apps resources: - controllerrevisions verbs: - get - list - watch - create - update - patch - delete - apiGroups: - "" resources: - events verbs: - create - update - patch - apiGroups: - kalm.google.com resources: - releaserollbacks verbs: - get - list - watch - create - update - patch - delete - apiGroups: - kalm.google.com resources: - releaserollbacks/status verbs: - get - update - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: creationTimestamp: null name: kalm-manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: kalm-manager-role subjects: - kind: ServiceAccount name: default namespace: kalm-system --- apiVersion: v1 kind: Service metadata: labels: control-plane: controller-manager controller-tools.k8s.io: "1.0" name: kalm-controller-manager-service namespace: kalm-system spec: ports: - port: 443 selector: control-plane: controller-manager controller-tools.k8s.io: "1.0" --- apiVersion: apps/v1 kind: StatefulSet metadata: labels: control-plane: controller-manager controller-tools.k8s.io: "1.0" name: kalm-controller-manager namespace: kalm-system spec: podManagementPolicy: Parallel selector: matchLabels: control-plane: controller-manager controller-tools.k8s.io: "1.0" serviceName: kalm-controller-manager-service template: metadata: labels: control-plane: controller-manager controller-tools.k8s.io: "1.0" spec: containers: - command: - /monitor - --source=kalm:http://localhost:8080?whitelisted=controller_runtime_reconcile_queue_length,controller_runtime_reconcile_total,controller_runtime_reconcile_errors_total,controller_runtime_reconcile_time_seconds - --stackdriver-prefix=container.googleapis.com/internal/addons - --pod-id=$(POD_NAME) - --namespace-id=$(POD_NAMESPACE) env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace image: k8s.gcr.io/prometheus-to-sd:v0.5.1 name: prom-to-sd - args: - -features=install-upgrade - -features=auto-rollback command: - /root/manager env: - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace image: marketplace.gcr.io/google/kalm-controller:0.1-alpha imagePullPolicy: Always name: kalm # manager resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi terminationGracePeriodSeconds: 10