You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[](https://twitter.com/kadrasIO)
8
8
@@ -26,10 +26,9 @@ A curated set of Carvel packages to build an engineering platform supporting app
26
26
Add the Kadras [package repository](https://github.com/kadras-io/kadras-packages) to your Kubernetes cluster:
27
27
28
28
```shell
29
-
kubectl create namespace kadras-packages
30
29
kctrl package repository add -r kadras-packages \
31
30
--url ghcr.io/kadras-io/kadras-packages \
32
-
-n kadras-packages
31
+
-n kadras-packages --create-namespace
33
32
```
34
33
35
34
<details><summary>Installation without package repository</summary>
@@ -75,11 +74,10 @@ The Engineering Platform package can be customized via a `values.yml` file.
75
74
76
75
```yaml
77
76
platform:
77
+
platform:
78
+
profile: serving
78
79
ingress:
79
80
domain: thomasvitale.com
80
-
oci_registry:
81
-
server: ghcr.io
82
-
repository: thomasvitale
83
81
```
84
82
85
83
Reference the `values.yml` file from the `kctrl` command when installing or upgrading the package.
@@ -100,19 +98,24 @@ The Engineering Platform package has the following configurable properties.
100
98
101
99
| Config | Default | Description |
102
100
|-------|-------------------|-------------|
101
+
| `platform.profile` | `full` | The platform profile to install. Options: `full`, `serving`. |
103
102
| `platform.namespace` | `kadras-packages` | The namespace where to install the platform. |
104
103
| `platform.excluded_packages` | `[]` | A list of packages to exclude from being installed. |
105
104
| `platform.ca_cert_data` | `""` | PEM-encoded certificate data to trust TLS connections with a custom CA. |
106
-
| `platform.ingress.domain.issuer.type` | `private` | The type of ClusterIssuer the platform will use to enable TLS communications. Options: `private`, `letsencrypt_staging`, `letsencrypt`, `custom`. |
107
-
| `platform.ingress.domain.issuer.name` | `""` | A reference to a custom ClusterIssuer previously created on the cluster where the platform will be installed. Required when the type is `custom`. |
105
+
| `platform.infrastructure_provider` | `""` | The underlying infrastructure provider. Options are `local` and `vsphere`. This field is not required, but it enables better validation and defaulting if provided. |
106
+
| `platform.ingress.domain` | `""` | The base domain name the platform will use to configure the Ingress controller. It must be a valid DNS name. |
107
+
| `platform.ingress.issuer.type` | `private` | The type of ClusterIssuer the platform will use to enable TLS communications. Options: `private`, `letsencrypt_staging`, `letsencrypt`, `custom`. |
108
+
| `platform.ingress.issuer.name` | `""` | A reference to a custom ClusterIssuer previously created on the cluster where the platform will be installed. Required when the type is `custom`. |
109
+
| `platform.ingress.issuer.email` | `""` | The email address that Let's Encrypt will use to send info on expiring certificates or other issues. Required when the type is `letsencrypt_staging` or `letsencrypt`. |
108
110
| `platform.oci_registry.server` | `""` | The server of the OCI Registry where the platform will publish and consume OCI images. |
109
111
| `platform.oci_registry.repository` | `""` | The repository in the OCI Registry where the platform will publish and consume OCI images. |
110
-
| `platform.oci_registry.credentials.username` | `""` | Username to access the OCI registry. Note: Use `_json_key` for GCR. |
111
-
| `platform.oci_registry.credentials.password` | `""` | Token to access the OCI registry. Note: Use contents of service account key json for GCR. |
112
112
| `platform.oci_registry.secret.name` | `supply-chain-registry-credentials` | The name of the Secret holding the credentials to access the OCI registry. |
113
113
| `platform.oci_registry.secret.namespace` | `kadras-packages` | The namespace of the Secret holding the credentials to access the OCI registry. |
114
114
| `platform.cosign.secret.name` | `supply-chain-cosign-key-pair` | The name of the Secret holding the Cosign key pair. |
115
115
| `platform.cosign.secret.namespace` | `kadras-packages` | The namespace of the Secret holding the Cosign key pair. |
116
+
| `platform.git.server` | `https://github.com` | The server hosting the Git repositories used by the plaform. |
117
+
| `platform.git.secret.name` | `supply-chain-git-credentials` | The name of the Secret holding the credentials to access the Git server. |
118
+
| `platform.git.secret.namespace` | `kadras-packages` | The namespace of the Secret holding the credentials to access the Git server. |
116
119
117
120
Each Kadras package included in the platform can be configured independently.
118
121
@@ -148,7 +151,4 @@ This project is licensed under the **Apache License 2.0**. See [LICENSE](LICENSE
148
151
149
152
## 🙏 Acknowledgments
150
153
151
-
This package is inspired by:
152
-
153
-
* the App Toolkit package used in [Tanzu Community Edition](https://github.com/vmware-tanzu/community-edition) before its retirement;
154
-
* the [OSS Stack](https://github.com/vrabbi/tap-oss) example of [Tanzu Application Platform](https://tanzu.vmware.com/application-platform).
154
+
This package is inspired by the App Toolkit package used in [Tanzu Community Edition](https://github.com/vmware-tanzu/community-edition) before its retirement and the [open-source example](https://github.com/vrabbi/tap-oss) of [Tanzu Application Platform](https://tanzu.vmware.com/application-platform) by [Scott Rosenberg](https://vrabbi.cloud).
* Carvel [kapp-controller](https://carvel.dev/kapp-controller) deployed in your Kubernetes cluster. You can install it with Carvel [`kapp`](https://carvel.dev/kapp/docs/latest/install) (recommended choice) or `kubectl`.
@@ -14,13 +14,12 @@
14
14
15
15
## 2. Add the Kadras Repository
16
16
17
-
Add the Kadras repository to make all Kadras packages available to the cluster.
17
+
Add the Kadras repository to make all the platform packages available to the cluster.
18
18
19
19
```shell
20
-
kubectl create namespace kadras-packages
21
20
kctrl package repository add -r kadras-packages \
22
21
--url ghcr.io/kadras-io/kadras-packages \
23
-
-n kadras-packages
22
+
-n kadras-packages --create-namespace
24
23
```
25
24
26
25
You can check the full list of available packages as follows.
@@ -61,7 +60,26 @@ Next, use Cosign to generate a key-pair that will be used by the platform to sig
61
60
62
61
The previous command will create a cosign.pub file in the current directory. That's the public key you can use the verify OCI artifacts built and signed by the platform.
63
62
64
-
## 5. Configure the Platform
63
+
## 5. Create Secret for Git server
64
+
65
+
Then, create a Secret with the credentials to access your Git server in read/write mode. It will be used by the platform to work with Git repositories.
66
+
67
+
```shell
68
+
export SUPPLY_CHAIN_GIT_USERNAME=<username>
69
+
export SUPPLY_CHAIN_GIT_TOKEN=<token>
70
+
```
71
+
72
+
*`<username>` is the username to access the Git server.
73
+
*`<token>` is a token with read/write permissions to access the Git server.
The installation of the Kadras Engineering Platform can be configured via YAML. Create a `values.yml` file with any configuration you need for the platform. The following is a minimal configuration example.
67
85
@@ -73,26 +91,11 @@ platform:
73
91
oci_registry:
74
92
server: <oci-server>
75
93
repository: <oci-repository>
76
-
77
-
cosign:
78
-
secret:
79
-
name: supply-chain-cosign-key-pair
80
-
namespace: kadras-packages
81
-
82
-
workspace_provisioner:
83
-
namespaces:
84
-
- name: default
85
-
git:
86
-
credentials:
87
-
username: <github-username>
88
-
password: <github-token>
89
94
```
90
95
91
96
* `<domain>` is the base domain name the platform will use to configure the Ingress controller. It must be a valid DNS name. For example, `lab.thomasvitale.com`.
92
97
* `<oci-server>` is the server of the OCI registry where the platform will publish and consume OCI images. It must be the same used in step 3 when creating a Secret with the OCI registry credentials. For example, `ghcr.io`, `gcr.io`, `quay.io`, `index.docker.io`.
93
98
* `<oci-repository>` is the repository in the OCI registry where the platform will publish and consume OCI images. It must be the same used in step 3 when creating a Secret with the OCI registry credentials. For example, it might be your username or organization name depending on which OCI server you're using.
94
-
* `<github-username>` is your username to access your Git repositories on GitHub. It's not needed if you won't use the GitOps workflows offered by the platform and only use public Git repositories.
95
-
* `<github-token>` is a token with read/write permissions to access your Git repositories on GitHub. It's not needed if you won't use the GitOps workflows offered by the platform and only use public Git repositories.
#@ if data.values.platform.oci_registry.server and data.values.platform.oci_registry.repository and (not hasattr(data.values.buildpacks.catalog, "kp_default_repository") or not hasattr(data.values.buildpacks.catalog.kp_default_repository, "name") or not data.values.buildpacks.catalog.kp_default_repository.name):
#@ if data.values.platform.oci_registry.server and data.values.platform.oci_registry.repository:
13
+
#@ if not hasattr(data.values.buildpacks.catalog, "kp_default_repository") or not hasattr(data.values.buildpacks.catalog.kp_default_repository, "name") or not data.values.buildpacks.catalog.kp_default_repository.name:
#@ if data.values.platform.oci_registry.server and data.values.platform.oci_registry.repository and (not hasattr(data.values.cartographer.supply_chains, "registry") or not hasattr(data.values.cartographer.supply_chains.registry, "server") or not hasattr(data.values.cartographer.supply_chains.registry, "repository") or not data.values.cartographer.supply_chains.registry.server or not data.values.cartographer.supply_chains.registry.repository):
#@ if data.values.platform.oci_registry.server and data.values.platform.oci_registry.repository:
13
+
#@ if not hasattr(data.values.cartographer.supply_chains, "registry") or not hasattr(data.values.cartographer.supply_chains.registry, "server") or not hasattr(data.values.cartographer.supply_chains.registry, "repository") or not data.values.cartographer.supply_chains.registry.server or not data.values.cartographer.supply_chains.registry.repository:
#@ if data.values.platform.ca_cert_data and (not hasattr(data.values.cartographer.core, "ca_cert_data") or not data.values.cartographer.core.ca_cert_data):
0 commit comments