|  | @@ -10,12 +10,19 @@ from kubernetes.client.rest import ApiException
 | 
											
												
													
														|  |  from pprint import pprint
 |  |  from pprint import pprint
 | 
											
												
													
														|  |  from kubernetes import client, config
 |  |  from kubernetes import client, config
 | 
											
												
													
														|  |  import sys, getopt, random
 |  |  import sys, getopt, random
 | 
											
												
													
														|  | 
 |  | +from aliyunsdkcore.client import AcsClient
 | 
											
												
													
														|  | 
 |  | +from aliyunsdkcore.acs_exception.exceptions import ClientException
 | 
											
												
													
														|  | 
 |  | +from aliyunsdkcore.acs_exception.exceptions import ServerException
 | 
											
												
													
														|  | 
 |  | +from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest
 | 
											
												
													
														|  | 
 |  | +from aliyunsdkalidns.request.v20150109.DeleteDomainRecordRequest import DeleteDomainRecordRequest
 | 
											
												
													
														|  | 
 |  | +from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -JNLP_ENV = os.getenv('JNLP_ENV') 
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +JNLP_ENV = os.getenv('JNLP_ENV')
 | 
											
												
													
														|  |  JNLP_TAG = os.getenv('JNLP_TAG')
 |  |  JNLP_TAG = os.getenv('JNLP_TAG')
 | 
											
												
													
														|  |  JNLP_CONTAINER_PORT = os.getenv('JNLP_CONTAINER_PORT')
 |  |  JNLP_CONTAINER_PORT = os.getenv('JNLP_CONTAINER_PORT')
 | 
											
												
													
														|  | -JNLP_WAR = os.getenv('JNLP_WAR')
 |  | 
 | 
											
												
													
														|  | 
 |  | +# JNLP_WAR = os.getenv('JNLP_WAR')
 | 
											
												
													
														|  |  JNLP_INGRESS = os.getenv('JNLP_INGRESS')
 |  |  JNLP_INGRESS = os.getenv('JNLP_INGRESS')
 | 
											
												
													
														|  |  JNLP_IMAGE = os.getenv('JNLP_IMAGE')
 |  |  JNLP_IMAGE = os.getenv('JNLP_IMAGE')
 | 
											
												
													
														|  |  JNLP_CONTROL_NAME = os.getenv('DRONE_REPO_NAME')
 |  |  JNLP_CONTROL_NAME = os.getenv('DRONE_REPO_NAME')
 | 
											
										
											
												
													
														|  | @@ -27,10 +34,12 @@ JNLP_STORAGE_CAPACITY = os.getenv('JNLP_STORAGE_CAPACITY')
 | 
											
												
													
														|  |  JNLP_MOUNT_PATH = os.getenv('JNLP_MOUNT_PATH')
 |  |  JNLP_MOUNT_PATH = os.getenv('JNLP_MOUNT_PATH')
 | 
											
												
													
														|  |  JNLP_SVC_MODE = os.getenv('JNLP_SVC_MODE')
 |  |  JNLP_SVC_MODE = os.getenv('JNLP_SVC_MODE')
 | 
											
												
													
														|  |  NGINX_SVC = str(JNLP_ENV) + '/' + str(JNLP_CONTROL_NAME) + '-svc:' + str(JNLP_CONTAINER_PORT)
 |  |  NGINX_SVC = str(JNLP_ENV) + '/' + str(JNLP_CONTROL_NAME) + '-svc:' + str(JNLP_CONTAINER_PORT)
 | 
											
												
													
														|  | -NGINX_PORT = os.getenv('JNLP_CONTAINER_PORT')    
 |  | 
 | 
											
												
													
														|  | 
 |  | +NGINX_PORT = os.getenv('JNLP_CONTAINER_PORT')
 | 
											
												
													
														|  |  RECORD_NAME = os.getenv('JNLP_ENV') + "-" + os.getenv('DRONE_REPO_NAME')
 |  |  RECORD_NAME = os.getenv('JNLP_ENV') + "-" + os.getenv('DRONE_REPO_NAME')
 | 
											
												
													
														|  | -INGRESS_LIST = ["10.26.30.12", "10.26.29.54", "10.26.30.102", "10.26.30.13"]
 |  | 
 | 
											
												
													
														|  | -NGINX_RECORD_IP = random.sample(INGRESS_LIST, 1)[0]
 |  | 
 | 
											
												
													
														|  | 
 |  | +INGRESS_LIST_IN = ["10.26.32.137"]
 | 
											
												
													
														|  | 
 |  | +INGRESS_LIST_PUB = ["120.192.70.105"]
 | 
											
												
													
														|  | 
 |  | +NGINX_RECORD_IP = random.sample(INGRESS_LIST_PUB, 1)[0]
 | 
											
												
													
														|  | 
 |  | +DOMAINNAME = os.getenv('JNLP_DOMAIN').strip('.')
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  # 生成deploy.yaml文件
 |  |  # 生成deploy.yaml文件
 | 
											
										
											
												
													
														|  | @@ -44,7 +53,7 @@ def deployYamlCreate():
 | 
											
												
													
														|  |      f1.writelines(tmpctl)
 |  |      f1.writelines(tmpctl)
 | 
											
												
													
														|  |      f1.close()
 |  |      f1.close()
 | 
											
												
													
														|  |      status,output = commands.getstatusoutput("sh tempshell.sh && rm -f tempshell.sh")
 |  |      status,output = commands.getstatusoutput("sh tempshell.sh && rm -f tempshell.sh")
 | 
											
												
													
														|  | -    print("code:" + str(status) + str(output) + "; create deploy.yaml success !!!") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +    print("code:" + str(status) + str(output) + "; create deploy.yaml success !!!")
 | 
											
												
													
														|  |      return status,output
 |  |      return status,output
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -59,7 +68,7 @@ def DockerfileCreate():
 | 
											
												
													
														|  |      f2.writelines(tmp)
 |  |      f2.writelines(tmp)
 | 
											
												
													
														|  |      f2.close()
 |  |      f2.close()
 | 
											
												
													
														|  |      status,output = commands.getstatusoutput("sh tmp.sh && rm -f tmp.sh")
 |  |      status,output = commands.getstatusoutput("sh tmp.sh && rm -f tmp.sh")
 | 
											
												
													
														|  | -    print("code:" + str(status) + str(output) + "; create Dockerfile success !!!") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +    print("code:" + str(status) + str(output) + "; create Dockerfile success !!!")
 | 
											
												
													
														|  |      return
 |  |      return
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -96,22 +105,22 @@ def deployToKube():
 | 
											
												
													
														|  |          print("Warning:" + JNLP_CONTROL_NAME + " is already, i will update it and update nginx tcp proxy !!!")
 |  |          print("Warning:" + JNLP_CONTROL_NAME + " is already, i will update it and update nginx tcp proxy !!!")
 | 
											
												
													
														|  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml && kubectl apply -f ./configmap.json")
 |  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml && kubectl apply -f ./configmap.json")
 | 
											
												
													
														|  |          print("===>>> kubectl apply output <<<===")
 |  |          print("===>>> kubectl apply output <<<===")
 | 
											
												
													
														|  | -        print(apply_out) 
 |  | 
 | 
											
												
													
														|  | 
 |  | +        print(apply_out)
 | 
											
												
													
														|  |      elif appStatus == "1" and cmStatus == "0":
 |  |      elif appStatus == "1" and cmStatus == "0":
 | 
											
												
													
														|  | -        print("Warning:" + JNLP_CONTROL_NAME + " is already, i will update it !!!") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +        print("Warning:" + JNLP_CONTROL_NAME + " is already, i will update it !!!")
 | 
											
												
													
														|  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml")
 |  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml")
 | 
											
												
													
														|  | -        print("===>>> kubectl apply output <<<===") 
 |  | 
 | 
											
												
													
														|  | -        print(apply_out) 
 |  | 
 | 
											
												
													
														|  | 
 |  | +        print("===>>> kubectl apply output <<<===")
 | 
											
												
													
														|  | 
 |  | +        print(apply_out)
 | 
											
												
													
														|  |      elif appStatus != "1" and cmStatus == "1":
 |  |      elif appStatus != "1" and cmStatus == "1":
 | 
											
												
													
														|  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml && kubectl apply -f ./configmap.json")
 |  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml && kubectl apply -f ./configmap.json")
 | 
											
												
													
														|  | -        print("===>>> kubectl apply output <<<===") 
 |  | 
 | 
											
												
													
														|  | -        print(apply_out) 
 |  | 
 | 
											
												
													
														|  | -        print("===>>> apply is successfull <<<===") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +        print("===>>> kubectl apply output <<<===")
 | 
											
												
													
														|  | 
 |  | +        print(apply_out)
 | 
											
												
													
														|  | 
 |  | +        print("===>>> apply is successfull <<<===")
 | 
											
												
													
														|  |      else:
 |  |      else:
 | 
											
												
													
														|  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml")
 |  |          apply_out = commands.getoutput("kubectl apply -f ./deploy.yaml")
 | 
											
												
													
														|  | -        print("===>>> kubectl apply output <<<===") 
 |  | 
 | 
											
												
													
														|  | -        print(apply_out) 
 |  | 
 | 
											
												
													
														|  | -        print("===>>> apply app successfull <<<===") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +        print("===>>> kubectl apply output <<<===")
 | 
											
												
													
														|  | 
 |  | +        print(apply_out)
 | 
											
												
													
														|  | 
 |  | +        print("===>>> apply app successfull <<<===")
 | 
											
												
													
														|  |      return
 |  |      return
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -123,14 +132,14 @@ def deployStatus():
 | 
											
												
													
														|  |      stsname = JNLP_CONTROL_NAME
 |  |      stsname = JNLP_CONTROL_NAME
 | 
											
												
													
														|  |      pretty = "true"
 |  |      pretty = "true"
 | 
											
												
													
														|  |      for x in range(20):
 |  |      for x in range(20):
 | 
											
												
													
														|  | -        try: 
 |  | 
 | 
											
												
													
														|  | 
 |  | +        try:
 | 
											
												
													
														|  |              sts_response = appsv1_api_instance.read_namespaced_stateful_set_status(stsname, namespace, pretty=pretty)
 |  |              sts_response = appsv1_api_instance.read_namespaced_stateful_set_status(stsname, namespace, pretty=pretty)
 | 
											
												
													
														|  |              if sts_response.status.replicas == sts_response.status.ready_replicas :
 |  |              if sts_response.status.replicas == sts_response.status.ready_replicas :
 | 
											
												
													
														|  |                  print("===>>> " +stsname + " is RUNNING <<<===")
 |  |                  print("===>>> " +stsname + " is RUNNING <<<===")
 | 
											
												
													
														|  |                  chk_status = 1
 |  |                  chk_status = 1
 | 
											
												
													
														|  |                  break
 |  |                  break
 | 
											
												
													
														|  |              else:
 |  |              else:
 | 
											
												
													
														|  | -                if x < 20:
 |  | 
 | 
											
												
													
														|  | 
 |  | +                if x < 40:
 | 
											
												
													
														|  |                      time.sleep(15)
 |  |                      time.sleep(15)
 | 
											
												
													
														|  |                  else:
 |  |                  else:
 | 
											
												
													
														|  |                      chk_status = 0
 |  |                      chk_status = 0
 | 
											
										
											
												
													
														|  | @@ -145,7 +154,7 @@ def deployStatus():
 | 
											
												
													
														|  |  # 如果域名已存在,不会再更新
 |  |  # 如果域名已存在,不会再更新
 | 
											
												
													
														|  |  def dnsAllocation():
 |  |  def dnsAllocation():
 | 
											
												
													
														|  |      if JNLP_INGRESS == "nginx":
 |  |      if JNLP_INGRESS == "nginx":
 | 
											
												
													
														|  | -        httpClient = httplib.HTTPConnection("opsadmin.evbj.appeasou.com", 80, timeout=30)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        httpClient = httplib.HTTPConnection("opsadmin.evbj.easou.com", 80, timeout=30)
 | 
											
												
													
														|  |          headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
 |  |          headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
 | 
											
												
													
														|  |          params = urllib.urlencode({'method': 'add', 'type': 'record', 'domain_id': 24, 'record_type': 'A', 'record_name': RECORD_NAME ,'record_ip': NGINX_RECORD_IP , 'record_ttl': 180})
 |  |          params = urllib.urlencode({'method': 'add', 'type': 'record', 'domain_id': 24, 'record_type': 'A', 'record_name': RECORD_NAME ,'record_ip': NGINX_RECORD_IP , 'record_ttl': 180})
 | 
											
												
													
														|  |          httpClient.request("POST", "/dns/dnsapi/?token=c2d1856be235a3207cd03b6f4d3c4094", params, headers)
 |  |          httpClient.request("POST", "/dns/dnsapi/?token=c2d1856be235a3207cd03b6f4d3c4094", params, headers)
 | 
											
										
											
												
													
														|  | @@ -154,9 +163,9 @@ def dnsAllocation():
 | 
											
												
													
														|  |          nsStatus = jstr['status']
 |  |          nsStatus = jstr['status']
 | 
											
												
													
														|  |          print(NGINX_RECORD_IP)
 |  |          print(NGINX_RECORD_IP)
 | 
											
												
													
														|  |          if nsStatus == "-501":
 |  |          if nsStatus == "-501":
 | 
											
												
													
														|  | -            print(JNLP_ENV + "-" + JNLP_CONTROL_NAME + JNLP_DOMAIN + " is already exist") 
 |  | 
 | 
											
												
													
														|  | -        elif nsStatus == "0": 
 |  | 
 | 
											
												
													
														|  | -            httpClient = httplib.HTTPConnection("opsadmin.evbj.appeasou.com", 80, timeout=30)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            print(JNLP_ENV + "-" + JNLP_CONTROL_NAME + JNLP_DOMAIN + " is already exist")
 | 
											
												
													
														|  | 
 |  | +        elif nsStatus == "0":
 | 
											
												
													
														|  | 
 |  | +            httpClient = httplib.HTTPConnection("opsadmin.evbj.easou.com", 80, timeout=30)
 | 
											
												
													
														|  |              httpClient.request("POST", "/dns/mkconfig/?token=c2d1856be235a3207cd03b6f4d3c4094")
 |  |              httpClient.request("POST", "/dns/mkconfig/?token=c2d1856be235a3207cd03b6f4d3c4094")
 | 
											
												
													
														|  |              response = httpClient.getresponse().read()
 |  |              response = httpClient.getresponse().read()
 | 
											
												
													
														|  |              jstr = json.loads(response)
 |  |              jstr = json.loads(response)
 | 
											
										
											
												
													
														|  | @@ -165,21 +174,49 @@ def dnsAllocation():
 | 
											
												
													
														|  |          else:
 |  |          else:
 | 
											
												
													
														|  |              print("*****Please contact DNS systen administrator*****")
 |  |              print("*****Please contact DNS systen administrator*****")
 | 
											
												
													
														|  |      else :
 |  |      else :
 | 
											
												
													
														|  | -        print(">>> Ingress error, Only nginx !!! <<<") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +        print(">>> Ingress error, Only nginx !!! <<<")
 | 
											
												
													
														|  |      return
 |  |      return
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +def cloudDns():
 | 
											
												
													
														|  | 
 |  | +    if JNLP_INGRESS == "nginx":
 | 
											
												
													
														|  | 
 |  | +        client = AcsClient('LTAI4LibOCW5ilIa', 'NiA9OumXJDHp4TwLwXWcCKGoDgDjms', 'cn-hangzhou')
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        # describe record
 | 
											
												
													
														|  | 
 |  | +        request = DescribeDomainRecordsRequest()
 | 
											
												
													
														|  | 
 |  | +        request.set_accept_format('json')
 | 
											
												
													
														|  | 
 |  | +        request.set_DomainName(DOMAINNAME)
 | 
											
												
													
														|  | 
 |  | +        request.set_RRKeyWord(RECORD_NAME)
 | 
											
												
													
														|  | 
 |  | +        response = client.do_action_with_exception(request)
 | 
											
												
													
														|  | 
 |  | +        jsondata = json.loads(response)
 | 
											
												
													
														|  | 
 |  | +        # print(response)
 | 
											
												
													
														|  | 
 |  | +        if jsondata['TotalCount'] != 0:
 | 
											
												
													
														|  | 
 |  | +            print(RECORD_NAME + "." + DOMAINNAME + " is already exists <<<")
 | 
											
												
													
														|  | 
 |  | +        else :
 | 
											
												
													
														|  | 
 |  | +        # add record
 | 
											
												
													
														|  | 
 |  | +            request = AddDomainRecordRequest()
 | 
											
												
													
														|  | 
 |  | +            request.set_accept_format('json')
 | 
											
												
													
														|  | 
 |  | +            request.set_Value(NGINX_RECORD_IP)
 | 
											
												
													
														|  | 
 |  | +            request.set_Type("A")
 | 
											
												
													
														|  | 
 |  | +            request.set_RR(RECORD_NAME)
 | 
											
												
													
														|  | 
 |  | +            request.set_DomainName(DOMAINNAME)
 | 
											
												
													
														|  | 
 |  | +            response = client.do_action_with_exception(request)
 | 
											
												
													
														|  | 
 |  | +            # print(response)
 | 
											
												
													
														|  | 
 |  | +            print(RECORD_NAME + "." + DOMAINNAME + " add sucess <<<")
 | 
											
												
													
														|  | 
 |  | +    else :
 | 
											
												
													
														|  | 
 |  | +        print(">>> Ingress error, Only nginx !!! <<<")
 | 
											
												
													
														|  | 
 |  | +    return
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  def main(argv=None):
 |  |  def main(argv=None):
 | 
											
												
													
														|  |      if argv is None:
 |  |      if argv is None:
 | 
											
												
													
														|  |          args = sys.argv[1:]
 |  |          args = sys.argv[1:]
 | 
											
												
													
														|  |          for opt_name in args :
 |  |          for opt_name in args :
 | 
											
												
													
														|  |              if opt_name in ('-a','--apply'):
 |  |              if opt_name in ('-a','--apply'):
 | 
											
												
													
														|  | -                print("===>>> deploy app to kubernetes <<<===") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +                print("===>>> deploy app to kubernetes <<<===")
 | 
											
												
													
														|  |                  deployToKube()
 |  |                  deployToKube()
 | 
											
												
													
														|  |                  time.sleep(10)
 |  |                  time.sleep(10)
 | 
											
												
													
														|  |                  sys.exit()
 |  |                  sys.exit()
 | 
											
												
													
														|  |              if opt_name in ('-b','--build'):
 |  |              if opt_name in ('-b','--build'):
 | 
											
												
													
														|  | -                print("===>>> create deploy.yaml <<<===") 
 |  | 
 | 
											
												
													
														|  | 
 |  | +                print("===>>> create deploy.yaml <<<===")
 | 
											
												
													
														|  |                  deployYamlCreate()
 |  |                  deployYamlCreate()
 | 
											
												
													
														|  |                  sys.exit()
 |  |                  sys.exit()
 | 
											
												
													
														|  |              if opt_name in ('-c','--check'):
 |  |              if opt_name in ('-c','--check'):
 | 
											
										
											
												
													
														|  | @@ -187,8 +224,8 @@ def main(argv=None):
 | 
											
												
													
														|  |                  deployStatus()
 |  |                  deployStatus()
 | 
											
												
													
														|  |                  sys.exit()
 |  |                  sys.exit()
 | 
											
												
													
														|  |              if opt_name in ('-d','--dns'):
 |  |              if opt_name in ('-d','--dns'):
 | 
											
												
													
														|  | -                print("===>>> update dns resolve <<<===") 
 |  | 
 | 
											
												
													
														|  | -                dnsAllocation()
 |  | 
 | 
											
												
													
														|  | 
 |  | +                print("===>>> add/update dns resolve <<<===")
 | 
											
												
													
														|  | 
 |  | +                cloudDns()
 | 
											
												
													
														|  |                  sys.exit()
 |  |                  sys.exit()
 | 
											
												
													
														|  |      return
 |  |      return
 | 
											
												
													
														|  |  
 |  |  
 |