Chore: Cleanup useless examples (#5067)

* Chore: remove appdeployment examples as it's already deprecated

Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>

* Chore: remove approllout docs as it's already deprecated

Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>

* Chore: remove kubecon 2020 demo as it's not worked due to deprecation

Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>

* Chore: remove unused Observability Implementation

Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>

Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
This commit is contained in:
Jianbo Sun
2022-11-15 14:02:13 +08:00
committed by GitHub
parent e706b5d4a3
commit 467e7c992b
53 changed files with 0 additions and 3397 deletions

View File

@@ -1,128 +0,0 @@
# AppDeployment Tutorial
1. Create an Application
```bash
$ cat <<EOF | kubectl apply -f -
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: example-app
annotations:
app.oam.dev/revision-only: "true"
spec:
components:
- name: testsvc
type: webservice
properties:
addRevisionLabel: true
image: crccheck/hello-world
port: 8000
EOF
```
This will create `example-app-v1` AppRevision. Check it:
```bash
$ kubectl get applicationrevisions.core.oam.dev
NAME AGE
example-app-v1 116s
```
With above annotation this won't create any pod instances.
1. Then use the above AppRevision to create an AppDeployment.
```bash
$ kubectl apply -f appdeployment-1.yaml
```
> Note that in order to AppDeployment to work, your workload object must have a `spec.replicas` field for scaling.
1. Now you can check that there will 1 deployment and 2 pod instances deployed
```bash
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
testsvc-v1 2/2 2 0 27s
```
1. Update Application properties:
```bash
$ cat <<EOF | kubectl apply -f -
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: example-app
annotations:
app.oam.dev/revision-only: "true"
spec:
components:
- name: testsvc
type: webservice
properties:
addRevisionLabel: true
image: nginx
port: 80
EOF
```
This will create a new `example-app-v2` AppRevision. Check it:
```bash
$ kubectl get applicationrevisions.core.oam.dev
NAME
example-app-v1
example-app-v2
```
1. Then use the two AppRevisions to update the AppDeployment:
```bash
$ kubectl apply -f appdeployment-2.yaml
```
(Optional) If you have Istio installed, you can apply the AppDeployment with traffic split:
```bash
# set up gateway if not yet
$ kubectl apply -f gateway.yaml
$ kubectl apply -f appdeployment-2-traffic.yaml
```
Note that for traffic split to work, your must set the following pod labels in workload cue templates (see [webservice.cue](https://github.com/oam-dev/kubevela/blob/master/hack/vela-templates/cue/webservice.cue)):
```shell
"app.oam.dev/component": context.name
"app.oam.dev/appRevision": context.appRevision
```
1. Now you can check that there will 1 deployment and 1 pod per revision.
```bash
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
testsvc-v1 1/1 1 1 2m14s
testsvc-v2 1/1 1 1 8s
```
(Optional) To verify traffic split:
```bash
# run this in another terminal
$ kubectl -n istio-system port-forward service/istio-ingressgateway 8080:80
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
# The command should return pages of either docker whale or nginx in 50/50
$ curl -H "Host: example-app.example.com" http://localhost:8080/
```
1. Cleanup:
```bash
kubectl delete appdeployments.core.oam.dev --all
kubectl delete applications.core.oam.dev --all
```

View File

@@ -1,11 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: AppDeployment
metadata:
name: example-appdeploy
spec:
appRevisions:
- revisionName: example-app-v1
placement:
- distribution:
replicas: 2

View File

@@ -1,32 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: AppDeployment
metadata:
name: example-appdeploy
spec:
traffic:
hosts:
- example-app.example.com
gateways:
- example-app-gateway
http:
- weightedTargets:
- revisionName: example-app-v1
componentName: testsvc
port: 8000
weight: 50
- revisionName: example-app-v2
componentName: testsvc
port: 80
weight: 50
appRevisions:
- revisionName: example-app-v1
placement:
- distribution:
replicas: 1
- revisionName: example-app-v2
placement:
- distribution:
replicas: 1

View File

@@ -1,17 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: AppDeployment
metadata:
name: example-appdeploy
spec:
appRevisions:
- revisionName: example-app-v1
placement:
- distribution:
replicas: 1
- revisionName: example-app-v2
placement:
- distribution:
replicas: 1

View File

@@ -1,7 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: Cluster
metadata:
name: cluster-1
spec:
kubeconfigSecretRef:
name: kubeconfig-cluster-1

View File

@@ -1,14 +0,0 @@
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: example-app-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"

View File

@@ -1,36 +0,0 @@
# Rollout Example
Here is an example of how to rollout an application with a component of type deployment.
## Rollout steps
1. Install deployment based workloadDefinition
```shell
kubectl apply -f docs/examples/deployment-rollout/webservice-definition.yaml
```
2. Apply an application
```shell
kubectl apply -f docs/examples/deployment-rollout/app-source.yaml
```
3. Modify the application image and apply
```shell
kubectl apply -f docs/examples/deployment-rollout/app-target.yaml
```
4. Apply scale appRollout
```shell
kubectl apply -f docs/examples/deployment-rollout/app-rollout-scale.yaml
```
5. Apply the application deployment with pause
```shell
kubectl apply -f docs/examples/deployment-rollout/app-rollout-pause.yaml
```
Check the status of the ApplicationRollout and see the step by step rolling out.
This rollout will pause after the second batch.
6. Apply the application deployment that completes the rollout
```shell
kubectl apply -f docs/examples/deployment-rollout/app-rollout-finish.yaml
```
Check the status of the AppRollout and see the rollout completes, and the
AppRollout's "Rolling State" becomes `rolloutSucceed`

View File

@@ -1,17 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: AppRollout
metadata:
name: rolling-test
spec:
# application (revision) reference
targetAppRevisionName: test-rolling-v2
sourceAppRevisionName: test-rolling-v1
# HPA reference (optional)
componentList:
- metrics-provider
rolloutPlan:
rolloutStrategy: "IncreaseFirst"
rolloutBatches:
- replicas: 10%
- replicas: 2
- replicas: 2

View File

@@ -1,18 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: AppRollout
metadata:
name: rolling-test
spec:
# application (revision) reference
targetAppRevisionName: test-rolling-v2
sourceAppRevisionName: test-rolling-v1
# HPA reference (optional)
componentList:
- metrics-provider
rolloutPlan:
rolloutStrategy: "IncreaseFirst"
rolloutBatches:
- replicas: 10%
- replicas: 2
- replicas: 2
batchPartition: 1

View File

@@ -1,14 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: AppRollout
metadata:
name: rolling-test
spec:
# application (revision) reference
targetAppRevisionName: test-rolling-v1
componentList:
- metrics-provider
rolloutPlan:
rolloutStrategy: "IncreaseFirst"
rolloutBatches:
- replicas: 5
targetSize: 5

View File

@@ -1,16 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: test-rolling
annotations:
"app.oam.dev/rollout-template": "true"
spec:
components:
- name: metrics-provider
type: webservice
properties:
cmd:
- ./podinfo
- stress-cpu=1
image: stefanprodan/podinfo:4.0.6
port: 8080

View File

@@ -1,16 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: test-rolling
annotations:
"app.oam.dev/rollout-template": "true"
spec:
components:
- name: metrics-provider
type: webservice
properties:
cmd:
- ./podinfo
- stress-cpu=1
image: stefanprodan/podinfo:5.0.2
port: 8080

View File

@@ -1,100 +0,0 @@
# Code generated by KubeVela templates. DO NOT EDIT.
apiVersion: core.oam.dev/v1beta1
kind: ComponentDefinition
metadata:
name: webservice
annotations:
definition.oam.dev/description: "Describes long-running, scalable, containerized services that have a stable network endpoint to receive external network traffic from customers."
spec:
workload:
definition:
apiVersion: apps/v1
kind: Deployment
schematic:
cue:
template: |
import (
apps "kube/apps/v1"
)
output: apps.#Deployment
output: {
spec: {
selector: matchLabels: {
"app.oam.dev/component": context.name
}
if parameter["replicas"] != _|_ {
replicas: parameter.replicas
}
template: {
metadata: labels: {
"app.oam.dev/component": context.name
}
spec: {
containers: [{
name: context.name
image: parameter.image
if parameter["cmd"] != _|_ {
command: parameter.cmd
}
if parameter["env"] != _|_ {
env: parameter.env
}
if context["config"] != _|_ {
env: context.config
}
ports: [{
containerPort: parameter.port
}]
if parameter["cpu"] != _|_ {
resources: {
limits:
cpu: parameter.cpu
requests:
cpu: parameter.cpu
}
}
}]
}
}
}
}
parameter: {
// +usage=Which image would you like to use for your service
// +short=i
image: string
// +usage=Commands to run in the container
cmd?: [...string]
// +usage=Which port do you want customer traffic sent to
// +short=p
port: *80 | int
// +usage=Define arguments by using environment variables
env?: [...{
// +usage=Environment variable name
name: string
// +usage=The value of the environment variable
value?: string
// +usage=Specifies a source the value of this var should come from
valueFrom?: {
// +usage=Selects a key of a secret in the pod's namespace
secretKeyRef: {
// +usage=The name of the secret in the pod's namespace to select from
name: string
// +usage=The key of the secret to select from. Must be a valid secret key
key: string
}
}
}]
// +usage=Number of CPU units for the service, like `0.5` (0.5 CPU core), `1` (1 CPU core)
cpu?: string
// +usage=Number of pods in the deployment
replicas?: int
}

View File

@@ -1,81 +0,0 @@
# Kubecon 2020 NA Kubevela Tutorial
> :warning: This is an outdated tutorial only applies to the old version of kubevela.
Before you read, you need to know what you are doing.
## Pre-requisites
* Kubernetes cluster version >1.16
(minikube or kind are fine)
* Verify with `kubectl config current-context` and `kubectl version`
* One of the crossplane supported public cloud (AWS, Azure, Alibaba Cloud, GCK) access key and secret
* Install Crossplane(later)
* Download KubeVela release from [release page](https://github.com/oam-dev/kubevela/releases/tag/v0.0.9)
* Unpack the package and add it to `PATH` by running `sudo mv ./vela /usr/local/bin/vela`
* Run `vela install`
## Lab 1: Use vela to deploy a simple application
### Purpose: Showcase the simple to use, application centric vela user interfaces.
* Sync with cluster `vela system update`
* List installed workloads `vela workloads`
* List installed traits `vela traits`
* Deploy a simple application with
```
vela svc deploy back -t worker --image crccheck/hello-world --app lab1
vela svc deploy front -t webservice --image crccheck/hello-world --port 8000 --app lab1
```
* Show application status `vela app show lab1`
## Lab 2: Add and apply KubeWatch
### Purpose: Showcase the steps to add and use capacity from community
* Create a [slack bot](https://api.slack.com/apps?new_app=1)
* Add a cap center `vela cap center config mycap https://github.com/oam-dev/catalog/tree/master/registry`
* Check capabilities `vela cap ls`
* Install the kubewatch capability `vela cap add mycap/kubewatch`
* Create an application `vela comp deploy mycomp -t webservice --image crccheck/hello-world --port 8000 --app lab2`
* Add kubewatch trait to the application `vela kubewatch mycomp --app lab2 --webhook https://hooks.slack.com/<yourid>`
* Check the slack channel to verify the notifications
## Lab 3: Manage cloud resource and applications in application centric way
### Purpose: Showcase the application centric view of appfile
### Install Crossplane (This lab uses crossplane version 0.13)
Also the examples are based on Alibaba Cloud settings
* Create crossplane namespace: `kubectl create ns crossplane-system`
* Install crossplane helm chart: `helm install crossplane charts/crossplane/ --namespace crossplane-system`
* Install crossplane cli: `curl -sL https://raw.githubusercontent.com/crossplane/crossplane/release-0.13/install.sh | sh`
* Add crossplane to `PATH`: `sudo mv kubectl-crossplane /usr/local/bin`
* Configure cloud provider(Alibaba Cloud)
* Add cloud provider: `kubectl crossplane install provider crossplane/provider-alibaba:v0.3.0`
* Create provider secret: `kubectl create secret generic alibaba-creds --from-literal=accessKeyId=<change here> --from-literal=accessKeySecret=<change here> -n crossplane-system`
* Configure the provider: `kubectl apply -f script/provider.yaml`
* Configure infrastructure: `kubectl crossplane install configuration crossplane/getting-started-with-alibaba:v0.13`
### Import the database workload definition
First, register the db workload definition:
`kubectl apply -f script/def_db.yaml`
The webservice workload is customized a little.
`kubectl apply -f script/webservice.yaml`
Don't forget to update vela:
`vela system update`
### Apply the appfile
`vela up`
### Access the web-ui
If you have a cluster supporting Ingress, the route trait will work.
`kubectl get ingress` command will show the ip address of the web-ui. Copy that service and add the `<ip address> kubevela.kubecon.demo ` record to your local machine's `/etc/hosts`. Then you may access the GUI from web browser.
If you don't have Ingress installed, the eaisest way to access the demo app is through port forwarding :`kubectl port-forward <your webui pod name> 8080` and access it from browser using `http://localhost:8080`.

View File

@@ -1,21 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj

View File

@@ -1,36 +0,0 @@
apiVersion: v1
appVersion: 0.13.0
description: Crossplane is an open source Kubernetes add-on that extends any cluster
with the ability to provision and manage cloud infrastructure, services, and applications
using kubectl, GitOps, or any tool that works with the Kubernetes API.
home: https://crossplane.io
icon: https://crossplane.io/images/favicon_192x192.png
keywords:
- cloud
- infrastructure
- services
- application
- database
- cache
- bucket
- infra
- app
- ops
- oam
- gcp
- azure
- aws
- alibaba
- cloudsql
- rds
- s3
- azuredatabase
- asparadb
- gke
- aks
- eks
maintainers:
- email: info@crossplane.io
name: Crossplane Maintainers
name: crossplane
version: 0.13.0

View File

@@ -1,8 +0,0 @@
Thanks for installing Crossplane!
Your next steps are:
1. Install Providers: https://crossplane.io/docs/master/getting-started/install-configure.html
2. Provision Infrastructure: https://crossplane.io/docs/master/getting-started/provision-infrastructure.html
3. Publish Infrastructure: https://crossplane.io/docs/master/getting-started/publish-infrastructure.html
4. Run Applications: https://crossplane.io/docs/master/getting-started/run-applications.html

View File

@@ -1,128 +0,0 @@
# Install Crossplane
Crossplane can be easily installed into any existing Kubernetes cluster using
the regularly published Helm chart. The Helm chart contains all the custom
resources and controllers needed to deploy and configure Crossplane.
## Pre-requisites
* [Kubernetes cluster], minimum version `v1.15.0+`
* [Helm], minimum version `v3.0.0+`.
## Installation
Helm charts for Crossplane are currently published to the `alpha` and `master`
channels. In the future, `beta` and `stable` will also be available.
### Alpha
The alpha channel is the most recent release of Crossplane that is considered
ready for testing by the community.
```bash
kubectl create namespace crossplane-system
helm repo add crossplane-alpha https://charts.crossplane.io/alpha
helm install crossplane --namespace crossplane-system crossplane-alpha/crossplane
```
### Master
The `master` channel contains the latest commits, with all automated tests
passing. `master` is subject to instability, incompatibility, and features may
be added or removed without much prior notice. It is recommended to use one of
the more stable channels, but if you want the absolute newest Crossplane
installed, then you can use the `master` channel.
To install the Helm chart from master, you will need to pass the specific
version returned by the `search` command:
```bash
kubectl create namespace crossplane-system
helm repo add crossplane-master https://charts.crossplane.io/master/
helm search repo crossplane-master --devel
helm install crossplane --namespace crossplane-system crossplane-master/crossplane --version <version> --devel
```
## Uninstalling the Chart
To uninstall/delete the `crossplane` deployment:
```bash
helm delete crossplane --namespace crossplane-system
```
That command removes all Kubernetes components associated with Crossplane,
including all the custom resources and controllers.
## Configuration
The following tables lists the configurable parameters of the Crossplane chart
and their default values.
| Parameter | Description | Default |
| --- | --- | --- |
| `image.repository` | Image | `crossplane/crossplane` |
| `image.tag` | Image tag | `master` |
| `image.pullPolicy` | Image pull policy | `Always` |
| `imagePullSecrets` | Names of image pull secrets to use | `dockerhub` |
| `replicas` | The number of replicas to run for the Crossplane and RBAC Manager (if enabled) pods | `1` |
| `deploymentStrategy` | The deployment strategy for the Crossplane and RBAC Manager (if enabled) pods | `RollingUpdate` |
| `priorityClassName` | Priority class name for Crossplane and RBAC Manager (if enabled) pods | `""` |
| `resourcesCrossplane.limits.cpu` | CPU resource limits for Crossplane | `100m` |
| `resourcesCrossplane.limits.memory` | Memory resource limits for Crossplane | `512Mi` |
| `resourcesCrossplane.requests.cpu` | CPU resource requests for Crossplane | `100m` |
| `resourcesCrossplane.requests.memory` | Memory resource requests for Crossplane | `256Mi` |
| `packageCache.medium` | Storage medium for package cache. `Memory` means volume will be backed by tmpfs, which can be useful for development. | `""` |
| `packageCache.sizeLimit` | Size limit for package cache. If medium is `Memory` then maximum usage would be the minimum of this value the sum of all memory limits on containers in the Crossplane pod. | `5Mi` |
| `packageCache.pvc` | Name of the PersistentVolumeClaim to be used as the package cache. Providing a value will cause the default emptyDir volume to not be mounted. | `""` |
| `resourcesRBACManager.limits.cpu` | CPU resource limits for RBAC Manager | `100m` |
| `resourcesRBACManager.limits.memory` | Memory resource limits for RBAC Manager | `512Mi` |
| `resourcesRBACManager.requests.cpu` | CPU resource requests for RBAC Manager | `100m` |
| `resourcesRBACManager.requests.memory` | Memory resource requests for RBAC Manager | `256Mi` |
| `rbacManager.deploy` | Deploy RBAC Manager and its required roles | `true` |
| `rbacManager.managementPolicy`| The extent to which the RBAC manager will manage permissions. `All` indicates to manage all Crossplane controller and user roles. `Basic` indicates to only manage Crossplane controller roles and the `crossplane-admin`, `crossplane-edit`, and `crossplane-view` user roles. | `All` |
| `alpha.oam.enabled` | Deploy the `crossplane/oam-kubernetes-runtime` Helm chart | `false` |
### Command Line
You can pass the settings with helm command line parameters. Specify each
parameter using the `--set key=value[,key=value]` argument to `helm install`.
For example, the following command will install Crossplane with an image pull
policy of `IfNotPresent`.
```bash
helm install --namespace crossplane-system crossplane-alpha/crossplane --set image.pullPolicy=IfNotPresent
```
### Settings File
Alternatively, a yaml file that specifies the values for the above parameters
(`values.yaml`) can be provided while installing the chart.
```bash
helm install crossplane --namespace crossplane-system crossplane-alpha/crossplane -f values.yaml
```
Here are the sample settings to get you started.
```yaml
replicas: 1
deploymentStrategy: RollingUpdate
image:
repository: crossplane/crossplane
tag: alpha
pullPolicy: Always
imagePullSecrets:
- dockerhub
```
<!-- Named Links -->
[Kubernetes cluster]: https://kubernetes.io/docs/setup/
[Minikube]: https://kubernetes.io/docs/tasks/tools/install-minikube/
[Helm]: https://docs.helm.sh/using_helm/

View File

@@ -1,218 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: compositeresourcedefinitions.apiextensions.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .metadata.creationTimestamp
name: AGE
type: date
group: apiextensions.crossplane.io
names:
categories:
- crossplane
kind: CompositeResourceDefinition
listKind: CompositeResourceDefinitionList
plural: compositeresourcedefinitions
shortNames:
- xrd
singular: compositeresourcedefinition
scope: Cluster
subresources:
status: {}
validation:
openAPIV3Schema:
description: An CompositeResourceDefinition defines a new kind of composite infrastructure resource. The new resource is composed of other composite or managed infrastructure resources.
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: CompositeResourceDefinitionSpec specifies the desired state of the definition.
properties:
claimNames:
description: ClaimNames specifies the names of an optional composite resource claim. When claim names are specified Crossplane will create a namespaced 'composite resource claim' CRD that corresponds to the defined composite resource. This composite resource claim acts as a namespaced proxy for the composite resource; creating, updating, or deleting the claim will create, update, or delete a corresponding composite resource. You may add claim names to an existing CompositeResourceDefinition, but they cannot be changed once they have been set.
properties:
categories:
description: categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`.
items:
type: string
type: array
kind:
description: kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls.
type: string
listKind:
description: listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
type: string
plural:
description: plural is the plural name of the resource to serve. The custom resources are served under `/apis/<group>/<version>/.../<plural>`. Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`). Must be all lowercase.
type: string
shortNames:
description: shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get <shortname>`. It must be all lowercase.
items:
type: string
type: array
singular:
description: singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
type: string
required:
- kind
- plural
type: object
connectionSecretKeys:
description: ConnectionSecretKeys is the list of keys that will be exposed to the end user of the defined kind.
items:
type: string
type: array
crdSpecTemplate:
description: CRDSpecTemplate is the base CRD template. The final CRD will have additional fields to the base template to accommodate Crossplane machinery.
properties:
additionalPrinterColumns:
description: additionalPrinterColumns specifies additional columns returned in Table output. See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details. If present, this field configures columns for all versions. Top-level and per-version columns are mutually exclusive. If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
items:
description: CustomResourceColumnDefinition specifies a column for server side printing.
properties:
JSONPath:
description: JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column.
type: string
description:
description: description is a human readable description of this column.
type: string
format:
description: format is an optional OpenAPI type definition for this column. The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
type: string
name:
description: name is a human readable name for the column.
type: string
priority:
description: priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0.
format: int32
type: integer
type:
description: type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
type: string
required:
- JSONPath
- name
- type
type: object
type: array
group:
description: group is the API group of the defined custom resource. The custom resources are served under `/apis/<group>/...`. Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`).
type: string
names:
description: names specify the resource and kind names for the custom resource.
properties:
categories:
description: categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`.
items:
type: string
type: array
kind:
description: kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls.
type: string
listKind:
description: listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
type: string
plural:
description: plural is the plural name of the resource to serve. The custom resources are served under `/apis/<group>/<version>/.../<plural>`. Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`). Must be all lowercase.
type: string
shortNames:
description: shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get <shortname>`. It must be all lowercase.
items:
type: string
type: array
singular:
description: singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
type: string
required:
- kind
- plural
type: object
validation:
description: validation describes the schema used for validation and pruning of the custom resource. If present, this validation schema is used to validate all versions. Top-level and per-version schemas are mutually exclusive.
properties:
openAPIV3Schema:
description: openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
type: object
type: object
version:
description: 'version is the API version of the defined custom resource. The custom resources are served under `/apis/<group>/<version>/...`. Must match the name of the first item in the `versions` list if `version` and `versions` are both specified. Optional if `versions` is specified. Deprecated: use `versions` instead.'
type: string
required:
- group
- names
type: object
defaultCompositionRef:
description: DefaultCompositionRef refers to the Composition resource that will be used in case no composition selector is given.
properties:
name:
description: Name of the referenced object.
type: string
required:
- name
type: object
enforcedCompositionRef:
description: EnforcedCompositionRef refers to the Composition resource that will be used by all composite instances whose schema is defined by this definition.
properties:
name:
description: Name of the referenced object.
type: string
required:
- name
type: object
type: object
status:
description: CompositeResourceDefinitionStatus shows the observed state of the definition.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,208 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: compositions.apiextensions.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .metadata.creationTimestamp
name: AGE
type: date
group: apiextensions.crossplane.io
names:
categories:
- crossplane
kind: Composition
listKind: CompositionList
plural: compositions
singular: composition
scope: Cluster
subresources:
status: {}
validation:
openAPIV3Schema:
description: Composition defines the group of resources to be created when a compatible type is created with reference to the composition.
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: CompositionSpec specifies the desired state of the definition.
properties:
compositeTypeRef:
description: CompositeTypeRef specifies the type of composite resource that this composition is compatible with.
properties:
apiVersion:
description: APIVersion of the type.
type: string
kind:
description: Kind of the type.
type: string
required:
- apiVersion
- kind
type: object
resources:
description: Resources is the list of resource templates that will be used when a composite resource referring to this composition is created.
items:
description: ComposedTemplate is used to provide information about how the composed resource should be processed.
properties:
base:
description: Base is the target resource that the patches will be applied on.
type: object
connectionDetails:
description: ConnectionDetails lists the propagation secret keys from this target resource to the composition instance connection secret.
items:
description: ConnectionDetail includes the information about the propagation of the connection information from one secret to another.
properties:
fromConnectionSecretKey:
description: FromConnectionSecretKey is the key that will be used to fetch the value from the given target resource.
type: string
name:
description: Name of the connection secret key that will be propagated to the connection secret of the composition instance. Leave empty if you'd like to use the same key name.
type: string
value:
description: Value that will be propagated to the connection secret of the composition instance. Typically you should use FromConnectionSecretKey instead, but an explicit value may be set to inject a fixed, non-sensitive connection secret values, for example a well-known port. Supercedes FromConnectionSecretKey when set.
type: string
type: object
type: array
patches:
description: Patches will be applied as overlay to the base resource.
items:
description: Patch is used to patch the field on the base resource at ToFieldPath after piping the value that is at FromFieldPath of the target resource through transformers.
properties:
fromFieldPath:
description: FromFieldPath is the path of the field on the upstream resource whose value to be used as input.
type: string
toFieldPath:
description: ToFieldPath is the path of the field on the base resource whose value will be changed with the result of transforms. Leave empty if you'd like to propagate to the same path on the target resource.
type: string
transforms:
description: Transforms are the list of functions that are used as a FIFO pipe for the input to be transformed.
items:
description: Transform is a unit of process whose input is transformed into an output with the supplied configuration.
properties:
map:
additionalProperties:
type: string
description: Map uses the input as a key in the given map and returns the value.
type: object
math:
description: Math is used to transform the input via mathematical operations such as multiplication.
properties:
multiply:
description: Multiply the value.
format: int64
type: integer
type: object
string:
description: String is used to transform the input into a string or a different kind of string. Note that the input does not necessarily need to be a string.
properties:
fmt:
description: Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
type: string
required:
- fmt
type: object
type:
description: Type of the transform to be run.
type: string
required:
- type
type: object
type: array
required:
- fromFieldPath
type: object
type: array
readinessChecks:
description: ReadinessChecks allows users to define custom readiness checks. All checks have to return true in order for resource to be considered ready. The default readiness check is to have the "Ready" condition to be "True".
items:
description: ReadinessCheck is used to indicate how to tell whether a resource is ready for consumption
properties:
fieldPath:
description: FieldPath shows the path of the field whose value will be used.
type: string
matchInteger:
description: MatchInt is the value you'd like to match if you're using "MatchInt" type.
format: int64
type: integer
matchString:
description: MatchString is the value you'd like to match if you're using "MatchString" type.
type: string
type:
description: Type indicates the type of probe you'd like to use.
enum:
- MatchString
- MatchInteger
- NonEmpty
- None
type: string
required:
- type
type: object
type: array
required:
- base
type: object
type: array
writeConnectionSecretsToNamespace:
description: WriteConnectionSecretsToNamespace specifies the namespace in which the connection secrets of composite resource dynamically provisioned using this composition will be created.
type: string
required:
- compositeTypeRef
- resources
type: object
status:
description: CompositionStatus shows the observed state of the composition.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,68 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: providers.kubernetes.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .spec.credentialsSecretRef.name
name: SECRET-NAME
priority: 1
type: string
group: kubernetes.crossplane.io
names:
categories:
- crossplane
kind: Provider
listKind: ProviderList
plural: providers
singular: provider
scope: Cluster
subresources: {}
validation:
openAPIV3Schema:
description: 'A Provider configures a Kubernetes ''provider'', i.e. a connection to a particular Kubernetes cluster using the referenced Secret. Deprecated: Please implement a ProviderConfig for your Kubernetes-native Provider.'
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: 'A ProviderSpec defines the desired state of a Provider. Deprecated: Please implement a ProviderConfigSpec for your Kubernetes-native Provider.'
properties:
credentialsSecretRef:
description: A Secret containing connection credentials for a Kubernetes cluster client that will be used to authenticate to this Kubernetes Provider. This will typically be the connection secret of a KubernetesCluster claim, or the secret created by a Kubernetes service account, but could also be manually configured to connect to a preexisting cluster.
properties:
name:
description: Name of the secret.
type: string
namespace:
description: Namespace of the secret.
type: string
required:
- name
- namespace
type: object
required:
- credentialsSecretRef
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,156 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: configurationrevisions.pkg.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .status.conditions[?(@.type=='Healthy')].status
name: HEALTHY
type: string
- JSONPath: .spec.revision
name: REVISION
type: string
- JSONPath: .spec.image
name: IMAGE
type: string
- JSONPath: .spec.desiredState
name: STATE
type: string
- JSONPath: .metadata.creationTimestamp
name: AGE
type: date
group: pkg.crossplane.io
names:
categories:
- crossplane
kind: ConfigurationRevision
listKind: ConfigurationRevisionList
plural: configurationrevisions
singular: configurationrevision
scope: Cluster
subresources:
status: {}
validation:
openAPIV3Schema:
description: A ConfigurationRevision that has been added to Crossplane.
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: PackageRevisionSpec specifies the desired state of a PackageRevision.
properties:
desiredState:
description: DesiredState of the PackageRevision. Can be either Active or Inactive.
type: string
image:
description: Package image used by install Pod to extract package contents.
type: string
packagePullPolicy:
description: PackagePullPolicy defines the pull policy for the package. It is also applied to any images pulled for the package, such as a provider's controller image. Default is IfNotPresent.
type: string
packagePullSecrets:
description: PackagePullSecrets are named secrets in the same namespace that can be used to fetch packages from private registries. They are also applied to any images pulled for the package, such as a provider's controller image.
items:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: array
revision:
description: Revision number. Indicates when the revision will be garbage collected based on the parent's RevisionHistoryLimit.
format: int64
type: integer
required:
- desiredState
- image
- revision
type: object
status:
description: PackageRevisionStatus represents the observed state of a PackageRevision.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
controllerRef:
description: A Reference to a named object.
properties:
name:
description: Name of the referenced object.
type: string
required:
- name
type: object
objectRefs:
description: References to objects owned by PackageRevision.
items:
description: A TypedReference refers to an object by Name, Kind, and APIVersion. It is commonly used to reference cluster-scoped objects or objects where the namespace is already known.
properties:
apiVersion:
description: APIVersion of the referenced object.
type: string
kind:
description: Kind of the referenced object.
type: string
name:
description: Name of the referenced object.
type: string
uid:
description: UID of the referenced object.
type: string
required:
- apiVersion
- kind
- name
type: object
type: array
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,122 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: configurations.pkg.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .status.conditions[?(@.type=='Installed')].status
name: INSTALLED
type: string
- JSONPath: .status.conditions[?(@.type=='Healthy')].status
name: HEALTHY
type: string
- JSONPath: .spec.package
name: PACKAGE
type: string
- JSONPath: .metadata.creationTimestamp
name: AGE
type: date
group: pkg.crossplane.io
names:
categories:
- crossplane
- pkg
kind: Configuration
listKind: ConfigurationList
plural: configurations
singular: configuration
scope: Cluster
subresources:
status: {}
validation:
openAPIV3Schema:
description: Configuration is the CRD type for a request to add a configuration to Crossplane.
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: ConfigurationSpec specifies details about a request to install a configuration to Crossplane.
properties:
package:
description: Package is the name of the package that is being requested.
type: string
packagePullPolicy:
description: PackagePullPolicy defines the pull policy for the package. Default is IfNotPresent.
type: string
packagePullSecrets:
description: PackagePullSecrets are named secrets in the same namespace that can be used to fetch packages from private registries.
items:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: array
revisionActivationPolicy:
description: RevisionActivationPolicy specifies how the package controller should update from one revision to the next. Options are Automatic or Manual. Default is Automatic.
type: string
revisionHistoryLimit:
description: RevisionHistoryLimit dictates how the package controller cleans up old inactive package revisions. Defaults to 1. Can be disabled by explicitly setting to 0.
format: int64
type: integer
required:
- package
type: object
status:
description: ConfigurationStatus represents the observed state of a Configuration.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
currentRevision:
type: string
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,156 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: providerrevisions.pkg.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .status.conditions[?(@.type=='Healthy')].status
name: HEALTHY
type: string
- JSONPath: .spec.revision
name: REVISION
type: string
- JSONPath: .spec.image
name: IMAGE
type: string
- JSONPath: .spec.desiredState
name: STATE
type: string
- JSONPath: .metadata.creationTimestamp
name: AGE
type: date
group: pkg.crossplane.io
names:
categories:
- crossplane
kind: ProviderRevision
listKind: ProviderRevisionList
plural: providerrevisions
singular: providerrevision
scope: Cluster
subresources:
status: {}
validation:
openAPIV3Schema:
description: A ProviderRevision that has been added to Crossplane.
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: PackageRevisionSpec specifies the desired state of a PackageRevision.
properties:
desiredState:
description: DesiredState of the PackageRevision. Can be either Active or Inactive.
type: string
image:
description: Package image used by install Pod to extract package contents.
type: string
packagePullPolicy:
description: PackagePullPolicy defines the pull policy for the package. It is also applied to any images pulled for the package, such as a provider's controller image. Default is IfNotPresent.
type: string
packagePullSecrets:
description: PackagePullSecrets are named secrets in the same namespace that can be used to fetch packages from private registries. They are also applied to any images pulled for the package, such as a provider's controller image.
items:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: array
revision:
description: Revision number. Indicates when the revision will be garbage collected based on the parent's RevisionHistoryLimit.
format: int64
type: integer
required:
- desiredState
- image
- revision
type: object
status:
description: PackageRevisionStatus represents the observed state of a PackageRevision.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
controllerRef:
description: A Reference to a named object.
properties:
name:
description: Name of the referenced object.
type: string
required:
- name
type: object
objectRefs:
description: References to objects owned by PackageRevision.
items:
description: A TypedReference refers to an object by Name, Kind, and APIVersion. It is commonly used to reference cluster-scoped objects or objects where the namespace is already known.
properties:
apiVersion:
description: APIVersion of the referenced object.
type: string
kind:
description: Kind of the referenced object.
type: string
name:
description: Name of the referenced object.
type: string
uid:
description: UID of the referenced object.
type: string
required:
- apiVersion
- kind
- name
type: object
type: array
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,122 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: providers.pkg.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .status.conditions[?(@.type=='Installed')].status
name: INSTALLED
type: string
- JSONPath: .status.conditions[?(@.type=='Healthy')].status
name: HEALTHY
type: string
- JSONPath: .spec.package
name: PACKAGE
type: string
- JSONPath: .metadata.creationTimestamp
name: AGE
type: date
group: pkg.crossplane.io
names:
categories:
- crossplane
- pkg
kind: Provider
listKind: ProviderList
plural: providers
singular: provider
scope: Cluster
subresources:
status: {}
validation:
openAPIV3Schema:
description: Provider is the CRD type for a request to add a provider to Crossplane.
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: ProviderSpec specifies details about a request to install a provider to Crossplane.
properties:
package:
description: Package is the name of the package that is being requested.
type: string
packagePullPolicy:
description: PackagePullPolicy defines the pull policy for the package. Default is IfNotPresent.
type: string
packagePullSecrets:
description: PackagePullSecrets are named secrets in the same namespace that can be used to fetch packages from private registries.
items:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: array
revisionActivationPolicy:
description: RevisionActivationPolicy specifies how the package controller should update from one revision to the next. Options are Automatic or Manual. Default is Automatic.
type: string
revisionHistoryLimit:
description: RevisionHistoryLimit dictates how the package controller cleans up old inactive package revisions. Defaults to 1. Can be disabled by explicitly setting to 0.
format: int64
type: integer
required:
- package
type: object
status:
description: ProviderStatus represents the observed state of a Provider.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
currentRevision:
type: string
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,133 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: kubernetesapplicationresources.workload.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .spec.template.kind
name: TEMPLATE-KIND
type: string
- JSONPath: .spec.template.metadata.name
name: TEMPLATE-NAME
type: string
- JSONPath: .spec.targetRef.name
name: CLUSTER
type: string
- JSONPath: .status.state
name: STATUS
type: string
group: workload.crossplane.io
names:
categories:
- crossplane
kind: KubernetesApplicationResource
listKind: KubernetesApplicationResourceList
plural: kubernetesapplicationresources
singular: kubernetesapplicationresource
scope: Namespaced
subresources:
status: {}
validation:
openAPIV3Schema:
description: 'A KubernetesApplicationResource is a resource of a Kubernetes application. Each resource templates a single Kubernetes resource to be deployed to its scheduled KubernetesCluster. Deprecated: See // Deprecated: See https://github.com/crossplane/crossplane/issues/1595'
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: KubernetesApplicationResourceSpec specifies the desired state of a KubernetesApplicationResource.
properties:
secrets:
description: Secrets upon which this application resource depends. These secrets will be propagated to the Kubernetes cluster to which this application is scheduled.
items:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: array
targetRef:
description: Target to which this application has been scheduled.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
required:
- name
type: object
template:
description: A Template for a Kubernetes resource to be submitted to the KubernetesCluster to which this application resource is scheduled. The resource must be understood by the KubernetesCluster. Crossplane requires only that the resource contains standard Kubernetes type and object metadata.
type: object
required:
- template
type: object
status:
description: KubernetesApplicationResourceStatus represents the observed state of a KubernetesApplicationResource.
properties:
conditionedStatus:
description: A ConditionedStatus reflects the observed status of a resource. Only one condition of each type may exist.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
type: object
remote:
description: Remote status of the resource templated by this application resource.
properties:
raw:
description: Raw JSON representation of the remote status as a byte array.
format: byte
type: string
type: object
state:
description: State of the application.
type: string
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,216 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: kubernetesapplications.workload.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .spec.targetRef.name
name: CLUSTER
type: string
- JSONPath: .status.state
name: STATUS
type: string
- JSONPath: .status.desiredResources
name: DESIRED
type: integer
- JSONPath: .status.submittedResources
name: SUBMITTED
type: integer
group: workload.crossplane.io
names:
categories:
- crossplane
kind: KubernetesApplication
listKind: KubernetesApplicationList
plural: kubernetesapplications
singular: kubernetesapplication
scope: Namespaced
subresources:
status: {}
validation:
openAPIV3Schema:
description: 'A KubernetesApplication defines an application deployed by Crossplane to a Kubernetes cluster, i.e. a portable KubernetesCluster resource claim. Deprecated: See https://github.com/crossplane/crossplane/issues/1595'
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: A KubernetesApplicationSpec specifies the resources of a Kubernetes application.
properties:
resourceSelector:
description: ResourceSelector selects the KubernetesApplicationResources that are managed by this KubernetesApplication. Note that a KubernetesApplication will never adopt orphaned KubernetesApplicationResources, and thus this selector serves only to help match a KubernetesApplication to its KubernetesApplicationResources.
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
properties:
key:
description: key is the label key that the selector applies to.
type: string
operator:
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
resourceTemplates:
description: ResourceTemplates specifies a set of Kubernetes application resources managed by this application.
items:
description: A KubernetesApplicationResourceTemplate is used to instantiate new KubernetesApplicationResources.
properties:
metadata:
type: object
spec:
description: KubernetesApplicationResourceSpec specifies the desired state of a KubernetesApplicationResource.
properties:
secrets:
description: Secrets upon which this application resource depends. These secrets will be propagated to the Kubernetes cluster to which this application is scheduled.
items:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: array
targetRef:
description: Target to which this application has been scheduled.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
required:
- name
type: object
template:
description: A Template for a Kubernetes resource to be submitted to the KubernetesCluster to which this application resource is scheduled. The resource must be understood by the KubernetesCluster. Crossplane requires only that the resource contains standard Kubernetes type and object metadata.
type: object
required:
- template
type: object
type: object
type: array
targetRef:
description: Target to which this application has been scheduled.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
required:
- name
type: object
targetSelector:
description: TargetSelector selects the targets to which this application may be scheduled. Leave both match labels and expressions empty to match any target.
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
properties:
key:
description: key is the label key that the selector applies to.
type: string
operator:
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
required:
- resourceSelector
- resourceTemplates
type: object
status:
description: KubernetesApplicationStatus represents the observed state of a KubernetesApplication.
properties:
conditionedStatus:
description: A ConditionedStatus reflects the observed status of a resource. Only one condition of each type may exist.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
type: object
desiredResources:
description: Desired resources of this application, i.e. the number of resources that match this application's resource selector.
type: integer
state:
description: State of the application.
type: string
submittedResources:
description: Submitted resources of this workload, i.e. the subset of desired resources that have been successfully submitted to their scheduled Kubernetes cluster.
type: integer
type: object
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,120 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.2.4
creationTimestamp: null
name: kubernetestargets.workload.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .spec.clusterRef.name
name: CLUSTER
type: string
group: workload.crossplane.io
names:
categories:
- crossplane
kind: KubernetesTarget
listKind: KubernetesTargetList
plural: kubernetestargets
singular: kubernetestarget
scope: Namespaced
subresources: {}
validation:
openAPIV3Schema:
description: 'A KubernetesTarget is a scheduling target for a Kubernetes Application. Deprecated: See https://github.com/crossplane/crossplane/issues/1595'
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: A TargetSpec defines the common fields of objects used for exposing infrastructure to workloads that can be scheduled to.
properties:
clusterRef:
description: A ResourceReference specifies an existing managed resource, in any namespace, which this target should attempt to propagate a connection secret from.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
connectionSecretRef:
description: WriteConnectionSecretToReference specifies the name of a Secret, in the same namespace as this target, to which any connection details for this target should be written or already exist. Connection secrets referenced by a target should contain information for connecting to a resource that allows for scheduling of workloads.
properties:
name:
description: Name of the secret.
type: string
required:
- name
type: object
type: object
status:
description: A TargetStatus defines the observed status a target.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from one status to another.
type: string
status:
description: Status of this condition; is it currently True, False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
type: object
required:
- spec
type: object
version: v1alpha1
versions:
- name: v1alpha1
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,6 +0,0 @@
dependencies:
- name: oam-kubernetes-runtime
repository: https://charts.crossplane.io/alpha
version: 0.2.2
digest: sha256:c719dbcb1845241851f2b55ada9975b862885c1cecd5bae19e6b5339291fc81b
generated: "2020-10-10T01:47:45.31055709Z"

View File

@@ -1 +0,0 @@
dependencies:

View File

@@ -1,8 +0,0 @@
Release: {{.Release.Name}}
Chart Name: {{.Chart.Name}}
Chart Description: {{.Chart.Description}}
Chart Version: {{.Chart.Version}}
Chart Application Version: {{.Chart.AppVersion}}
Kube Version: {{.Capabilities.KubeVersion}}

View File

@@ -1,14 +0,0 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

View File

@@ -1,81 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.crossplane.io/aggregate-to-crossplane: "true"
rules: []
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:system:aggregate-to-crossplane
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
crossplane.io/scope: "system"
rbac.crossplane.io/aggregate-to-crossplane: "true"
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- create
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- "*"
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- list
- watch
- create
- update
- patch
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- "*"
- apiGroups:
- kubernetes.crossplane.io
- workload.crossplane.io
- apiextensions.crossplane.io
- pkg.crossplane.io
resources:
- "*"
verbs:
- "*"
- apiGroups:
- extensions
- apps
resources:
- deployments
verbs:
- get
- list
- create
- update
- patch
- delete
- watch

View File

@@ -1,17 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ template "name" . }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "name" . }}
subjects:
- kind: ServiceAccount
name: {{ template "name" . }}
namespace: {{ .Release.Namespace }}

View File

@@ -1,63 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "name" . }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: {{ template "name" . }}
release: {{ .Release.Name }}
strategy:
type: {{ .Values.deploymentStrategy }}
template:
metadata:
labels:
app: {{ template "name" . }}
release: {{ .Release.Name }}
spec:
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName | quote }}
{{- end }}
serviceAccountName: {{ template "name" . }}
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
{{- if .Values.args }}
args:
{{- range $arg := .Values.args }}
- {{ $arg }}
{{- end }}
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Chart.Name }}
resources:
{{- toYaml .Values.resourcesCrossplane | nindent 12 }}
securityContext:
runAsUser: 2000
runAsGroup: 2000
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- mountPath: /cache
name: package-cache
volumes:
- name: package-cache
{{- if .Values.packageCache.pvc }}
persistentVolumeClaim:
claimName: {{ .Values.packageCache.pvc }}
{{- else }}
emptyDir:
medium: {{ .Values.packageCache.medium }}
sizeLimit: {{ .Values.packageCache.sizeLimit }}
{{- end }}

View File

@@ -1,11 +0,0 @@
{{- range $.Values.provider.packages }}
{{ if ne . "" }}
apiVersion: pkg.crossplane.io/v1alpha1
kind: Provider
metadata:
name: {{ . | trim | replace "/" "-" | replace ":" "-" }}
spec:
package: {{ . | trim }}
---
{{ end }}
{{- end }}

View File

@@ -1,80 +0,0 @@
{{- if .Values.rbacManager.deploy }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}-rbac-manager
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- namespaces
- serviceaccounts
verbs:
- get
- list
- watch
- apiGroups:
- apiextensions.crossplane.io
resources:
- compositeresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- pkg.crossplane.io
resources:
- providerrevisions
verbs:
- get
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
- roles
verbs:
- get
- list
- watch
- create
- update
- patch
# The RBAC manager may grant access it does not have.
- escalate
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
verbs:
- "*"
{{- end}}

View File

@@ -1,19 +0,0 @@
{{- if .Values.rbacManager.deploy }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ template "name" . }}-rbac-manager
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "name" . }}-rbac-manager
subjects:
- kind: ServiceAccount
name: rbac-manager
namespace: {{ .Release.Namespace }}
{{- end}}

View File

@@ -1,46 +0,0 @@
{{- if .Values.rbacManager.deploy }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "name" . }}-rbac-manager
labels:
app: {{ template "name" . }}-rbac-manager
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: {{ template "name" . }}-rbac-manager
release: {{ .Release.Name }}
strategy:
type: {{ .Values.deploymentStrategy }}
template:
metadata:
labels:
app: {{ template "name" . }}-rbac-manager
release: {{ .Release.Name }}
spec:
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName | quote }}
{{- end }}
serviceAccountName: rbac-manager
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
args:
- rbac
{{- if .Values.rbacManager.managementPolicy }}
- --manage={{ .Values.rbacManager.managementPolicy }}
{{- end }}
{{- range $arg := .Values.rbacManager.args }}
- {{ $arg }}
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Chart.Name }}
resources:
{{- toYaml .Values.resourcesRBACManager | nindent 12 }}
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
{{- end}}

View File

@@ -1,267 +0,0 @@
{{- if .Values.rbacManager.deploy }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ template "name" . }}-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "name" . }}-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: {{ template "name" . }}:masters
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}-admin
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.crossplane.io/aggregate-to-admin: "true"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}-edit
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.crossplane.io/aggregate-to-edit: "true"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}-view
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.crossplane.io/aggregate-to-view: "true"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}-browse
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.crossplane.io/aggregate-to-browse: "true"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:aggregate-to-admin
labels:
rbac.crossplane.io/aggregate-to-admin: "true"
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
# Crossplane administrators have access to view events.
- apiGroups: [""]
resources: [events]
verbs: [get, list, watch]
# Crossplane administrators must create provider credential secrets, and may
# need to read or otherwise interact with connection secrets. They may also need
# to create or annotate namespaces.
- apiGroups: [""]
resources: [secrets, namespaces]
verbs: ["*"]
# Crossplane administrators have access to view the roles that they may be able
# to grant to other subjects.
- apiGroups: [rbac.authorization.k8s.io]
resources: [clusterroles, roles]
verbs: [get, list, watch]
# Crossplane administrators have access to grant the access they have to other
# subjects.
- apiGroups: [rbac.authorization.k8s.io]
resources: [clusterrolebindings, rolebindings]
verbs: ["*"]
# Crossplane administrators have full access to built in Crossplane types.
- apiGroups:
- apiextensions.crossplane.io
- pkg.crossplane.io
resources: ["*"]
verbs: ["*"]
# Crossplane administrators have access to view CRDs in order to debug XRDs.
- apiGroups: [apiextensions.k8s.io]
resources: [customresourcedefinitions]
verbs: [get, list, watch]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:aggregate-to-edit
labels:
rbac.crossplane.io/aggregate-to-edit: "true"
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
# Crossplane editors have access to view events.
- apiGroups: [""]
resources: [events]
verbs: [get, list, watch]
# Crossplane editors must create provider credential secrets, and may need to
# read or otherwise interact with connection secrets.
- apiGroups: [""]
resources: [secrets]
verbs: ["*"]
# Crossplane editors may see which namespaces exist, but not edit them.
- apiGroups: [""]
resources: [namespaces]
verbs: [get, list, watch]
# Crossplane editors have full access to built in Crossplane types.
- apiGroups:
- apiextensions.crossplane.io
- pkg.crossplane.io
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:aggregate-to-view
labels:
rbac.crossplane.io/aggregate-to-view: "true"
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
# Crossplane viewers have access to view events.
- apiGroups: [""]
resources: [events]
verbs: [get, list, watch]
# Crossplane viewers may see which namespaces exist.
- apiGroups: [""]
resources: [namespaces]
verbs: [get, list, watch]
# Crossplane viewers have read-only access to built in Crossplane types.
- apiGroups:
- apiextensions.crossplane.io
- pkg.crossplane.io
resources: ["*"]
verbs: [get, list, watch]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:aggregate-to-browse
labels:
rbac.crossplane.io/aggregate-to-browse: "true"
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
# Crossplane browsers have access to view events.
- apiGroups: [""]
resources: [events]
verbs: [get, list, watch]
# Crossplane browsers have read-only access to compositions and XRDs. This
# allows them to discover and select an appropriate composition when creating a
# resource claim.
- apiGroups:
- apiextensions.crossplane.io
resources: ["*"]
verbs: [get, list, watch]
{{- if .Values.rbacManager.managementPolicy }}
# The below ClusterRoles are aggregated to the namespaced RBAC roles created by
# the Crossplane RBAC manager when it is running in --manage=All mode.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:aggregate-to-ns-admin
labels:
rbac.crossplane.io/aggregate-to-ns-admin: "true"
rbac.crossplane.io/base-of-ns-admin: "true"
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
# Crossplane namespace admins have access to view events.
- apiGroups: [""]
resources: [events]
verbs: [get, list, watch]
# Crossplane namespace admins may need to read or otherwise interact with
# resource claim connection secrets.
- apiGroups: [""]
resources: [secrets]
verbs: ["*"]
# Crossplane namespace admins have access to view the roles that they may be
# able to grant to other subjects.
- apiGroups: [rbac.authorization.k8s.io]
resources: [roles]
verbs: [get, list, watch]
# Crossplane namespace admins have access to grant the access they have to other
# subjects.
- apiGroups: [rbac.authorization.k8s.io]
resources: [rolebindings]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:aggregate-to-ns-edit
labels:
rbac.crossplane.io/aggregate-to-ns-edit: "true"
rbac.crossplane.io/base-of-ns-edit: "true"
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
# Crossplane namespace editors have access to view events.
- apiGroups: [""]
resources: [events]
verbs: [get, list, watch]
# Crossplane namespace editors may need to read or otherwise interact with
# resource claim connection secrets.
- apiGroups: [""]
resources: [secrets]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "name" . }}:aggregate-to-ns-view
labels:
rbac.crossplane.io/aggregate-to-ns-view: "true"
rbac.crossplane.io/base-of-ns-view: "true"
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
# Crossplane namespace viewers have access to view events.
- apiGroups: [""]
resources: [events]
verbs: [get, list, watch]
{{- end}}
{{- end}}

View File

@@ -1,11 +0,0 @@
{{- if .Values.rbacManager.deploy }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: rbac-manager
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- end}}

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "name" . }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- range $index, $secret := .Values.imagePullSecrets }}
- name: {{ $secret }}
{{- end }}
{{ end }}

View File

@@ -1,48 +0,0 @@
replicas: 1
deploymentStrategy: RollingUpdate
image:
repository: crossplane/crossplane
tag: v0.13.0
pullPolicy: Always
args: {}
provider:
packages: []
imagePullSecrets:
- dockerhub
rbacManager:
deploy: true
managementPolicy: All
args: {}
priorityClassName: ""
resourcesCrossplane:
limits:
cpu: 100m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
packageCache:
medium: ""
sizeLimit: 5Mi
pvc: ""
resourcesRBACManager:
limits:
cpu: 100m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
alpha:
oam:
enabled: false

View File

@@ -1,48 +0,0 @@
replicas: 1
deploymentStrategy: RollingUpdate
image:
repository: crossplane/crossplane
tag: %%VERSION%%
pullPolicy: Always
args: {}
provider:
packages: []
imagePullSecrets:
- dockerhub
rbacManager:
deploy: true
managementPolicy: All
args: {}
priorityClassName: ""
resourcesCrossplane:
limits:
cpu: 100m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
packageCache:
medium: ""
sizeLimit: 5Mi
pvc: ""
resourcesRBACManager:
limits:
cpu: 100m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
alpha:
oam:
enabled: false

View File

@@ -1,33 +0,0 @@
apiVersion: core.oam.dev/v1alpha2
kind: WorkloadDefinition
metadata:
name: rds
annotations:
definition.oam.dev/description: "RDS on Ali Cloud"
spec:
definitionRef:
name: rdsinstances.database.alibaba.crossplane.io
extension:
template: |
output: {
apiVersion: "database.example.org/v1alpha1"
kind: "PostgreSQLInstance"
metadata:
name: context.name
spec: {
parameters:
storageGB: 20
compositionSelector: {
matchLabels:
provider: parameter.provider
}
writeConnectionSecretToRef:
name: parameter.secretname
}
}
parameter: {
secretname: *"db-conn" | string
provider: *"alibaba" | string
}

View File

@@ -1,14 +0,0 @@
apiVersion: alibaba.crossplane.io/v1alpha1
kind: ProviderConfig
metadata:
name: default
spec:
region: us-west-1
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: alibaba-creds
key: credentials

View File

@@ -1,52 +0,0 @@
apiVersion: core.oam.dev/v1alpha2
kind: WorkloadDefinition
metadata:
name: webservice
annotations:
definition.oam.dev/description: "Flight tracker web ui"
spec:
definitionRef:
name: podspecworkloads.standard.oam.dev
childResourceKinds:
- apiVersion: apps/v1
kind: Deployment
- apiVersion: v1
kind: Service
extension:
template: |
output: {
apiVersion: "standard.oam.dev/v1alpha1"
kind: "PodSpecWorkload"
metadata: name: parameter.name
spec: {
replicas: 1
podSpec: {
containers: [{
image: parameter.image
name: parameter.name
env: parameter.env
ports: [{
containerPort: parameter.port
protocol: "TCP"
}]
}]
}
}
}
#webservice: {
name: string
image: string
port: int
env: [...{
name: string
value?: string
valueFrom?: {
secretKeyRef: {
name: string
key: string
}
}
}]
}
parameter: #webservice

View File

@@ -1,79 +0,0 @@
name: lab3
services:
database:
type: rds
name: alibabaRds
data-api:
type: webservice
image: artursouza/rudr-data-api:0.50
name: data-api
port: 3009
env:
- name: DATABASE_NAME
value: postgres
- name: DATABASE_DRIVER
value: postgresql
- name: DATABASE_HOSTNAME
valueFrom:
secretKeyRef:
name: db-conn
key: endpoint
- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: db-conn
key: username
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: db-conn
key: password
- name: DATABASE_PORT
value: "1921"
flights-api:
type: webservice
image: sonofjorel/rudr-flights-api:0.49
name: flights-api
port: 3003
env:
- name: DATA_SERVICE_URI
value: http://data-api.default.svc.cluster.local:8080/
quakes-api:
type: webservice
image: sonofjorel/rudr-quakes-api:0.49
name: quakes-api
port: 3012
env:
- name: DATA_SERVICE_URI
value: http://data-api.default.svc.cluster.local:8080/
weather-api:
type: webservice
image: sonofjorel/rudr-weather-api:0.49
name: weather-api
port: 3015
env:
- name: DATA_SERVICE_URI
value: http://data-api.default.svc.cluster.local:8080/
web-ui:
type: webservice
image: sonofjorel/rudr-web-ui:0.49
name: web-ui
port: 8080
route:
domain: kubevela.kubecon.demo
env:
- name: FLIGHT_API_ROOT
value: http://flights-api.default.svc.cluster.local:8080/
- name: WEATHER_API_ROOT
value: http://weather-api.default.svc.cluster.local:8080/
- name: QUAKES_API_ROOT
value: http://quakes-api.default.svc.cluster.local:8080/

View File

@@ -1,4 +0,0 @@
This repo is the source artifacts for addon `observability`.
- All files in definitions are source artifacts which is now built-in in `vela-core` helm chart.
- `application-observability.yaml` will help developer [observability](../../../vela-templates/addons/observability).

View File

@@ -1,130 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: observability
spec: { }
---
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
annotations:
addons.oam.dev/description: "An out of the box solution for KubeVela observability"
name: grafana
namespace: observability
spec:
components:
# install grafana datasource registration chart
- name: grafana-registration-release
type: helm
properties:
repoType: git
url: https://github.com/oam-dev/grafana-registration
git:
branch: master
chart: ./chart
targetNamespace: observability
values:
replicaCount: 1
# install Grafana
- name: grafana
properties:
chart: grafana
version: 6.14.1
repoType: helm
# original url: https://grafana.github.io/helm-charts
url: https://charts.kubevela.net/addons
targetNamespace: observability
releaseName: grafana
type: helm
traits:
- type: pure-ingress
properties:
domain: grafana.c58136db32cbc44cca364bf1cf7f90519.cn-hongkong.alicontainer.com
http:
"/": 80
- type: import-grafana-dashboard
properties:
grafanaServiceName: grafana
grafanaServiceNamespace: observability
credentialSecret: grafana
credentialSecretNamespace: observability
urls:
- "https://charts.kubevela.net/addons/dashboards/kubevela_core_logging.json"
- "https://charts.kubevela.net/addons/dashboards/kubevela_core_monitoring.json"
- "https://charts.kubevela.net/addons/dashboards/flux2/cluster.json"
- "https://charts.kubevela.net/addons/dashboards/kubevela_application_logging.json"
# install loki
- name: loki
type: helm
properties:
chart: loki-stack
version: 2.4.1
repoType: helm
# original url: https://grafana.github.io/helm-charts
url: https://charts.kubevela.net/addons
targetNamespace: observability
releaseName: loki
traits:
- type: register-grafana-datasource # register loki datasource to Grafana
properties:
grafanaServiceName: grafana
grafanaServiceNamespace: observability
credentialSecret: grafana
credentialSecretNamespace: observability
name: loki
service: loki
namespace: observability
type: loki
access: proxy
# install Prometheus
- name: prometheus-server
type: helm
properties:
chart: prometheus
version: 14.4.1
repoType: helm
# original url: https://prometheus-community.github.io/helm-charts
url: https://charts.kubevela.net/addons
targetNamespace: observability
releaseName: prometheus
values:
alertmanager:
persistentVolume:
storageClass: "alicloud-disk-available"
size: "20Gi"
server:
persistentVolume:
storageClass: "alicloud-disk-available"
size: "20Gi"
traits:
- type: register-grafana-datasource # register Prometheus datasource to Grafana
properties:
grafanaServiceName: grafana
grafanaServiceNamespace: observability
credentialSecret: grafana
credentialSecretNamespace: observability
name: prometheus
service: prometheus-server
namespace: observability
type: prometheus
access: proxy
# install kube-state-metrics
- name: kube-state-metrics
type: helm
properties:
chart: kube-state-metrics
version: 3.4.1
repoType: helm
# original url: https://prometheus-community.github.io/helm-charts
url: https://charts.kubevela.net/addons
targetNamespace: observability
values:
image:
repository: oamdev/kube-state-metrics
tag: v2.1.0

View File

@@ -1,31 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: TraitDefinition
metadata:
annotations:
definition.oam.dev/description: "Import dashboards to Grafana"
name: import-grafana-dashboard
namespace: vela-system
spec:
schematic:
cue:
template: |
outputs: registerdatasource: {
apiVersion: "grafana.extension.oam.dev/v1alpha1"
kind: "ImportDashboard"
spec: {
grafana: {
service: parameter.grafanaServiceName
namespace: parameter.grafanaServiceNamespace
credentialSecret: parameter.credentialSecret
credentialSecretNamespace: parameter.credentialSecretNamespace
}
urls: parameter.urls
}
}
parameter: {
grafanaServiceName: string
grafanaServiceNamespace: *"default" | string
credentialSecret: string
credentialSecretNamespace: *"default" | string
urls: [...string]
}

View File

@@ -1,58 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: TraitDefinition
metadata:
annotations:
definition.oam.dev/description: "Enable public web traffic for the component without creating a Service."
name: pure-ingress
namespace: vela-system
spec:
status:
customStatus: |-
let igs = context.outputs.ingress.status.loadBalancer.ingress
if igs == _|_ {
message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n"
}
if len(igs) > 0 {
if igs[0].ip != _|_ {
message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip
}
if igs[0].ip == _|_ {
message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host
}
}
healthPolicy: |
isHealth: len(context.outputs.ingress.status.loadBalancer.ingress) > 0
schematic:
cue:
template: |
outputs: ingress: {
apiVersion: "networking.k8s.io/v1beta1"
kind: "Ingress"
metadata:
name: context.name
spec: {
rules: [{
host: parameter.domain
http: {
paths: [
for k, v in parameter.http {
path: k
backend: {
serviceName: context.name
servicePort: v
}
},
]
}
}]
}
}
parameter: {
// +usage=Specify the domain you want to expose
domain: string
// +usage=Specify the mapping relationship between the http path and the workload port
http: [string]: int
}

View File

@@ -1,42 +0,0 @@
apiVersion: core.oam.dev/v1beta1
kind: TraitDefinition
metadata:
annotations:
definition.oam.dev/description: "Add a datasource to Grafana"
name: register-grafana-datasource
namespace: vela-system
spec:
schematic:
cue:
template: |
outputs: registerdatasource: {
apiVersion: "grafana.extension.oam.dev/v1alpha1"
kind: "DatasourceRegistration"
spec: {
grafana: {
service: parameter.grafanaServiceName
namespace: parameter.grafanaServiceNamespace
credentialSecret: parameter.credentialSecret
credentialSecretNamespace: parameter.credentialSecretNamespace
}
datasource: {
name: parameter.name
type: parameter.type
access: parameter.access
service: parameter.service
namespace: parameter.namespace
}
}
}
parameter: {
grafanaServiceName: string
grafanaServiceNamespace: *"default" | string
credentialSecret: string
credentialSecretNamespace: string
name: string
type: string
access: *"proxy" | string
service: string
namespace: *"default" | string
}