public ActionResult <bool> Create() { ConnectToKube(); try { var model = new k8s.Models.V1Deployment(); model.ApiVersion = "V1"; model.Kind = "Deployment"; var guid = new Guid(); model.Metadata = new k8s.Models.V1ObjectMeta(); model.Metadata.Name = String.Concat("minecraft", guid); model.Spec = new k8s.Models.V1DeploymentSpec(); model.Spec.Replicas = 1; model.Spec.Template = new k8s.Models.V1PodTemplateSpec(); model.Spec.Template.Metadata = new k8s.Models.V1ObjectMeta(); model.Spec.Template.Metadata.Labels = new Dictionary <string, string>(); model.Spec.Template.Metadata.Labels.Add(new KeyValuePair <string, string>("app", model.Metadata.Name)); model.Spec.Template.Spec = new k8s.Models.V1PodSpec(); model.Spec.Template.Spec.Containers = new List <k8s.Models.V1Container>(); model.Spec.Template.Spec.Containers.Add(new k8s.Models.V1Container() { Name = "minecraft", Image = "openhack/minecraft-server:1.0" }); model.Spec.Template.Spec.Containers[0].Ports = new List <k8s.Models.V1ContainerPort>(); model.Spec.Template.Spec.Containers[0].Ports.Add(new k8s.Models.V1ContainerPort() { Name = "minecraft", ContainerPort = 25565 }); model.Spec.Template.Spec.Containers[0].Ports.Add(new k8s.Models.V1ContainerPort() { Name = "rcon", ContainerPort = 25575 }); model.Spec.Template.Spec.Containers[0].Env = new List <k8s.Models.V1EnvVar>(); model.Spec.Template.Spec.Containers[0].Env.Add(new k8s.Models.V1EnvVar() { Name = "EULA", Value = "TRUE" }); client.CreateNamespacedDeployment(model, "default"); } catch (Exception e) { return(false); } return(true); }
public static k8s.Models.V1Deployment Deployment(Models.RepoData RepoData) { k8s.Models.V1Deployment KubeObject = k8s.Yaml.LoadFromFileAsync <k8s.Models.V1Deployment>("/KubernetesObjects/Deployment.yaml").Result; KubeObject.Metadata.Name = RepoData.Name; KubeObject.Metadata.NamespaceProperty = Settings.KubernetesNamespace; KubeObject.Spec.Selector.MatchLabels["app"] = RepoData.Name; KubeObject.Spec.Template.Metadata.Labels["app"] = RepoData.Name; KubeObject.Spec.Template.Spec.InitContainers[0].Name = $"{RepoData.Name}-init"; KubeObject.Spec.Template.Spec.InitContainers[0].Image = deploybyhand.getPackageType(RepoData.PackageType, false); KubeObject.Spec.Template.Spec.InitContainers[0].Env[0].Value = ""; KubeObject.Spec.Template.Spec.Containers[0].Name = RepoData.Name; KubeObject.Spec.Template.Spec.Containers[0].Image = deploybyhand.getPackageType(RepoData.PackageType, true); KubeObject.Spec.Template.Spec.Containers[1].Name = $"{RepoData.Name}-server"; KubeObject.Spec.Template.Spec.ImagePullSecrets[0].Name = ""; KubeObject.Spec.Template.Spec.Volumes[0].PersistentVolumeClaim.ClaimName = $"{RepoData.Name}-pvc"; KubeObject.Spec.Template.Spec.Volumes[1].PersistentVolumeClaim.ClaimName = $"{RepoData.Name}-incoming-pvc"; return(KubeObject); }