sparse-intern-71089
12/28/2023, 1:41 PMancient-policeman-24615
12/28/2023, 3:51 PMproud-portugal-76914
12/28/2023, 8:53 PM@app.route('/kc', methods=['POST'])
def deploy():
//args are coming from request.json
threading.Thread(target=deploy_kc.deploy, args=(
keycloak_namespace, aks_cluster_name, resource_group_name, keycloak_yaml, project_name, stack_name))proud-portugal-76914
12/28/2023, 8:53 PMdef deploy_keycloak():
release = Chart(
"keycloak",
ChartOpts(
chart="keycloakx",
version="2.3.0",
fetch_opts=FetchOpts(
repo="https://codecentric.github.io/helm-charts"
),
values=yaml.safe_load(get_config('keycloak_yaml')),
namespace=get_config('keycloak_namespace')
) # , opts=pulumi.ResourceOptions(depends_on=[mysql_chart])
)
def deploy(keycloak_namespace, aks_cluster_name, resource_group_name, keycloak_yaml, project_name, stack_name):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
subprocess.run(f"az aks get-credentials -n {aks_cluster_name} -g {resource_group_name} --overwrite-existing",
shell=True, check=True)
stack = auto.create_or_select_stack(
stack_name=stack_name,
project_name=project_name,
program=deploy_keycloak
)
stack.refresh()
up_res = stack.up()
print(f"update summary: {up_res.summary.resource_changes}")
// update summary: {'create': 7, 'delete': 1, 'same': 1}proud-portugal-76914
12/28/2023, 8:55 PM@app.route('/deploy_image', methods=['POST'])
def deploy_resources():
data = request.json
threading.Thread(target=deploy_docker_img.deploy, args=(data,)).start()proud-portugal-76914
12/28/2023, 8:56 PMdef deploy(request_data):
try:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
set_config("request_data", request_data)
subprocess.run(f"az aks get-credentials -n {aks_cluster_name} -g {resource_group_name} --overwrite-existing",
shell=True, check=True)
stack = auto.create_or_select_stack(
stack_name=request_data.get('stack_name'),
project_name=request_data.get('project_name'),
program=deploy_resources
)
stack.refresh()
up_res = stack.up()
print(f"update summary: {up_res.summary.resource_changes}")
// update summary: {'create': 3, 'delete': 7, 'same': 1}
def deploy_docker_image():
request_data = get_config('request_data')
app_labels = {"app": request_data.get('app_name')}
config_map = create_config_map(request_data)
# Deployment
deployment = k8s.apps.v1.Deployment(
request_data.get('deployment_name') or request_data.get('app_name') + "-deployment",
metadata={
"namespace": request_data.get('namespace'),
"name": request_data.get('deployment_name') or request_data.get('app_name') + "-deployment",
},
spec={
"selector": {"matchLabels": app_labels},
"replicas": request_data.get('replica_count') or 1,
"template": {
"metadata": {"labels": app_labels},
"spec": {
"containers": [{
"name": request_data.get('app_name'),
"image": request_data.get('image_name'),
"ports": [{"containerPort": request_data.get('port') or 9087}],
"volumeMounts": [{
"name": "config-volume",
"mountPath": "/config"
}],
}],
"volumes": [{
"name": "config-volume",
"configMap": {
"name": config_map.metadata.name
}
}],
"image_pull_secrets": [{"name": request_data.get('image_pull_secret')}]
}
}
}
)
service = k8s.core.v1.Service(
"kcadminapp-service",
metadata={
"namespace": request_data.get('namespace'),
"name": "kcadminapp-service"
},
spec={
"selector": app_labels,
"ports": [{
"protocol": "TCP",
"port": 80,
"targetPort": request_data.get('port') or 9087
}],
"type": "LoadBalancer"
}
)
pulumi.export('deployment_name', deployment.metadata.name)
def create_config_map(request_data):
config_data = {
"application.properties": f"""
server.servlet.context-path=/{request_data.get('app_name')}
....
keycloak.smtp.ssl=false
"""
}
config_map = k8s.core.v1.ConfigMap(
request_data.get('config_map_name') or "kc-admin-config",
metadata={"namespace": request_data.get('namespace'),
"name": request_data.get('config_map_name') or "kc-admin-config"},
data=config_data
)
return config_mapproud-portugal-76914
12/29/2023, 3:43 PMancient-policeman-24615
01/03/2024, 1:05 PMancient-policeman-24615
01/03/2024, 1:08 PMancient-policeman-24615
01/03/2024, 1:11 PMstack.up()
, Pulumi will deploy the resources you described in the stack’s program, and delete all resources not described. If you run stack.up()
with Program A, then run stack.up()
with Program B, all resources from Program A not mentioned in Program B will be destroyed.proud-portugal-76914
01/13/2024, 7:59 AMlimited-rainbow-51650
01/16/2024, 8:04 AMNo matter how you like to participate in developer communities, Pulumi wants to meet you there. If you want to meet other Pulumi users to share use-cases and best practices, contribute code or documentation, see us at an event, or just tell a story about something cool you did with Pulumi, you are part of our community.
Powered by