docs cluster-config: Document cluster configuration files
Adds documentation for the YAML files describing cluster configuration.
This commit is contained in:
parent
367c5d2b60
commit
5549968958
1 changed files with 93 additions and 0 deletions
93
docs/cluster-config.md
Normal file
93
docs/cluster-config.md
Normal file
|
@ -0,0 +1,93 @@
|
|||
Cluster configuration
|
||||
==========================
|
||||
|
||||
Every cluster (or "environment") that requires individual configuration is specified in
|
||||
a very simple YAML file in Kontemplate.
|
||||
|
||||
An example file for a hypothetical test environment could look like this:
|
||||
|
||||
```yaml
|
||||
---
|
||||
context: k8s.test.mydomain.com
|
||||
global:
|
||||
clusterName: test-cluster
|
||||
defaultReplicas: 2
|
||||
import:
|
||||
- test-secrets.yaml
|
||||
include:
|
||||
- name: gateway
|
||||
path: tools/nginx
|
||||
values:
|
||||
tlsDomains:
|
||||
- test.oslo.pub
|
||||
- test.tazj.in
|
||||
- path: backend
|
||||
values:
|
||||
env: test
|
||||
include:
|
||||
- name: blog
|
||||
values:
|
||||
url: test.tazj.in
|
||||
- name: pub-service
|
||||
```
|
||||
|
||||
## Fields
|
||||
|
||||
This is documentation for the individual fields in a cluster context file.
|
||||
|
||||
### `context`
|
||||
|
||||
The `context` field contains the name of the kubectl-context. You can list context names with
|
||||
'kubectl config get-contexts'.
|
||||
|
||||
This must be set here so that Kontemplate can use the correct context when calling kubectl.
|
||||
|
||||
This field is **required**.
|
||||
|
||||
### `global`
|
||||
|
||||
The `global` field contains a key/value map of variables that should be available to all resource
|
||||
sets in the cluster.
|
||||
|
||||
This field is **optional**.
|
||||
|
||||
### `import`
|
||||
|
||||
The `import` field contains the file names of additional YAML or JSON files from which global
|
||||
variables should be loaded. Using this field makes it possible to keep certain configuration that
|
||||
is the same for some, but not all, clusters in a common place.
|
||||
|
||||
This field is **optional**.
|
||||
|
||||
### `include`
|
||||
|
||||
The `include` field contains the actual resource sets to be included in the cluster.
|
||||
|
||||
Information about the structure of resource sets can be found in the [resource set documentation][].
|
||||
|
||||
This field is **required**.
|
||||
|
||||
## External variables
|
||||
|
||||
As mentioned above, extra variables can be loaded from additional YAML or JSON files. Assuming you
|
||||
have a file called `test-secrets.yaml` which contains variables that should be shared between a `test`
|
||||
and `dev` cluster, you could include it in your context as such:
|
||||
|
||||
```
|
||||
# test-secrets.yaml:
|
||||
mySecretVar: foo-bar-12345
|
||||
|
||||
# test-cluster.yaml:
|
||||
context: k8s.test.mydomain.com
|
||||
include:
|
||||
- test-secrets.yaml
|
||||
|
||||
# dev-cluster.yaml:
|
||||
context: k8s.dev.mydomain.com
|
||||
include:
|
||||
- test-secrets.yaml
|
||||
```
|
||||
|
||||
The variable `mySecretVar` is then available as a global variable.
|
||||
|
||||
[resource set documentation]: resource-sets.md
|
Loading…
Reference in a new issue