doc(portals): content for portals
This commit is contained in:
parent
671f85e983
commit
99146518ca
11 changed files with 237 additions and 17 deletions
|
|
@ -1,5 +1,4 @@
|
|||
+++
|
||||
archetype = "chapter"
|
||||
title = "Platform Components"
|
||||
weight = 3
|
||||
[params]
|
||||
|
|
@ -7,3 +6,33 @@ weight = 3
|
|||
date = '2024-07-30'
|
||||
+++
|
||||
|
||||
|
||||
## CNCF
|
||||
|
||||
> [Here are capability domains to consider when building platforms for cloud-native computing](https://tag-app-delivery.cncf.io/whitepapers/platforms/#capabilities-of-platforms):
|
||||
|
||||
* Web portals for observing and provisioning products and capabilities
|
||||
* APIs (and CLIs) for automatically provisioning products and capabilities
|
||||
* “Golden path” templates and docs enabling optimal use of capabilities in products
|
||||
* Automation for building and testing services and products
|
||||
* Automation for delivering and verifying services and products
|
||||
* Development environments such as hosted IDEs and remote connection tools
|
||||
* Observability for services and products using instrumentation and dashboards, including observation of functionality, performance and costs
|
||||
* Infrastructure services including compute runtimes, programmable networks, and block and volume storage
|
||||
* Data services including databases, caches, and object stores
|
||||
* Messaging and event services including brokers, queues, and event fabrics
|
||||
* Identity and secret management services such as service and user identity and authorization, certificate and key issuance, and static secret storage
|
||||
* Security services including static analysis of code and artifacts, runtime analysis, and policy enforcement
|
||||
* Artifact storage including storage of container image and language-specific packages, custom binaries and libraries, and source code
|
||||
|
||||
## IDP
|
||||
|
||||
> [An Internal Developer Platform (IDP) should be built to cover 5 Core Components:](https://internaldeveloperplatform.org/core-components/)
|
||||
|
||||
| Core Component | Short Description |
|
||||
| ---- | --- |
|
||||
| Application Configuration Management | Manage application configuration in a dynamic, scalable and reliable way. |
|
||||
| Infrastructure Orchestration | Orchestrate your infrastructure in a dynamic and intelligent way depending on the context. |
|
||||
| Environment Management | Enable developers to create new and fully provisioned environments whenever needed. |
|
||||
| Deployment Management | Implement a delivery pipeline for Continuous Delivery or even Continuous Deployment (CD). |
|
||||
| Role-Based Access Control | Manage who can do what in a scalable way. |
|
||||
|
|
@ -7,12 +7,27 @@ weight = 1
|
|||
date = '2024-07-30'
|
||||
+++
|
||||
|
||||
* Backstage
|
||||
* Port
|
||||
* Backstage (siehe auch https://nl.devoteam.com/expert-view/project-unox/)
|
||||
* [Port](https://www.getport.io/)
|
||||
* Cortex
|
||||
* Humanitec
|
||||
* [OpsLevel](https://docs.opslevel.com/docs/introducing-opslevel#what-is-opslevel)
|
||||
* https://www.configure8.io/
|
||||
* ... tbc ...
|
||||
|
||||
### Port's Comparison vs. Backstage
|
||||
|
||||
https://www.getport.io/compare/backstage-vs-port
|
||||
|
||||
### Cortex's Comparison vs. Backstage, Port, OpsLevel
|
||||
|
||||
* https://www.cortex.io/compare
|
||||
|
||||
### Service Catalogue
|
||||
|
||||
* https://humanitec.com/blog/service-catalogs-and-internal-developer-platforms
|
||||
* https://dzone.com/articles/the-differences-between-a-service-catalog-internal
|
||||
|
||||
## Links
|
||||
|
||||
* [port-vs-backstage-choosing-your-internal-developer-portal](https://medium.com/@vaibhavgupta0702/port-vs-backstage-choosing-your-internal-developer-portal-71c6a6acd979)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
+++
|
||||
archetype = "chapter"
|
||||
title = "Platform Engineering"
|
||||
weight = 1
|
||||
[params]
|
||||
|
|
@ -13,9 +12,9 @@ IPCEI-CIS Developer Framework is part of a cloud native technology stack. To des
|
|||
|
||||
In CNCF the discipline of building stacks to enhance the developer experience is called 'Platform Engineering'
|
||||
|
||||
## [CNCF Platforms White Paper](https://tag-app-delivery.cncf.io/whitepapers/platforms/)
|
||||
## CNCF Platforms White Paper
|
||||
|
||||
CNVF first asks why we need platform engineering:
|
||||
[CNCF first asks](https://tag-app-delivery.cncf.io/whitepapers/platforms/) why we need platform engineering:
|
||||
|
||||
> The desire to refocus delivery teams on their core focus and reduce duplication of effort across the organisation has motivated enterprises to implement platforms for cloud-native computing. By investing in platforms, enterprises can:
|
||||
> * Reduce the cognitive load on product teams and thereby accelerate product development and delivery
|
||||
|
|
@ -24,9 +23,9 @@ CNVF first asks why we need platform engineering:
|
|||
> * Reduce risk of security, regulatory and functional issues in products and services by governing platform capabilities and the users, tools and processes surrounding them
|
||||
> * Enable cost-effective and productive use of services from public clouds and other managed offerings by enabling delegation of implementations to those providers while maintaining control over user experience
|
||||
|
||||
## [platformengineering.org's Definition of Platform Engineering](https://platformengineering.org/blog/what-is-platform-engineering)
|
||||
## `platformengineering.org`'s Definition of Platform Engineering
|
||||
|
||||
> Platform engineering is the discipline of designing and building toolchains and workflows that enable self-service capabilities for software engineering organizations in the cloud-native era. Platform engineers provide an integrated product most often referred to as an “Internal Developer Platform” covering the operational necessities of the entire lifecycle of an application.
|
||||
> [Platform engineering is the discipline](https://platformengineering.org/blog/what-is-platform-engineering) of designing and building toolchains and workflows that enable self-service capabilities for software engineering organizations in the cloud-native era. Platform engineers provide an integrated product most often referred to as an “Internal Developer Platform” covering the operational necessities of the entire lifecycle of an application.
|
||||
|
||||
## Reference Architecture aka 'Even more wording': Internal Developer Platform vs. Developer Portal vs. Platform
|
||||
|
||||
|
|
@ -66,4 +65,9 @@ The amount of available IDPs as product is rapidly growing.
|
|||
* [how-to-fail-at-platform-engineering](https://www.cncf.io/blog/2024/03/08/how-to-fail-at-platform-engineering/)
|
||||
* [8-real-world-reasons-to-adopt-platform-engineering](https://thenewstack.io/8-real-world-reasons-to-adopt-platform-engineering/)
|
||||
* [7-core-elements-of-an-internal-developer-platform](https://thenewstack.io/7-core-elements-of-an-internal-developer-platform/)
|
||||
* [internal-developer-platform-vs-internal-developer-portal](https://www.getport.io/blog/internal-developer-platform-vs-internal-developer-portal)
|
||||
* [internal-developer-platform-vs-internal-developer-portal](https://www.getport.io/blog/internal-developer-platform-vs-internal-developer-portal)
|
||||
|
||||
## Platform 'Initiatives' aka Use Cases
|
||||
|
||||
Cortex is [talking about Use Cases (aka Initiatives):](https://www.youtube.com/watch?v=LrEC-fkBbQo) (or https://www.brighttalk.com/webcast/20257/601901)
|
||||

|
||||
BIN
content/en/docs/platform-engineering/cortex-use-cases.png
Normal file
BIN
content/en/docs/platform-engineering/cortex-use-cases.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
157
content/en/docs/platforms/CNOE/_index.md
Normal file
157
content/en/docs/platforms/CNOE/_index.md
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
+++
|
||||
title = "CNOE"
|
||||
weight = 4
|
||||
+++
|
||||
|
||||
|
||||
* https://cnoe.io/docs/intro
|
||||
|
||||
> The goal for the CNOE framework is to bring together a cohort of enterprises operating at the same scale so that they can navigate their operational technology decisions together, de-risk their tooling bets, coordinate contribution, and offer guidance to large enterprises on which CNCF technologies to use together to achieve the best cloud efficiencies.
|
||||
|
||||
### Aussprache
|
||||
|
||||
* Englisch Kuh.noo,
|
||||
* also 'Kanu' im Deutschen
|
||||
|
||||
|
||||
## Architecture
|
||||
|
||||

|
||||
|
||||
## Run the CNOEs reference implementation
|
||||
|
||||
See https://cnoe.io/docs/reference-implementation/integrations/reference-impl:
|
||||
|
||||
```bash
|
||||
# in a local terminal with docker and kind
|
||||
idpbuilder create --use-path-routing --log-level debug --package-dir https://github.com/cnoe-io/stacks//ref-implementation
|
||||
```
|
||||
### Output
|
||||
|
||||
```bash
|
||||
time=2024-08-05T14:48:33.348+02:00 level=INFO msg="Creating kind cluster" logger=setup
|
||||
time=2024-08-05T14:48:33.371+02:00 level=INFO msg="Runtime detected" logger=setup provider=docker
|
||||
########################### Our kind config ############################
|
||||
# Kind kubernetes release images https://github.com/kubernetes-sigs/kind/releases
|
||||
kind: Cluster
|
||||
apiVersion: kind.x-k8s.io/v1alpha4
|
||||
nodes:
|
||||
- role: control-plane
|
||||
image: "kindest/node:v1.29.2"
|
||||
kubeadmConfigPatches:
|
||||
- |
|
||||
kind: InitConfiguration
|
||||
nodeRegistration:
|
||||
kubeletExtraArgs:
|
||||
node-labels: "ingress-ready=true"
|
||||
extraPortMappings:
|
||||
- containerPort: 443
|
||||
hostPort: 8443
|
||||
protocol: TCP
|
||||
|
||||
containerdConfigPatches:
|
||||
- |-
|
||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gitea.cnoe.localtest.me:8443"]
|
||||
endpoint = ["https://gitea.cnoe.localtest.me"]
|
||||
[plugins."io.containerd.grpc.v1.cri".registry.configs."gitea.cnoe.localtest.me".tls]
|
||||
insecure_skip_verify = true
|
||||
|
||||
######################### config end ############################
|
||||
time=2024-08-05T14:48:33.394+02:00 level=INFO msg="Creating kind cluster" logger=setup cluster=localdev
|
||||
time=2024-08-05T14:48:53.680+02:00 level=INFO msg="Done creating cluster" logger=setup cluster=localdev
|
||||
time=2024-08-05T14:48:53.905+02:00 level=DEBUG+3 msg="Getting Kube config" logger=setup
|
||||
time=2024-08-05T14:48:53.908+02:00 level=DEBUG+3 msg="Getting Kube client" logger=setup
|
||||
time=2024-08-05T14:48:53.908+02:00 level=INFO msg="Adding CRDs to the cluster" logger=setup
|
||||
time=2024-08-05T14:48:53.948+02:00 level=DEBUG+3 msg="crd not yet established, waiting." "crd name"=custompackages.idpbuilder.cnoe.io
|
||||
time=2024-08-05T14:48:53.954+02:00 level=DEBUG+3 msg="crd not yet established, waiting." "crd name"=custompackages.idpbuilder.cnoe.io
|
||||
time=2024-08-05T14:48:53.957+02:00 level=DEBUG+3 msg="crd not yet established, waiting." "crd name"=custompackages.idpbuilder.cnoe.io
|
||||
time=2024-08-05T14:48:53.981+02:00 level=DEBUG+3 msg="crd not yet established, waiting." "crd name"=gitrepositories.idpbuilder.cnoe.io
|
||||
time=2024-08-05T14:48:53.985+02:00 level=DEBUG+3 msg="crd not yet established, waiting." "crd name"=gitrepositories.idpbuilder.cnoe.io
|
||||
time=2024-08-05T14:48:54.734+02:00 level=DEBUG+3 msg="Creating controller manager" logger=setup
|
||||
time=2024-08-05T14:48:54.737+02:00 level=DEBUG+3 msg="Created temp directory for cloning repositories" logger=setup dir=/tmp/idpbuilder-localdev-2865684949
|
||||
time=2024-08-05T14:48:54.737+02:00 level=INFO msg="Setting up CoreDNS" logger=setup
|
||||
time=2024-08-05T14:48:54.798+02:00 level=INFO msg="Setting up TLS certificate" logger=setup
|
||||
time=2024-08-05T14:48:54.811+02:00 level=DEBUG+3 msg="Creating/getting certificate" logger=setup host=cnoe.localtest.me sans="[cnoe.localtest.me *.cnoe.localtest.me]"
|
||||
time=2024-08-05T14:48:54.825+02:00 level=DEBUG+3 msg="Creating secret for certificate" logger=setup host=cnoe.localtest.me
|
||||
time=2024-08-05T14:48:54.832+02:00 level=DEBUG+3 msg="Running controllers" logger=setup
|
||||
time=2024-08-05T14:48:54.833+02:00 level=DEBUG+3 msg="starting manager"
|
||||
time=2024-08-05T14:48:54.833+02:00 level=INFO msg="Creating localbuild resource" logger=setup
|
||||
time=2024-08-05T14:48:54.834+02:00 level=INFO msg="Starting EventSource" controller=custompackage controllerGroup=idpbuilder.cnoe.io controllerKind=CustomPackage source="kind source: *v1alpha1.CustomPackage"
|
||||
time=2024-08-05T14:48:54.834+02:00 level=INFO msg="Starting EventSource" controller=gitrepository controllerGroup=idpbuilder.cnoe.io controllerKind=GitRepository source="kind source: *v1alpha1.GitRepository"
|
||||
time=2024-08-05T14:48:54.834+02:00 level=INFO msg="Starting Controller" controller=custompackage controllerGroup=idpbuilder.cnoe.io controllerKind=CustomPackage
|
||||
time=2024-08-05T14:48:54.834+02:00 level=INFO msg="Starting Controller" controller=gitrepository controllerGroup=idpbuilder.cnoe.io controllerKind=GitRepository
|
||||
time=2024-08-05T14:48:54.834+02:00 level=INFO msg="Starting EventSource" controller=localbuild controllerGroup=idpbuilder.cnoe.io controllerKind=Localbuild source="kind source: *v1alpha1.Localbuild"
|
||||
time=2024-08-05T14:48:54.834+02:00 level=INFO msg="Starting Controller" controller=localbuild controllerGroup=idpbuilder.cnoe.io controllerKind=Localbuild
|
||||
time=2024-08-05T14:48:54.937+02:00 level=INFO msg="Starting workers" controller=gitrepository controllerGroup=idpbuilder.cnoe.io controllerKind=GitRepository "worker count"=1
|
||||
time=2024-08-05T14:48:54.937+02:00 level=INFO msg="Starting workers" controller=custompackage controllerGroup=idpbuilder.cnoe.io controllerKind=CustomPackage "worker count"=1
|
||||
time=2024-08-05T14:48:54.937+02:00 level=INFO msg="Starting workers" controller=localbuild controllerGroup=idpbuilder.cnoe.io controllerKind=Localbuild "worker count"=1
|
||||
time=2024-08-05T14:48:56.863+02:00 level=DEBUG+3 msg=Reconciling controller=localbuild controllerGroup=idpbuilder.cnoe.io controllerKind=Localbuild Localbuild.name=localdev namespace="" name=localdev reconcileID=cc0e5b9d-4952-4fd1-9d62-6d9821f180be resource=/localdev
|
||||
time=2024-08-05T14:48:56.863+02:00 level=DEBUG+3 msg="Create or update namespace" controller=localbuild controllerGroup=idpbuilder.cnoe.io controllerKind=Localbuild Localbuild.name=localdev namespace="" name=localdev reconcileID=cc0e5b9d-4952-4fd1-9d62-6d9821f180be resource="&Namespace{ObjectMeta:{idpbuilder-localdev 0 0001-01-01 00:00:00 +0000 UTC <nil> <nil> map[] map[] [] [] []},Spec:NamespaceSpec{Finalizers:[],},Status:NamespaceStatus{Phase:,Conditions:[]NamespaceCondition{},},}"
|
||||
time=2024-08-05T14:48:56.983+02:00 level=DEBUG+3 msg="installing core packages" controller=localbuild controllerGroup=idpbuilder.cnoe.io controllerKind=Localbuild Localbuild.name=localdev namespace="" name=localdev reconcileID=cc0e5b9d-4952-4fd1-9d62-6d9821f180be
|
||||
time=2024-08-05T14:
|
||||
|
||||
...
|
||||
|
||||
time=2024-08-05T14:51:04.166+02:00 level=INFO msg="Stopping and waiting for webhooks"
|
||||
time=2024-08-05T14:51:04.166+02:00 level=INFO msg="Stopping and waiting for HTTP servers"
|
||||
time=2024-08-05T14:51:04.166+02:00 level=INFO msg="Wait completed, proceeding to shutdown the manager"
|
||||
|
||||
########################### Finished Creating IDP Successfully! ############################
|
||||
|
||||
|
||||
Can Access ArgoCD at https://cnoe.localtest.me:8443/argocd
|
||||
Username: admin
|
||||
Password can be retrieved by running: idpbuilder get secrets -p argocd
|
||||
```
|
||||
|
||||
## Outcome
|
||||
|
||||
Nach ca. 10 minuten sind alle applications ausgerollt (am längsten dauert Backstage):
|
||||
|
||||

|
||||
|
||||
```bash
|
||||
stl@ubuntu-vpn:~$ kubectl get applications -A
|
||||
NAMESPACE NAME SYNC STATUS HEALTH STATUS
|
||||
argocd argo-workflows Synced Healthy
|
||||
argocd argocd Synced Healthy
|
||||
argocd backstage Synced Healthy
|
||||
argocd backstage-templates Synced Healthy
|
||||
argocd coredns Synced Healthy
|
||||
argocd external-secrets Synced Healthy
|
||||
argocd gitea Synced Healthy
|
||||
argocd keycloak Synced Healthy
|
||||
argocd metric-server Synced Healthy
|
||||
argocd nginx Synced Healthy
|
||||
argocd spark-operator Synced Healthy
|
||||
stl@ubuntu-vpn:~$ idpbuilder get secrets
|
||||
---------------------------
|
||||
Name: argocd-initial-admin-secret
|
||||
Namespace: argocd
|
||||
Data:
|
||||
password : sPMdWiy0y0jhhveW
|
||||
username : admin
|
||||
---------------------------
|
||||
Name: gitea-credential
|
||||
Namespace: gitea
|
||||
Data:
|
||||
password : |iJ+8gG,(Jj?cc*G>%(i'OA7@(9ya3xTNLB{9k'G
|
||||
username : giteaAdmin
|
||||
---------------------------
|
||||
Name: keycloak-config
|
||||
Namespace: keycloak
|
||||
Data:
|
||||
KC_DB_PASSWORD : ES-rOE6MXs09r+fAdXJOvaZJ5I-+nZ+hj7zF
|
||||
KC_DB_USERNAME : keycloak
|
||||
KEYCLOAK_ADMIN_PASSWORD : BBeMUUK1CdmhKWxZxDDa1c5A+/Z-dE/7UD4/
|
||||
POSTGRES_DB : keycloak
|
||||
POSTGRES_PASSWORD : ES-rOE6MXs09r+fAdXJOvaZJ5I-+nZ+hj7zF
|
||||
POSTGRES_USER : keycloak
|
||||
USER_PASSWORD : RwCHPvPVMu+fQM4L6W/q-Wq79MMP+3CN-Jeo
|
||||
```
|
||||
|
||||
### login to backstage
|
||||
|
||||
login geht mit den Creds, siehe oben:
|
||||
|
||||

|
||||
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
BIN
content/en/docs/platforms/CNOE/local-argocd.png
Normal file
BIN
content/en/docs/platforms/CNOE/local-argocd.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 364 KiB |
BIN
content/en/docs/platforms/CNOE/local-backstage.png
Normal file
BIN
content/en/docs/platforms/CNOE/local-backstage.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 208 KiB |
7
content/en/docs/platforms/Humanitec/_index.md
Normal file
7
content/en/docs/platforms/Humanitec/_index.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
+++
|
||||
title = "Humanitec"
|
||||
weight = 4
|
||||
+++
|
||||
|
||||
|
||||
tbd
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
+++
|
||||
archetype = "chapter"
|
||||
title = "Platforms"
|
||||
weight = 4
|
||||
[params]
|
||||
|
|
@ -7,12 +6,6 @@ weight = 4
|
|||
date = '2024-07-30'
|
||||
+++
|
||||
|
||||
## Humanitec
|
||||
List of existing IDPs.
|
||||
|
||||
tbd
|
||||
|
||||
## 'CNOE' (Kuu.noo)
|
||||
|
||||
* https://cnoe.io/docs/intro
|
||||
|
||||

|
||||
|
|
|
|||
|
|
@ -16,6 +16,13 @@ That's why we need verifications - or test use cases - for the Developer Framewo
|
|||

|
||||
(source: https://tag-app-delivery.cncf.io/whitepapers/platforms/)
|
||||
|
||||
## Golden Paths as Use Cases
|
||||
|
||||
* https://platformengineering.org/blog/how-to-pave-golden-paths-that-actually-go-somewhere
|
||||
* https://thenewstack.io/using-an-internal-developer-portal-for-golden-paths/
|
||||
* https://nl.devoteam.com/expert-view/building-golden-paths-with-internal-developer-platforms/
|
||||
* https://www.redhat.com/en/blog/designing-golden-paths
|
||||
|
||||
## List of Use Cases
|
||||
|
||||
Here we have a collection of possible usage scenarios.
|
||||
|
|
@ -25,3 +32,11 @@ Here we have a collection of possible usage scenarios.
|
|||
Deploy and develop the famous socks shops:
|
||||
|
||||
* https://medium.com/@wadecharley703/socks-shop-microservices-application-deployment-on-the-cloud-cd1017cce1c0
|
||||
|
||||
### Humanitec Demos
|
||||
|
||||
* https://github.com/poc-template-org/node-js-sample
|
||||
|
||||
### Github Examples
|
||||
|
||||
* https://github.com/kezoo/nestjs-reactjs-graphql-typescript-boilerplate-example
|
||||
Loading…
Add table
Add a link
Reference in a new issue