Esempio n. 1
0
 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);
        }