Files
irsa-manager/internal/manifests/keys_secret.go
T
2024-04-11 20:59:17 +09:00

44 lines
965 B
Go

package manifests
import (
"github.com/kkb0318/irsa-manager/internal/selfhosted"
corev1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type SecretBuilder struct {
data map[string][]byte
secretType corev1.SecretType
}
func NewSecretBuilder() *SecretBuilder {
return &SecretBuilder{
secretType: corev1.SecretTypeOpaque,
}
}
func (b *SecretBuilder) WithSSHKey(keyPair selfhosted.KeyPair) *SecretBuilder {
b.data = map[string][]byte{
"ssh-publickey": keyPair.PublicKey(),
corev1.SSHAuthPrivateKey: keyPair.PrivateKey(),
}
b.secretType = corev1.SecretTypeSSHAuth
return b
}
func (b *SecretBuilder) Build(name, ns string) (*corev1.Secret, error) {
secret := &corev1.Secret{
ObjectMeta: v1.ObjectMeta{
Name: name,
Namespace: ns,
},
TypeMeta: v1.TypeMeta{
APIVersion: corev1.SchemeGroupVersion.String(),
Kind: "Secret",
},
Type: b.secretType,
Data: b.data,
}
return secret, nil
}