diff --git a/.github/workflows/platform-validate.yml b/.github/workflows/platform-validate.yml index 649c8d9..3ea1580 100644 --- a/.github/workflows/platform-validate.yml +++ b/.github/workflows/platform-validate.yml @@ -122,7 +122,7 @@ jobs: - name: Setup conftest run: | - CONFTEST_VERSION=$(curl -sL https://api.github.com/repos/open-policy-agent/conftest/releases/latest | grep tag_name | cut -d'"' -f4) + CONFTEST_VERSION="v0.68.2" wget -q "https://github.com/open-policy-agent/conftest/releases/download/${CONFTEST_VERSION}/conftest_${CONFTEST_VERSION#v}_Linux_x86_64.tar.gz" -O /tmp/conftest.tar.gz tar xzf /tmp/conftest.tar.gz -C /usr/local/bin/ conftest @@ -167,7 +167,7 @@ jobs: - name: Setup conftest run: | - CONFTEST_VERSION=$(curl -sL https://api.github.com/repos/open-policy-agent/conftest/releases/latest | grep tag_name | cut -d'"' -f4) + CONFTEST_VERSION="v0.68.2" wget -q "https://github.com/open-policy-agent/conftest/releases/download/${CONFTEST_VERSION}/conftest_${CONFTEST_VERSION#v}_Linux_x86_64.tar.gz" -O /tmp/conftest.tar.gz tar xzf /tmp/conftest.tar.gz -C /usr/local/bin/ conftest diff --git a/Makefile b/Makefile index 7576623..80a40c2 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,9 @@ MAKEFLAGS += --no-print-directory CLUSTER_NAME ?= platform-demo NAMESPACE ?= argocd KIND_IMG ?= kindest/node:v1.30.0 +AWS_ACCOUNT_ID ?= 944684220857 +AWS_REGION ?= eu-north-1 +IMAGE_REPO ?= $(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com/app .PHONY: help help: @@ -66,11 +69,13 @@ deploy: @echo "=== Deploying simple-app ===" helm template simple-app-dev standardized-path/app \ -f platform/apps/dev/values.yaml \ + --set image.repository=$(IMAGE_REPO) \ | kubectl apply -f - 2>&1 | grep -v 'unchanged' || true @echo "=== Deploying app-b ===" helm template app-b-dev standardized-path/app \ -f platform/apps/app-b/dev/values.yaml \ + --set image.repository=$(IMAGE_REPO) \ | kubectl apply -f - 2>&1 | grep -v 'unchanged' || true @echo "=== App status ===" diff --git a/backstage/app-config.yaml b/backstage/app-config.yaml new file mode 100644 index 0000000..2868d12 --- /dev/null +++ b/backstage/app-config.yaml @@ -0,0 +1,53 @@ +app: + title: Internal Developer Platform + baseUrl: http://backstage.platform.example.com + +backend: + baseUrl: http://backstage.platform.example.com + listen: + port: 7007 + cors: + origin: http://backstage.platform.example.com + +organization: + name: Platform Engineering + +auth: + environment: development + providers: + guest: {} + +integrations: + github: + - host: github.com + apps: [] + +catalog: + import: + entityFilename: catalog-info.yaml + locations: + - type: url + target: https://github.com/tukue/simpleAppInfraCode/blob/main/catalog-info.yaml + - type: url + target: https://github.com/tukue/simpleAppInfraCode/blob/main/standardized-path/app/catalog-info.yaml + - type: url + target: https://github.com/tukue/simpleAppInfraCode/blob/main/platform/apps/simple-app/catalog-info.yaml + - type: url + target: https://github.com/tukue/simpleAppInfraCode/blob/main/platform/apps/app-b/catalog-info.yaml + +scaffolder: + locations: + - type: url + target: https://github.com/tukue/simpleAppInfraCode/blob/main/backstage/templates/new-tenant-app/template.yaml + +kubernetes: + serviceLocatorMethod: + type: multiTenant + clusterLocatorMethods: + - type: config + clusters: + - name: in-cluster + url: https://kubernetes.default.svc + authProvider: serviceAccount + skipTLSVerify: true + skipMetricsLookup: true diff --git a/backstage/catalog-ui.html b/backstage/catalog-ui.html new file mode 100644 index 0000000..62b4dbf --- /dev/null +++ b/backstage/catalog-ui.html @@ -0,0 +1,77 @@ + +
Internal Developer Platform — Entity overview
+ +| Name | Kind | Owner | System | Description |
|---|---|---|---|---|
| simple-app-infra-code | Component | platform-team | platform | Internal Developer Platform for EKS and OpenShift |
| platform | System | platform-team | Internal Developer Platform providing golden path, GitOps, and observability | |
| platform-team | Group | Platform engineering team | ||
| app-developers | Group | Application development teams | ||
| all-catalog-files | Location | Discovers all catalog-info.yaml files across the repository | ||
| app-chart | Component | platform-team | platform | Golden path Helm chart — the tenant contract for deploying services on the platform |
| tenant-contract | API | platform-team | platform | Contract defining what app teams provide and what the platform guarantees |
| simple-app | Component | app-developers | platform | Demo tenant application deployed via the platform golden path |
| app-b | Component | app-developers | platform | Second tenant application proving contract reusability across dev/stage/prod |
Scaffold a new application using the platform's golden path Helm chart
Parameters:[
+ {
+ "appName": {
+ "title": "Application Name",
+ "type": "string",
+ "description": "Unique name for the application (e.g., app-c)",
+ "pattern": "^[a-z][a-z0-9-]*$"
+ },
+ "description": {
+ "title": "Description",
+ "type": "string",
+ "description": "Purpose of the application"
+ },
+ "owner": {
+ "title": "Owner",
+ "type": "string",
+ "description": "Backstage Group or User that owns this app",
+ "default": "app-developers",
+ "ui:field": "OwnerPicker",
+ "ui:options": {
+ "allowedKinds": [
+ "Group"
+ ]
+ }
+ }
+ },
+ {
+ "awsAccountId": {
+ "title": "AWS Account ID",
+ "type": "string",
+ "description": "12-digit AWS account number for ECR",
+ "pattern": "^\\d{12}$"
+ },
+ "awsRegion": {
+ "title": "AWS Region",
+ "type": "string",
+ "description": "AWS region for ECR (e.g., eu-north-1, us-east-1)",
+ "default": "eu-north-1"
+ },
+ "port": {
+ "title": "Application Port",
+ "type": "integer",
+ "default": 8080
+ }
+ }
+]Steps:fetch-skeleton: Fetch Skeleton (fetch:template) + publish: Publish to GitHub (publish:github) + register: Register in Backstage (catalog:register)