mount nfs in pod

This commit is contained in:
w-mj 2023-02-28 11:21:23 +08:00
parent 3fcc8d392d
commit ae28a70c71
No known key found for this signature in database
GPG Key ID: 3A2CB5BE2F835897
5 changed files with 62 additions and 22 deletions

View File

@ -33,6 +33,10 @@ spec:
value: "!bd832W0@CG"
- name: ASE_KEY
value: A5es$&!0GeoEast
- name: NFS_HOST
value: 192.168.252.250
- name: NFS_PATH
value: /mnt/CGdata/ms
---
apiVersion: v1
kind: Service

View File

@ -17,6 +17,7 @@ type AppModel struct {
Env string
SvcName string
Ports string
PersistentPath string
}
func (*AppModel) TableName() string {
@ -36,21 +37,25 @@ func (a *AppModel) Fill() error {
return res.Error
}
func (a *AppModel) Update() error {
func (a *AppModel) fillDefaults() {
if a.SvcName == "" {
a.SvcName = "svc"
}
a.SvcName = strings.TrimPrefix(a.SvcName, a.NamePrefix()+"-")
if a.PersistentPath == "" {
a.PersistentPath = "/data/"
}
}
func (a *AppModel) Update() error {
a.fillDefaults()
db := DB()
db.Save(a)
return nil
}
func (a *AppModel) Create() error {
if a.SvcName == "" {
a.SvcName = "svc"
}
a.SvcName = strings.TrimPrefix(a.SvcName, a.NamePrefix()+"-")
a.fillDefaults()
db := DB()
db.Create(a)
return nil
@ -155,7 +160,7 @@ func (a *AppModel) PersistentVolumeName() string {
}
func (a *AppModel) NFSPath() string {
return "/data/" + a.UserName
return GetConfig().NFSPath + "/" + a.UserName
}
func (a *AppModel) PersistentVolumeClaimName() string {
@ -165,3 +170,7 @@ func (a *AppModel) PersistentVolumeClaimName() string {
func (a *AppModel) StorageClassName() string {
return a.NamePrefix() + "-storage-class"
}
func (a *AppModel) PersistentVolumeMountName() string {
return a.NamePrefix() + "-pvm"
}

View File

@ -40,7 +40,7 @@ func InitConfig() {
config.NFSHost = os.Getenv("NFS_HOST")
config.NFSPath = os.Getenv("NFS_PATH")
mustFields := []string{"JwtKey", "AseKey", "DBHost", "DBUser", "DBPassword"}
mustFields := []string{"JwtKey", "AseKey", "DBHost", "DBUser", "DBPassword", "NFSHost", "NFSPath"}
optionalFields := map[string]string{}
for _, f := range mustFields {
if getField(config, f) == "" {

View File

@ -72,20 +72,24 @@ func (c *K8sClient) DeploymentExists(deploymentName string) bool {
}
func (c *K8sClient) UpdateDeployment(app *AppModel) {
var rep int32 = 1
labelKey, labelValue := app.GetLabel()
l := map[string]string{labelKey: labelValue}
podLabels := map[string]string{
labelKey: labelValue,
"cg-deployment": app.DeploymentName(),
}
containerPorts := funk.Map(app.GetPorts(), func(port int32) v1.ContainerPort {
return v1.ContainerPort{
ContainerPort: port,
}
}).([]v1.ContainerPort)
deployment := &appv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: app.DeploymentName(),
Labels: l,
},
Spec: appv1.DeploymentSpec{
Replicas: &rep,
Replicas: UnnamedPointer(int32(1)),
Selector: &metav1.LabelSelector{
MatchLabels: l,
},
@ -102,14 +106,30 @@ func (c *K8sClient) UpdateDeployment(app *AppModel) {
Name: "URL_PREFIX",
Value: app.ServiceName(),
}),
VolumeMounts: nil,
Ports: []v1.ContainerPort{
{ContainerPort: 80},
VolumeMounts: []v1.VolumeMount{
{
Name: app.PersistentVolumeMountName(),
ReadOnly: false,
MountPath: app.PersistentPath,
},
},
Ports: containerPorts,
SecurityContext: &v1.SecurityContext{
RunAsUser: UnnamedPointer(int64(0)),
},
}},
Volumes: []v1.Volume{
{
Name: app.PersistentVolumeMountName(),
VolumeSource: v1.VolumeSource{
NFS: &v1.NFSVolumeSource{
Server: config.NFSHost,
Path: app.NFSPath(),
ReadOnly: false,
},
},
},
},
},
},
},
@ -362,7 +382,7 @@ func (c *K8sClient) CreatePersistentVolume(app *AppModel) {
StorageClassName: app.StorageClassName(),
PersistentVolumeSource: v1.PersistentVolumeSource{
NFS: &v1.NFSVolumeSource{
Server: "192.168.252.250",
Server: GetConfig().NFSHost,
Path: app.NFSPath(),
ReadOnly: false,
},

View File

@ -115,6 +115,12 @@
placeholder="端口号"/>
</div>
<div class="row">
<label for="app-ports" class="form-label">持久化路径</label>
<input type="text" id="app-persistent-path" class="form-control" v-model="selectApp.PersistentPath"
placeholder="持久化路径"/>
</div>
<div class="row">
<label for="app-comment" class="form-label">描述</label>
<textarea type="text" id="app-comment" class="form-control" v-model="selectApp.Comment"
@ -165,6 +171,7 @@
Comment: "",
Env: "",
SvcName: "",
PersistentPath: "",
Ports: "",
}
}