mirror of
https://github.com/kubevela/kubevela.git
synced 2026-02-14 18:10:21 +00:00
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:
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,7 +0,0 @@
|
||||
apiVersion: core.oam.dev/v1beta1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: cluster-1
|
||||
spec:
|
||||
kubeconfigSecretRef:
|
||||
name: kubeconfig-cluster-1
|
||||
@@ -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:
|
||||
- "*"
|
||||
@@ -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`
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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`.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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/
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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: []
|
||||
@@ -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"
|
||||
@@ -1 +0,0 @@
|
||||
dependencies:
|
||||
@@ -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}}
|
||||
@@ -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 -}}
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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 }}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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/
|
||||
|
||||
|
||||
|
||||
@@ -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).
|
||||
@@ -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
|
||||
@@ -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]
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user