Browse Source

feat: 增加HTTPs配置

TianChenjiang 5 years ago
parent
commit
a42aedeb93

+ 52 - 0
src/main/java/cn/seecoder/paas/service/facade/k8s/model/Ingress.java

@@ -1,7 +1,9 @@
 package cn.seecoder.paas.service.facade.k8s.model;
 
+import io.fabric8.kubernetes.api.model.networking.v1beta1.IngressTLS;
 import io.kubernetes.client.custom.IntOrString;
 import io.kubernetes.client.openapi.models.*;
+import io.kubernetes.client.proto.V1beta1Extensions;
 import lombok.*;
 
 import java.util.*;
@@ -29,23 +31,33 @@ public class Ingress extends K8sAbstractObject<ExtensionsV1beta1Ingress> {
     //重定向的路径,默认为根路径
     private static final String redirectPath = DEFAULT_REWRITE_PATH;
 
+    private List<IngressTls> tls = new ArrayList<>();
+
     /*Ingress能暴露HTTP和HTTPS协议口,目前暂不支持HTTPS协议*/
     private List<IngressRule> httpRules = new ArrayList<>();
 
     public Ingress(ExtensionsV1beta1Ingress extensionsV1beta1Ingress) {
         super(extensionsV1beta1Ingress);
         List<ExtensionsV1beta1IngressRule> rules = extensionsV1beta1Ingress.getSpec().getRules();
+        List<ExtensionsV1beta1IngressTLS> exTls = extensionsV1beta1Ingress.getSpec().getTls();
         if (rules != null && !rules.isEmpty()) {
             httpRules = rules.stream()
                     .filter(Objects::nonNull)
                     .map(IngressRule::new)
                     .collect(Collectors.toList());
         }
+        if (tls != null && !tls.isEmpty()) {
+            tls = exTls.stream()
+                    .filter(Objects::nonNull)
+                    .map(IngressTls::new)
+                    .collect(Collectors.toList());
+        }
     }
 
     @Override
     public ExtensionsV1beta1Ingress toK8sObject() {
         ExtensionsV1beta1IngressSpec ExtensionsV1beta1IngressSpec = new ExtensionsV1beta1IngressSpecBuilder()
+                .withTls()
                 .withRules(toExtensionsV1beta1IngressRules())
                 .build();
         ExtensionsV1beta1Ingress ExtensionsV1beta1Ingress = new ExtensionsV1beta1IngressBuilder()
@@ -148,4 +160,44 @@ public class Ingress extends K8sAbstractObject<ExtensionsV1beta1Ingress> {
                 .collect(Collectors.toList());
 
     }
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @EqualsAndHashCode
+    @Builder
+    public static class IngressTls implements K8sObjectTransformer<ExtensionsV1beta1IngressTLS> {
+
+        private List<String> hosts;
+
+        private String secretName;
+
+        public IngressTls(List<String> hosts) {
+            this.hosts = hosts;
+        }
+
+
+        public IngressTls(ExtensionsV1beta1IngressTLS extensionsV1beta1IngressTLS) {
+            this.hosts = extensionsV1beta1IngressTLS.getHosts();
+            this.secretName = extensionsV1beta1IngressTLS.getSecretName();
+        }
+
+
+        @Override
+        public ExtensionsV1beta1IngressTLS toK8sObject() {
+            return new ExtensionsV1beta1IngressTLSBuilder()
+                    .withHosts(hosts)
+                    .withNewSecretName(secretName)
+                    .build();
+        }
+    }
+
+    private List<ExtensionsV1beta1IngressTLS> toExtensionsV1beta1IngressTLS() {
+        return tls.stream()
+                .map(IngressTls::toK8sObject)
+                .collect(Collectors.toList());
+
+    }
+
+
 }

+ 4 - 0
src/main/java/cn/seecoder/paas/service/impl/EnvironmentServiceImpl.java

@@ -461,6 +461,10 @@ public class EnvironmentServiceImpl implements EnvironmentService {
                                             .build())
                             ).build()
                     ));
+                    ingress.setTls(Collections.singletonList(
+                            Ingress.IngressTls.builder().hosts(Collections.singletonList(ingressHost))
+                                    .secretName(applicationProperties.getK8s().getSecretName())
+                                    .build()));
                     if (CollectionUtils.isEmpty(ingresses) || ingresses.size() != 1) {
                         ingressApi.create(ingress);
                     } else {

+ 2 - 0
src/main/java/cn/seecoder/paas/util/ApplicationProperties.java

@@ -33,6 +33,8 @@ public class ApplicationProperties {
         private boolean debug = true;
 
         private String imageRegistry;
+
+        private String secretName;
     }
 
     @Data

+ 2 - 1
src/main/resources/application.yml

@@ -36,9 +36,10 @@ paas:
   k8s:
     api-server: http://k8s-apiserver.seecii.cn
     token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1zdzlwOCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImY3MzQ2NzVlLWZmYmItMTFlOS1iYTdjLTIyNmUyZmY2ZTdlYyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.GvBP7iNM_WNJN7dPm8ZPszDJeykifhHwBYcF58c4W73iAet1ZcZPrmiurqn4mSHcavUHNR8FqPaafnS3OD4eq5dR-i7frdIBt7yiME7AIGA4pDKWNJ3NykhyfG75omCvtQ2Gp-UvFIdf_4peAilxbwDR2NtWpky4sJQOTukZIYzN9fCeYV8My85XDBl7ze20QBsEKfPxTGZkqmytX-4VmjKkQH9ob7YB90NR2ug5VK8CA16_2ZPjf8Fx4QsdTbkyZKdFo7zIrIID0fa2lpOc2TpCKWeYCl335-ULllpxds6kiVwkRXYP-5zkIOfpI_0SshK7kbBjd238OLM3KFDf6A
-    validateSSL: false
+    validateSSL: true
     debug: false
     imageRegistry: 192.168.68.79:18082
+    secretName: seecoder-pass
   deployment-namespace: seec
   deployment-host: seecii.cn
   pvcStorageClassName: seecoder-paas