mirror of
https://github.com/psviderski/uncloud.git
synced 2026-10-06 13:18:58 +00:00
* feat: add uc dns set
This allows manual setting of the cluster's domain name. I use this to
make the local cluster admin aware that this has been done.
(and then manually update the external dns)
```
% uc dns set ctrl.u.science.ru.nl
Set cluster domain: ctrl.u.science.ru.nl
Deploy the Caddy reverse proxy service ('uc caddy deploy') to enable internet access to your services via the reserved or your custom domain.
% uc dns show
ctrl.u.science.ru.nl
% uc dns set ctrl.u.science.ru.nl
Error: domain already reserved
% uc dns release
Released cluster domain: ctrl.u.science.ru.nl
```
See: #37
Signed-off-by: Miek Gieben <miek@miek.nl>
* docs
Signed-off-by: Miek Gieben <miek@miek.nl>
* check validatity
Signed-off-by: Miek Gieben <miek@miek.nl>
* No need to call out to update anything, as set doesnt use uncloud dns
Signed-off-by: Miek Gieben <miek@miek.nl>
* Ignore domain when there is no endpoint
Prevents this error, when you know what you're doing:
Error: failed to update DNS records pointing to caddy service: create cluster domain records in Uncloud DNS: rpc error: code = Unknown desc = Post "/domains/ctrl.u.science.ru.nl/records": unsupported protocol scheme ""
Signed-off-by: Miek Gieben <miek@miek.nl>
* from main
Signed-off-by: Miek Gieben <miek@miek.nl>
* mise proto && make cli-docs
Signed-off-by: Miek Gieben <miek@miek.nl>
* Rebase and and generate protos again
Signed-off-by: Miek Gieben <miek@miek.nl>
* Rebase and fix
Signed-off-by: Miek Gieben <miek@miek.nl>
* feat(dns): allow setting an externally managed cluster domain
---------
Signed-off-by: Miek Gieben <miek@miek.nl>
Co-authored-by: Pasha Sviderski <me@psviderski.name>
93 lines
2.2 KiB
Protocol Buffer
93 lines
2.2 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package api;
|
|
|
|
option go_package = "github.com/psviderski/uncloud/api/pb";
|
|
|
|
import "google/protobuf/empty.proto";
|
|
import "api/pb/common.proto";
|
|
import "api/pb/machine.proto";
|
|
|
|
service Cluster {
|
|
rpc AddMachine(AddMachineRequest) returns (AddMachineResponse);
|
|
rpc ListMachines(google.protobuf.Empty) returns (ListMachinesResponse);
|
|
rpc RemoveMachine(RemoveMachineRequest) returns (google.protobuf.Empty);
|
|
|
|
rpc ReserveDomain(ReserveDomainRequest) returns (Domain);
|
|
rpc SetDomain(SetDomainRequest) returns (google.protobuf.Empty);
|
|
rpc GetDomain(google.protobuf.Empty) returns (Domain);
|
|
rpc ReleaseDomain(google.protobuf.Empty) returns (Domain);
|
|
rpc CreateDomainRecords(CreateDomainRecordsRequest) returns (CreateDomainRecordsResponse);
|
|
}
|
|
|
|
message AddMachineRequest {
|
|
string name = 1;
|
|
NetworkConfig network = 2;
|
|
IP public_ip = 3;
|
|
}
|
|
|
|
message AddMachineResponse {
|
|
MachineInfo machine = 1;
|
|
}
|
|
|
|
message MachineMember {
|
|
MachineInfo machine = 1;
|
|
|
|
enum MembershipState {
|
|
UNKNOWN = 0;
|
|
// The member is active.
|
|
UP = 1;
|
|
// The member is active, but at least one cluster member suspects its down. For all purposes,
|
|
// a SUSPECT member is treated as if it were UP until either it refutes the suspicion (becoming UP)
|
|
// or fails to do so (being declared DOWN).
|
|
SUSPECT = 2;
|
|
// The member is confirmed DOWN.
|
|
DOWN = 3;
|
|
}
|
|
MembershipState state = 2;
|
|
}
|
|
|
|
message ListMachinesResponse {
|
|
repeated MachineMember machines = 1;
|
|
}
|
|
|
|
message RemoveMachineRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message Domain {
|
|
string name = 1;
|
|
// Whether the domain is reserved in Uncloud DNS. Older daemons (<0.21) omit this field
|
|
// and only support reserved domains, so clients should treat absence as true.
|
|
optional bool reserved = 2;
|
|
}
|
|
|
|
message ReserveDomainRequest {
|
|
string endpoint = 1;
|
|
}
|
|
|
|
message SetDomainRequest {
|
|
// An externally managed domain name. Empty clears a manually set domain.
|
|
string name = 1;
|
|
}
|
|
|
|
message CreateDomainRecordsRequest {
|
|
repeated DNSRecord records = 1;
|
|
}
|
|
|
|
message CreateDomainRecordsResponse {
|
|
repeated DNSRecord records = 1;
|
|
}
|
|
|
|
message DNSRecord {
|
|
string name = 1;
|
|
|
|
enum RecordType {
|
|
UNSPECIFIED = 0;
|
|
A = 1;
|
|
AAAA = 2;
|
|
}
|
|
RecordType type = 2;
|
|
repeated string values = 3;
|
|
}
|