forked from DevFW-CICD/stacks
removed stacks and added forgejo runner
This commit is contained in:
parent
1e0cb0ff92
commit
edfdc8561c
20 changed files with 12 additions and 729 deletions
|
@ -1,22 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: crossplane-integrations
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
env: dev
|
|
||||||
spec:
|
|
||||||
destination:
|
|
||||||
name: in-cluster
|
|
||||||
namespace: argocd
|
|
||||||
source:
|
|
||||||
path: stacks/crossplane-integrations
|
|
||||||
repoURL: 'https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot'
|
|
||||||
targetRevision: HEAD
|
|
||||||
project: default
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
|
@ -1,22 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: localstack-integration
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
env: dev
|
|
||||||
spec:
|
|
||||||
destination:
|
|
||||||
name: in-cluster
|
|
||||||
namespace: argocd
|
|
||||||
source:
|
|
||||||
path: stacks/localstack-integration
|
|
||||||
repoURL: 'https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot'
|
|
||||||
targetRevision: HEAD
|
|
||||||
project: default
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
|
@ -1,7 +1,7 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
apiVersion: argoproj.io/v1alpha1
|
||||||
kind: Application
|
kind: Application
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus
|
name: forgejo-runner
|
||||||
namespace: argocd
|
namespace: argocd
|
||||||
labels:
|
labels:
|
||||||
env: dev
|
env: dev
|
||||||
|
@ -14,14 +14,14 @@ spec:
|
||||||
- CreateNamespace=true
|
- CreateNamespace=true
|
||||||
destination:
|
destination:
|
||||||
name: in-cluster
|
name: in-cluster
|
||||||
namespace: monitoring
|
namespace: gitea
|
||||||
sources:
|
sources:
|
||||||
- repoURL: https://github.com/prometheus-community/helm-charts
|
- repoURL: https://forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/DevFW/forgejo-runner.git
|
||||||
path: charts/prometheus
|
path: forgejo-runner
|
||||||
targetRevision: HEAD
|
targetRevision: HEAD
|
||||||
helm:
|
helm:
|
||||||
valueFiles:
|
valueFiles:
|
||||||
- $values/stacks/core/prometheus/values.yaml
|
- $values/stacks/core/forgejo-runner/values.yaml
|
||||||
- repoURL: https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot
|
- repoURL: https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot
|
||||||
targetRevision: HEAD
|
targetRevision: HEAD
|
||||||
ref: values
|
ref: values
|
6
kind/stacks/core/forgejo-runner/values.yaml
Normal file
6
kind/stacks/core/forgejo-runner/values.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
registration:
|
||||||
|
enabled: false
|
||||||
|
token: ""
|
||||||
|
# kubectl create secret generic forgejo-runner-token --from-literal=token=TOKENID
|
||||||
|
|
||||||
|
forgejoUrl: http://forgejo-http.gitea.svc.cluster.local:3000
|
|
@ -1,29 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: grafana
|
|
||||||
namespace: argocd
|
|
||||||
# namespace: monitoring
|
|
||||||
labels:
|
|
||||||
env: dev
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
||||||
destination:
|
|
||||||
name: in-cluster
|
|
||||||
# namespace: grafana
|
|
||||||
namespace: monitoring
|
|
||||||
sources:
|
|
||||||
- repoURL: https://github.com/grafana/helm-charts
|
|
||||||
path: charts/grafana
|
|
||||||
targetRevision: HEAD
|
|
||||||
helm:
|
|
||||||
valueFiles:
|
|
||||||
- $values/stacks/core/grafana/values.yaml
|
|
||||||
- repoURL: https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot
|
|
||||||
targetRevision: HEAD
|
|
||||||
ref: values
|
|
|
@ -1,167 +0,0 @@
|
||||||
rbac:
|
|
||||||
create: true
|
|
||||||
## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)
|
|
||||||
# useExistingRole: name-of-some-role
|
|
||||||
# useExistingClusterRole: name-of-some-clusterRole
|
|
||||||
pspEnabled: false
|
|
||||||
pspUseAppArmor: false
|
|
||||||
namespaced: false
|
|
||||||
extraRoleRules: []
|
|
||||||
# - apiGroups: []
|
|
||||||
# resources: []
|
|
||||||
# verbs: []
|
|
||||||
extraClusterRoleRules: []
|
|
||||||
# - apiGroups: []
|
|
||||||
# resources: []
|
|
||||||
# verbs: []
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
nameTest:
|
|
||||||
## ServiceAccount labels.
|
|
||||||
labels: {}
|
|
||||||
## Service account annotations. Can be templated.
|
|
||||||
# annotations:
|
|
||||||
# eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here
|
|
||||||
|
|
||||||
## autoMount is deprecated in favor of automountServiceAccountToken
|
|
||||||
# autoMount: false
|
|
||||||
automountServiceAccountToken: false
|
|
||||||
|
|
||||||
replicas: 1
|
|
||||||
|
|
||||||
## Create a headless service for the deployment
|
|
||||||
headlessService: false
|
|
||||||
|
|
||||||
## Should the service account be auto mounted on the pod
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
|
|
||||||
## Create HorizontalPodAutoscaler object for deployment type
|
|
||||||
#
|
|
||||||
autoscaling:
|
|
||||||
enabled: false
|
|
||||||
minReplicas: 1
|
|
||||||
maxReplicas: 5
|
|
||||||
targetCPU: "60"
|
|
||||||
targetMemory: ""
|
|
||||||
behavior: {}
|
|
||||||
|
|
||||||
## See `kubectl explain poddisruptionbudget.spec` for more
|
|
||||||
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
|
|
||||||
podDisruptionBudget: {}
|
|
||||||
# apiVersion: ""
|
|
||||||
# minAvailable: 1
|
|
||||||
# maxUnavailable: 1
|
|
||||||
|
|
||||||
## See `kubectl explain deployment.spec.strategy` for more
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
|
|
||||||
deploymentStrategy:
|
|
||||||
type: RollingUpdate
|
|
||||||
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /api/health
|
|
||||||
port: 3000
|
|
||||||
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /api/health
|
|
||||||
port: 3000
|
|
||||||
initialDelaySeconds: 60
|
|
||||||
timeoutSeconds: 30
|
|
||||||
failureThreshold: 10
|
|
||||||
|
|
||||||
# dns configuration for pod
|
|
||||||
dnsPolicy: ~
|
|
||||||
dnsConfig: {}
|
|
||||||
# nameservers:
|
|
||||||
# - 8.8.8.8
|
|
||||||
# options:
|
|
||||||
# - name: ndots
|
|
||||||
# value: "2"
|
|
||||||
# - name: edns0
|
|
||||||
|
|
||||||
securityContext:
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 472
|
|
||||||
runAsGroup: 472
|
|
||||||
fsGroup: 472
|
|
||||||
|
|
||||||
containerSecurityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
# Enable creating the grafana configmap
|
|
||||||
createConfigmap: true
|
|
||||||
|
|
||||||
## Pod Labels
|
|
||||||
# podLabels: {}
|
|
||||||
|
|
||||||
podPortName: grafana
|
|
||||||
gossipPortName: gossip
|
|
||||||
## Deployment annotations
|
|
||||||
# annotations: {}
|
|
||||||
|
|
||||||
## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).
|
|
||||||
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
|
|
||||||
## ref: http://kubernetes.io/docs/user-guide/services/
|
|
||||||
##
|
|
||||||
service:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
|
|
||||||
gettype: ClusterIP
|
|
||||||
#type: NodePort
|
|
||||||
|
|
||||||
# Set the ip family policy to configure dual-stack see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services)
|
|
||||||
ipFamilyPolicy: ""
|
|
||||||
# Sets the families that should be supported and the order in which they should be applied to ClusterIP as well. Can be IPv4 and/or IPv6.
|
|
||||||
ipFamilies: []
|
|
||||||
loadBalancerIP: ""
|
|
||||||
loadBalancerClass: ""
|
|
||||||
loadBalancerSourceRanges: []
|
|
||||||
#port: 90
|
|
||||||
port: 3000
|
|
||||||
targetPort: 3000
|
|
||||||
#targetPort: 90
|
|
||||||
# targetPort: 4181 To be used with a proxy extraContainer
|
|
||||||
## Service annotations. Can be templated.
|
|
||||||
annotations: {}
|
|
||||||
labels: {}
|
|
||||||
portName: service
|
|
||||||
# Adds the appProtocol field to the service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
|
|
||||||
appProtocol: ""
|
|
||||||
|
|
||||||
dashboardProviders: {}
|
|
||||||
|
|
||||||
dashboards: {}
|
|
||||||
|
|
||||||
|
|
||||||
grafana.ini:
|
|
||||||
server:
|
|
||||||
domain: cnoe.localtest.me
|
|
||||||
root_url: "%(protocol)s://%(domain)s/grafana"
|
|
||||||
serve_from_sub_path: true
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
ingressClassName: nginx
|
|
||||||
hosts:
|
|
||||||
- cnoe.localtest.me
|
|
||||||
path: /grafana
|
|
||||||
|
|
||||||
|
|
||||||
#TODO: not yet!
|
|
||||||
#datasources:
|
|
||||||
# datasources.yaml:
|
|
||||||
# apiVersion: 1
|
|
||||||
# datasources:
|
|
||||||
# - name: Prometheus
|
|
||||||
# type: prometheus
|
|
||||||
# url: http://prometheus-server.prometheus.svc.cluster.local
|
|
||||||
# access: proxy
|
|
||||||
# isDefault: true
|
|
|
@ -1,107 +0,0 @@
|
||||||
|
|
||||||
logLevel: 4
|
|
||||||
|
|
||||||
metricsRelistInterval: 1m
|
|
||||||
|
|
||||||
listenPort: 6443
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
priorityClassName: ""
|
|
||||||
|
|
||||||
# Url to access prometheus
|
|
||||||
prometheus:
|
|
||||||
# Value is templated
|
|
||||||
url: http://prometheus.default.svc
|
|
||||||
port: 9090
|
|
||||||
path: ""
|
|
||||||
|
|
||||||
replicas: 1
|
|
||||||
|
|
||||||
# SecurityContext of the container
|
|
||||||
# ref. https://kubernetes.io/docs/tasks/configure-pod-container/security-context
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop: ["ALL"]
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 10001
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
rbac:
|
|
||||||
# Specifies whether RBAC resources should be created
|
|
||||||
create: true
|
|
||||||
# Specifies if a Cluster Role should be used for the Auth Reader
|
|
||||||
useAuthReaderClusterRole: false
|
|
||||||
externalMetrics:
|
|
||||||
resources: ["*"]
|
|
||||||
customMetrics:
|
|
||||||
resources: ["*"]
|
|
||||||
|
|
||||||
serviceAccount:
|
|
||||||
# Specifies whether a service account should be created
|
|
||||||
create: true
|
|
||||||
# The name of the service account to use.
|
|
||||||
# If not set and create is true, a name is generated using the fullname template
|
|
||||||
name:
|
|
||||||
# ServiceAccount annotations.
|
|
||||||
# Use case: AWS EKS IAM roles for service accounts
|
|
||||||
# ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html
|
|
||||||
annotations: {}
|
|
||||||
|
|
||||||
# Configure liveness probe
|
|
||||||
# https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#Probe
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: https
|
|
||||||
scheme: HTTPS
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
timeoutSeconds: 5
|
|
||||||
|
|
||||||
# Configure readiness probe
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: https
|
|
||||||
scheme: HTTPS
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
timeoutSeconds: 5
|
|
||||||
|
|
||||||
rules:
|
|
||||||
default: true
|
|
||||||
|
|
||||||
custom: []
|
|
||||||
|
|
||||||
# Mounts a configMap with pre-generated rules for use. Overrides the
|
|
||||||
# default, custom, external and resource entries
|
|
||||||
existing:
|
|
||||||
|
|
||||||
external: []
|
|
||||||
|
|
||||||
service:
|
|
||||||
annotations: {}
|
|
||||||
port: 443
|
|
||||||
type: ClusterIP
|
|
||||||
# clusterIP: 1.2.3.4
|
|
||||||
ipDualStack:
|
|
||||||
enabled: false
|
|
||||||
ipFamilies: ["IPv6", "IPv4"]
|
|
||||||
ipFamilyPolicy: "PreferDualStack"
|
|
||||||
|
|
||||||
# Set environment variables from secrets, configmaps or by setting them as name/value
|
|
||||||
env: []
|
|
||||||
|
|
||||||
# Deployment strategy type
|
|
||||||
strategy:
|
|
||||||
type: RollingUpdate
|
|
||||||
rollingUpdate:
|
|
||||||
maxUnavailable: 25%
|
|
||||||
maxSurge: 25%
|
|
||||||
|
|
||||||
certManager:
|
|
||||||
enabled: false
|
|
||||||
caCertDuration: 43800h0m0s
|
|
||||||
certDuration: 8760h0m0s
|
|
|
@ -1,37 +0,0 @@
|
||||||
# Crossplane Integrations for Backstage
|
|
||||||
|
|
||||||
`idpBuilder` is extensible to launch custom Crossplane patterns using package extensions.
|
|
||||||
|
|
||||||
Please use the below command to deploy an IDP reference implementation with an Argo application for preparing up the setup for terraform integrations:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
idpbuilder create \
|
|
||||||
--use-path-routing \
|
|
||||||
--package https://github.com/cnoe-io/stacks//ref-implementation \
|
|
||||||
--package https://github.com/cnoe-io/stacks//crossplane-integrations
|
|
||||||
```
|
|
||||||
## What is installed?
|
|
||||||
|
|
||||||
1. Crossplane Runtime
|
|
||||||
1. AWS providers
|
|
||||||
1. Basic Compositions
|
|
||||||
|
|
||||||
This needs your credentials for this to work. Follow the Crossplane installation documentation on how to add your credentials.
|
|
||||||
|
|
||||||
## Application with cloud resources.
|
|
||||||
|
|
||||||
With this integration, we can deploy an application with cloud resources using Backstage templates from the reference implementation, together with Crossplane integrations.
|
|
||||||
|
|
||||||
In this example, we will create an application with a S3 Bucket.
|
|
||||||
|
|
||||||
Choose a template named `App with S3 bucket`, type `demo3` as the name, then choose a region to create this bucket in.
|
|
||||||
|
|
||||||
Once you click the create button, you will have a very similar setup as the basic example.
|
|
||||||
The only difference is we now have a resource for a S3 Bucket which is managed by Crossplane.
|
|
||||||
|
|
||||||
Note that Bucket is **not** created because Crossplane doesn't have necessary credentials to do so.
|
|
||||||
If you'd like it to actually create a bucket, update [the credentials secret file](crossplane-providers/provider-secret.yaml), then run `idpbuilder create --package https://github.com/cnoe-io/stacks//ref-implementation`.
|
|
||||||
|
|
||||||
In this example, we used Crossplane to provision resources, but you can use other cloud resource management tools such as Terraform instead.
|
|
||||||
|
|
||||||
Regardless of your tool choice, concepts are the same. We use Backstage as the templating mechanism and UI for users, then use Kubernetes API with GitOps to deploy resources.
|
|
|
@ -1,22 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: crossplane-compositions
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
env: dev
|
|
||||||
finalizers:
|
|
||||||
- resources-finalizer.argocd.argoproj.io
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot
|
|
||||||
targetRevision: HEAD
|
|
||||||
path: "stacks/crossplane-integrations/crossplane-compositions"
|
|
||||||
directory:
|
|
||||||
recurse: true
|
|
||||||
destination:
|
|
||||||
server: "https://kubernetes.default.svc"
|
|
||||||
namespace: crossplane-system
|
|
||||||
syncPolicy:
|
|
||||||
automated: {}
|
|
|
@ -1,76 +0,0 @@
|
||||||
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
apiVersion: apiextensions.crossplane.io/v1
|
|
||||||
kind: CompositeResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: xobjectstorages.awsblueprints.io
|
|
||||||
spec:
|
|
||||||
claimNames:
|
|
||||||
kind: ObjectStorage
|
|
||||||
plural: objectstorages
|
|
||||||
group: awsblueprints.io
|
|
||||||
names:
|
|
||||||
kind: XObjectStorage
|
|
||||||
plural: xobjectstorages
|
|
||||||
connectionSecretKeys:
|
|
||||||
- region
|
|
||||||
- bucket-name
|
|
||||||
- s3-put-policy
|
|
||||||
versions:
|
|
||||||
- name: v1alpha1
|
|
||||||
served: true
|
|
||||||
referenceable: true
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
properties:
|
|
||||||
spec:
|
|
||||||
description: ObjectStorageSpec defines the desired state of ObjectStorage
|
|
||||||
properties:
|
|
||||||
resourceConfig:
|
|
||||||
description: ResourceConfig defines general properties of this AWS
|
|
||||||
resource.
|
|
||||||
properties:
|
|
||||||
deletionPolicy:
|
|
||||||
description: Defaults to Delete
|
|
||||||
enum:
|
|
||||||
- Delete
|
|
||||||
- Orphan
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: Set the name of this resource in AWS to the value
|
|
||||||
provided by this field.
|
|
||||||
type: string
|
|
||||||
providerConfigName:
|
|
||||||
type: string
|
|
||||||
region:
|
|
||||||
type: string
|
|
||||||
tags:
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
key:
|
|
||||||
type: string
|
|
||||||
value:
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
- value
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- providerConfigName
|
|
||||||
- region
|
|
||||||
- tags
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- resourceConfig
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
description: ObjectStorageStatus defines the observed state of ObjectStorage
|
|
||||||
properties:
|
|
||||||
bucketName:
|
|
||||||
type: string
|
|
||||||
bucketArn:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
|
@ -1,80 +0,0 @@
|
||||||
apiVersion: apiextensions.crossplane.io/v1
|
|
||||||
kind: Composition
|
|
||||||
metadata:
|
|
||||||
name: s3bucket.awsblueprints.io
|
|
||||||
labels:
|
|
||||||
awsblueprints.io/provider: aws
|
|
||||||
awsblueprints.io/environment: dev
|
|
||||||
s3.awsblueprints.io/configuration: standard
|
|
||||||
spec:
|
|
||||||
writeConnectionSecretsToNamespace: crossplane-system
|
|
||||||
compositeTypeRef:
|
|
||||||
apiVersion: awsblueprints.io/v1alpha1
|
|
||||||
kind: XObjectStorage
|
|
||||||
patchSets:
|
|
||||||
- name: common-fields
|
|
||||||
patches:
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: spec.resourceConfig.providerConfigName
|
|
||||||
toFieldPath: spec.providerConfigRef.name
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: spec.resourceConfig.deletionPolicy
|
|
||||||
toFieldPath: spec.deletionPolicy
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: spec.resourceConfig.region
|
|
||||||
toFieldPath: spec.forProvider.region
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: spec.resourceConfig.name
|
|
||||||
toFieldPath: metadata.annotations[crossplane.io/external-name]
|
|
||||||
resources:
|
|
||||||
- name: s3-bucket
|
|
||||||
connectionDetails:
|
|
||||||
- name: bucket-name
|
|
||||||
fromConnectionSecretKey: endpoint
|
|
||||||
- name: region
|
|
||||||
fromConnectionSecretKey: region
|
|
||||||
base:
|
|
||||||
apiVersion: s3.aws.crossplane.io/v1beta1
|
|
||||||
kind: Bucket
|
|
||||||
spec:
|
|
||||||
deletionPolicy: Delete
|
|
||||||
forProvider:
|
|
||||||
objectOwnership: BucketOwnerEnforced
|
|
||||||
publicAccessBlockConfiguration:
|
|
||||||
blockPublicPolicy: true
|
|
||||||
restrictPublicBuckets: true
|
|
||||||
serverSideEncryptionConfiguration:
|
|
||||||
rules:
|
|
||||||
- applyServerSideEncryptionByDefault:
|
|
||||||
sseAlgorithm: AES256
|
|
||||||
tagging:
|
|
||||||
tagSet:
|
|
||||||
- key: cnoe
|
|
||||||
value: "1"
|
|
||||||
patches:
|
|
||||||
- type: PatchSet
|
|
||||||
patchSetName: common-fields
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: spec.resourceConfig.tags
|
|
||||||
toFieldPath: spec.forProvider.tagging.tagSet
|
|
||||||
policy:
|
|
||||||
mergeOptions:
|
|
||||||
appendSlice: true
|
|
||||||
keepMapValues: true
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: spec.resourceConfig.region
|
|
||||||
toFieldPath: spec.forProvider.locationConstraint
|
|
||||||
- fromFieldPath: spec.writeConnectionSecretToRef.namespace
|
|
||||||
toFieldPath: spec.writeConnectionSecretToRef.namespace
|
|
||||||
- type: ToCompositeFieldPath
|
|
||||||
fromFieldPath: metadata.annotations[crossplane.io/external-name]
|
|
||||||
toFieldPath: status.bucketName
|
|
||||||
- type: ToCompositeFieldPath
|
|
||||||
fromFieldPath: status.atProvider.arn
|
|
||||||
toFieldPath: status.bucketArn
|
|
||||||
- fromFieldPath: metadata.uid
|
|
||||||
toFieldPath: spec.writeConnectionSecretToRef.name
|
|
||||||
transforms:
|
|
||||||
- type: string
|
|
||||||
string:
|
|
||||||
fmt: "%s-bucket"
|
|
|
@ -1,22 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: crossplane-providers
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
env: dev
|
|
||||||
finalizers:
|
|
||||||
- resources-finalizer.argocd.argoproj.io
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot
|
|
||||||
targetRevision: HEAD
|
|
||||||
path: "stacks/crossplane-integrations/crossplane-providers"
|
|
||||||
destination:
|
|
||||||
server: "https://kubernetes.default.svc"
|
|
||||||
namespace: crossplane-system
|
|
||||||
syncPolicy:
|
|
||||||
automated: {}
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
|
@ -1,6 +0,0 @@
|
||||||
apiVersion: pkg.crossplane.io/v1
|
|
||||||
kind: Provider
|
|
||||||
metadata:
|
|
||||||
name: provider-aws
|
|
||||||
spec:
|
|
||||||
package: xpkg.upbound.io/crossplane-contrib/provider-aws:v0.48.0
|
|
|
@ -1,14 +0,0 @@
|
||||||
apiVersion: aws.crossplane.io/v1beta1
|
|
||||||
kind: ProviderConfig
|
|
||||||
metadata:
|
|
||||||
name: default
|
|
||||||
annotations:
|
|
||||||
argocd.argoproj.io/sync-wave: "20"
|
|
||||||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
|
|
||||||
spec:
|
|
||||||
credentials:
|
|
||||||
source: Secret
|
|
||||||
secretRef:
|
|
||||||
namespace: crossplane-system
|
|
||||||
name: local-secret
|
|
||||||
key: creds
|
|
|
@ -1,11 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: local-secret
|
|
||||||
namespace: crossplane-system
|
|
||||||
stringData:
|
|
||||||
creds: |
|
|
||||||
[default]
|
|
||||||
aws_access_key_id = replaceme
|
|
||||||
aws_secret_access_key = replaceme
|
|
||||||
aws_session_token = replacemeifneeded
|
|
|
@ -1,26 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: crossplane
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
env: dev
|
|
||||||
finalizers:
|
|
||||||
- resources-finalizer.argocd.argoproj.io
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: 'https://charts.crossplane.io/stable'
|
|
||||||
targetRevision: 1.15.0
|
|
||||||
helm:
|
|
||||||
releaseName: crossplane
|
|
||||||
chart: crossplane
|
|
||||||
destination:
|
|
||||||
server: 'https://kubernetes.default.svc'
|
|
||||||
namespace: crossplane-system
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
|
@ -1,17 +0,0 @@
|
||||||
# Localstack Integration
|
|
||||||
|
|
||||||
Please use the below command to deploy an IDP reference implementation with an Argo application that adds Localstack, as well as integrating with Crossplane.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
idpbuilder create \
|
|
||||||
--use-path-routing \
|
|
||||||
--package https://github.com/cnoe-io/stacks//ref-implementation \
|
|
||||||
--package https://github.com/cnoe-io/stacks//localstack-integration
|
|
||||||
```
|
|
||||||
|
|
||||||
As you see above, this add-on to `idpbuilder` has a dependency on the [reference implementation](../ref-implementation/). This command primarily does the following:
|
|
||||||
|
|
||||||
1. Installs `localstack` helmchart as an `argo` application.
|
|
||||||
2. Adds localstack crossplane ProviderConfig, targetting localstack
|
|
||||||
|
|
||||||
Once the custom package is installed, localstack can be used from the backstage template `app-with-aws-resources`, by changing the `providerConfigName` during the bucket configuration page from `default` to `localstack`.
|
|
|
@ -1,22 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: crossplane-provider-localstack
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
example: localstack-integration
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot
|
|
||||||
targetRevision: HEAD
|
|
||||||
path: "stacks/localstack-integration/crossplane-provider-localstack"
|
|
||||||
destination:
|
|
||||||
server: "https://kubernetes.default.svc"
|
|
||||||
namespace: crossplane-system
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
|
@ -1,19 +0,0 @@
|
||||||
apiVersion: aws.crossplane.io/v1beta1
|
|
||||||
kind: ProviderConfig
|
|
||||||
metadata:
|
|
||||||
name: localstack
|
|
||||||
annotations:
|
|
||||||
argocd.argoproj.io/sync-wave: "20"
|
|
||||||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
|
|
||||||
spec:
|
|
||||||
credentials:
|
|
||||||
source: Secret
|
|
||||||
secretRef:
|
|
||||||
namespace: crossplane-system
|
|
||||||
name: local-secret
|
|
||||||
key: creds
|
|
||||||
endpoint:
|
|
||||||
hostnameImmutable: true
|
|
||||||
url:
|
|
||||||
type: Static
|
|
||||||
static: http://localstack.localstack.svc.cluster.local:4566
|
|
|
@ -1,24 +0,0 @@
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: localstack
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
example: localstack-integration
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://localstack.github.io/helm-charts
|
|
||||||
targetRevision: 0.6.12
|
|
||||||
chart: localstack
|
|
||||||
helm:
|
|
||||||
releaseName: localstack
|
|
||||||
destination:
|
|
||||||
server: "https://kubernetes.default.svc"
|
|
||||||
namespace: localstack
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
Loading…
Reference in a new issue