--- /dev/null
+---
+# The purpose of this file is to define the PKI certificates for the environment
+#
+# NOTE: When deploying a new site, this file should not be configured until
+# baremetal/nodes.yaml is complete.
+#
+schema: promenade/PKICatalog/v1
+metadata:
+ schema: metadata/Document/v1
+ name: cluster-certificates
+ layeringDefinition:
+ abstract: false
+ layer: site
+ storagePolicy: cleartext
+data:
+ certificate_authorities:
+ kubernetes:
+ description: CA for Kubernetes components
+ certificates:
+ - document_name: apiserver
+ description: Service certificate for Kubernetes apiserver
+ common_name: apiserver
+ hosts:
+ - localhost
+ - 127.0.0.1
+ # FIXME: Repetition of api_service_ip in common-addresses; use
+ # substitution
+ - {{yaml.kubernetes.api_service_ip}}
+ kubernetes_service_names:
+ - kubernetes.default.svc.cluster.local
+
+ # NEWSITE-CHANGEME: The following should be a list of all the nodes in
+ # the environment (genesis, control plane, data plane, everything).
+ # Add/delete from this list as necessary until all nodes are listed.
+ # For each node, the `hosts` list should be comprised of:
+ # 1. The node's hostname, as already defined in baremetal/nodes.yaml
+ # 2. The node's oam IP address, as already defined in baremetal/nodes.yaml
+ # 3. The node's Calico IP address, as already defined in baremetal/nodes.yaml
+ # NOTE: This list also needs to include the Genesis node, which is not
+ # listed in baremetal/nodes.yaml, but by convention should be allocated
+ # the first non-reserved IP in each logical network allocation range
+ # defined in networks/physical/networks.yaml
+ # NOTE: The genesis node needs to be defined twice (the first two entries
+ # on this list) with all of the same paramters except the document_name.
+ # In the first case the document_name is `kubelet-genesis`, and in the
+ # second case the document_name format is `kubelete-YOUR_GENESIS_HOSTNAME`.
+ - document_name: kubelet-genesis
+ common_name: system:node:{{yaml.genesis.name}}
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ groups:
+ - system:nodes
+ - document_name: kubelet-{{yaml.genesis.name}}
+ common_name: system:node:{{yaml.genesis.name}}
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ groups:
+ - system:nodes
+{% for server in yaml.masters %}
+ - document_name: kubelet-{{ server.name }}
+ common_name: system:node:{{ server.name }}
+ hosts:
+ - {{server.name}}
+ - {{server.host}}
+ - {{server.ksn}}
+ groups:
+ - system:nodes
+{% endfor %}
+{% if 'workers' in yaml %}{% for server in yaml.workers %}
+ - document_name: kubelet-{{ server.name }}
+ common_name: system:node:{{ server.name }}
+ hosts:
+ - {{server.name}}
+ - {{server.host}}
+ - {{server.ksn}}
+ groups:
+ - system:nodes
+{% endfor %}{% endif %}
+ # End node list
+ - document_name: scheduler
+ description: Service certificate for Kubernetes scheduler
+ common_name: system:kube-scheduler
+ - document_name: controller-manager
+ description: certificate for controller-manager
+ common_name: system:kube-controller-manager
+ - document_name: admin
+ common_name: admin
+ groups:
+ - system:masters
+ - document_name: armada
+ common_name: armada
+ groups:
+ - system:masters
+ kubernetes-etcd:
+ description: Certificates for Kubernetes's etcd servers
+ certificates:
+ - document_name: apiserver-etcd
+ description: etcd client certificate for use by Kubernetes apiserver
+ common_name: apiserver
+ # NOTE(mark-burnett): hosts not required for client certificates
+ - document_name: kubernetes-etcd-anchor
+ description: anchor
+ common_name: anchor
+ # NEWSITE-CHANGEME: The following should be a list of the control plane
+ # nodes in the environment, including genesis.
+ # For each node, the `hosts` list should be comprised of:
+ # 1. The node's hostname, as already defined in baremetal/nodes.yaml
+ # 2. The node's oam IP address, as already defined in baremetal/nodes.yaml
+ # 3. The node's Calico IP address, as already defined in baremetal/nodes.yaml
+ # 4. 127.0.0.1
+ # 5. localhost
+ # 6. kubernetes-etcd.kube-system.svc.cluster.local
+ # NOTE: This list also needs to include the Genesis node, which is not
+ # listed in baremetal/nodes.yaml, but by convention should be allocated
+ # the first non-reserved IP in each logical network allocation range
+ # defined in networks/physical/networks.yaml, except for the kubernetes
+ # service_cidr where it should start with the second IP in the range.
+ # NOTE: The genesis node is defined twice with the same `hosts` data:
+ # Once with its hostname in the common/document name, and once with
+ # `genesis` defined instead of the host. For now, this duplicated
+ # genesis definition is required. FIXME: Remove duplicate definition
+ # after Promenade addresses this issue.
+ - document_name: kubernetes-etcd-genesis
+ common_name: kubernetes-etcd-genesis
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ - 127.0.0.1
+ - localhost
+ - kubernetes-etcd.kube-system.svc.cluster.local
+ - {{yaml.kubernetes.etcd_service_ip}}
+ - document_name: kubernetes-etcd-{{yaml.genesis.name}}
+ common_name: kubernetes-etcd-{{yaml.genesis.name}}
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ - 127.0.0.1
+ - localhost
+ - kubernetes-etcd.kube-system.svc.cluster.local
+ - {{yaml.kubernetes.etcd_service_ip}}
+{% for server in yaml.masters %}
+ - document_name: kubernetes-etcd-{{ server.name }}
+ common_name: kubernetes-etcd-{{ server.name }}
+ hosts:
+ - {{server.name}}
+ - {{server.host}}
+ - {{server.ksn}}
+ - 127.0.0.1
+ - localhost
+ - kubernetes-etcd.kube-system.svc.cluster.local
+ - {{yaml.kubernetes.etcd_service_ip}}
+{% endfor %}
+ # End node list
+ kubernetes-etcd-peer:
+ certificates:
+ # NEWSITE-CHANGEME: This list should be identical to the previous list,
+ # except that `-peer` has been appended to the document/common names.
+ - document_name: kubernetes-etcd-genesis-peer
+ common_name: kubernetes-etcd-genesis-peer
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ - 127.0.0.1
+ - localhost
+ - kubernetes-etcd.kube-system.svc.cluster.local
+ - {{yaml.kubernetes.etcd_service_ip}}
+ - document_name: kubernetes-etcd-{{yaml.genesis.name}}-peer
+ common_name: kubernetes-etcd-{{yaml.genesis.name}}-peer
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ - 127.0.0.1
+ - localhost
+ - kubernetes-etcd.kube-system.svc.cluster.local
+ - {{yaml.kubernetes.etcd_service_ip}}
+{% for server in yaml.masters %}
+ - document_name: kubernetes-etcd-{{server.name}}-peer
+ common_name: kubernetes-etcd-{{server.name}}-peer
+ hosts:
+ - {{server.name}}
+ - {{server.host}}
+ - {{server.ksn}}
+ - 127.0.0.1
+ - localhost
+ - kubernetes-etcd.kube-system.svc.cluster.local
+ - {{yaml.kubernetes.etcd_service_ip}}
+{% endfor %}
+ # End node list
+ calico-etcd:
+ description: Certificates for Calico etcd client traffic
+ certificates:
+ - document_name: calico-etcd-anchor
+ description: anchor
+ common_name: anchor
+ # NEWSITE-CHANGEME: The following should be a list of the control plane
+ # nodes in the environment, including genesis.
+ # For each node, the `hosts` list should be comprised of:
+ # 1. The node's hostname, as already defined in baremetal/nodes.yaml
+ # 2. The node's oam IP address, as already defined in baremetal/nodes.yaml
+ # 3. The node's Calico IP address, as already defined in baremetal/nodes.yaml
+ # 4. 127.0.0.1
+ # 5. localhost
+ # 6. The calico/etcd/service_ip defined in networks/common-addresses.yaml
+ # NOTE: This list also needs to include the Genesis node, which is not
+ # listed in baremetal/nodes.yaml, but by convention should be allocated
+ # the first non-reserved IP in each logical network allocation range
+ # defined in networks/physical/networks.yaml
+ - document_name: calico-etcd-{{yaml.genesis.name}}
+ common_name: calico-etcd-{{yaml.genesis.name}}
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ - 127.0.0.1
+ - localhost
+ - 10.96.232.136
+{% for server in yaml.masters %}
+ - document_name: calico-etcd-{{server.name}}
+ common_name: calico-etcd-{{server.name}}
+ hosts:
+ - {{server.name}}
+ - {{server.host}}
+ - {{server.ksn}}
+ - 127.0.0.1
+ - localhost
+ - 10.96.232.136
+{% endfor %}
+ - document_name: calico-node
+ common_name: calcico-node
+ # End node list
+ calico-etcd-peer:
+ description: Certificates for Calico etcd clients
+ certificates:
+ # NEWSITE-CHANGEME: This list should be identical to the previous list,
+ # except that `-peer` has been appended to the document/common names.
+ - document_name: calico-etcd-{{yaml.genesis.name}}-peer
+ common_name: calico-etcd-{{yaml.genesis.name}}-peer
+ hosts:
+ - {{yaml.genesis.name}}
+ - {{yaml.genesis.host}}
+ - {{yaml.genesis.ksn}}
+ - 127.0.0.1
+ - localhost
+ - 10.96.232.136
+{% for server in yaml.masters %}
+ - document_name: calico-etcd-{{server.name}}-peer
+ common_name: calico-etcd-{{server.name}}-peer
+ hosts:
+ - {{server.name}}
+ - {{server.host}}
+ - {{server.ksn}}
+ - 127.0.0.1
+ - localhost
+ - 10.96.232.136
+{% endfor %}
+ - document_name: calico-node-peer
+ common_name: calcico-node-peer
+ # End node list
+ keypairs:
+ - name: service-account
+ description: Service account signing key for use by Kubernetes controller-manager.
+...