| // Copyright 2020 The Monogon Project Authors. |
| // |
| // SPDX-License-Identifier: Apache-2.0 |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto3"; |
| package metropolis.proto.api; |
| option go_package = "source.monogon.dev/metropolis/proto/api"; |
| |
| // EnrolmentConfig is the single Metropolis node boot configuration file |
| // contained in the ESP. It configures the way the node will start up (what |
| // cluster it will join/enroll into/create). |
| message EnrolmentConfig { |
| // Debug/temporary cluster enrolment method. If set, the node will attempt to enroll into the |
| // cluster that this ticket was generated for. Otherwise, a new cluster will be created. |
| GoldenTicket golden_ticket = 1; |
| |
| // Filled in by node after it is enrolled |
| string node_id = 2; |
| } |
| |
| // GoldenTicket is a ticket that allows any node to enroll into a cluster, bypassing any integrity |
| // checks. |
| // |
| // Currently, enrolling into a cluster does not use a TPM-based workflow, and instead |
| // bases on a simplified workflow of joining consensus by being started with a |
| // TLS client certificate. This is a short-circuit fix to allow multi-node |
| // clusters for testing before we design the final cluster node lifecycle system. |
| message GoldenTicket { |
| // Etcd peer CA certificate. |
| bytes etcd_ca_cert = 1; |
| // Etcd peer client certificate. |
| bytes etcd_client_cert = 2; |
| // Etcd peer client key. |
| bytes etcd_client_key = 3; |
| // Initial etcd peer CRL. |
| bytes etcd_crl = 4; |
| |
| message EtcdPeer { |
| string name = 1; |
| string address = 2; |
| } |
| // All other current etcd peers in the cluster. |
| repeated EtcdPeer peers = 5; |
| // The peer that this node should start running. |
| EtcdPeer this = 6; |
| |
| // Node configuration. Currently unused (in the future, this will be used to run a node |
| // management service separate from etcd clustering). |
| string node_id = 7; |
| bytes node_cert = 8; |
| bytes node_key = 9; |
| } |