aks-node-controller/proto/aksnodeconfig/v1/bootstrapping_config.proto (39 lines of code) (raw):
syntax = "proto3";
package aksnodeconfig.v1;
option go_package = "github.com/Azure/agentbaker/aks-node-controller/pkg/gen/aksnodeconfig/v1;aksnodeconfigv1";
enum BootstrappingAuthMethod {
BOOTSTRAPPING_AUTH_METHOD_UNSPECIFIED = 0;
// This is the default K8s bootstrap authentication method - a time limited bootstrap token. It's stored as a secret
// with a particular type in the API server.
//nolint:gosec // this is a const string to use in switch statements, not hardcoded credentials
BOOTSTRAPPING_AUTH_METHOD_BOOTSTRAP_TOKEN = 1;
// Secure TLS bootstrapping is a process where the node can use signed metadata from the Azure IMDS service to authenticate
// against the api server
BOOTSTRAPPING_AUTH_METHOD_SECURE_TLS_BOOTSTRAPPING = 2;
// Nodes running outside Azure can use the Azure Arc MSI to authenticate to an API server. This only works when the cluster is
// using AAD authentication.
BOOTSTRAPPING_AUTH_METHOD_ARC_MSI = 3;
// Nodes running inside Azure can use the Azure Arc MSI to authenticate to an API server. This only works when the cluster is
// using AAD authentication.
BOOTSTRAPPING_AUTH_METHOD_AZURE_MSI = 4;
}
enum ClusterJoinMethod {
CLUSTER_JOIN_METHOD_UNSPECIFIED = 0;
// The default behaviour is for the node to make a certificate signing request (CSR) and then
// use that CSR for ongoing communication.
CLUSTER_JOIN_METHOD_GENERATE_CSR = 1;
// In some cases, the node will use the bootstrapping auth to register itself as a node and for ongoing communications.
CLUSTER_JOIN_METHOD_USE_BOOTSTRAPPING_AUTH = 2;
}
message BootstrappingConfig {
// Method to authenticate the node to the API server
BootstrappingAuthMethod bootstrapping_auth_method = 1;
// how the node should join and communicate with the API server after authentication
ClusterJoinMethod cluster_join_method = 2;
// Only required until Secure TLS bootstrapping in place. Would use kubelet identity after that.
optional string tls_bootstrapping_token = 3;
// Only used when secure TLS bootstrapping is enabled or one of the Azure/Arc methods. This is the appserver appid that the node will use to bootstrap.
optional string custom_aad_resource = 4;
// Only used when one of the Azure/Arc methods is enabled. This is the client ID of the MSI that the node will use to bootstrap.
optional string custom_aad_client_id = 5;
}