diff --git a/deploy/k8s/aks-namespaces.tf b/deploy/k8s/aks-namespaces.tf deleted file mode 100644 index fbc4dffd..00000000 --- a/deploy/k8s/aks-namespaces.tf +++ /dev/null @@ -1,65 +0,0 @@ - -resource "kubernetes_namespace" "prod" { - metadata { - annotations = { - name = "prod" - } - - labels = { - Environment = "Production" - } - name = "prod" - } -} - -resource "kubernetes_namespace" "dev" { - metadata { - annotations = { - name = "dev" - } - - labels = { - Environment = "Development" - } - name = "dev" - } -} - -resource "kubernetes_namespace" "tst" { - metadata { - annotations = { - name = "tst" - } - - labels = { - Environment = "Test" - } - name = "tst" - } -} - -resource "kubernetes_namespace" "staging" { - metadata { - annotations = { - name = "staging" - } - - labels = { - Environment = "Staging" - } - name = "staging" - } -} - -resource "kubernetes_namespace" "devops" { - metadata { - annotations = { - name = "devops" - } - - labels = { - Environment = "Devops" - } - name = "devops" - } -} \ No newline at end of file diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/tests/test-connection.yaml b/deploy/k8s/charts/o2bionics-webapp/templates/tests/test-connection.yaml deleted file mode 100644 index adbc1c79..00000000 --- a/deploy/k8s/charts/o2bionics-webapp/templates/tests/test-connection.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ include "o2bionics-webapp.fullname" . }}-test-connection" - labels: - {{- include "o2bionics-webapp.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "o2bionics-webapp.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/deploy/k8s/dns-zones.tf b/deploy/k8s/dns-zones.tf deleted file mode 100644 index 6d82f2c1..00000000 --- a/deploy/k8s/dns-zones.tf +++ /dev/null @@ -1,28 +0,0 @@ -# resource "azurerm_dns_zone" "primary" { -# name = "o2bus.com" -# resource_group_name = var.aks_group_name - -# tags = { -# "type_product" = "Saas" -# "product" = "O2NextGen Platform" -# } -# } - -# # resource "azurerm_dns_a_record" "o2bus_com" { -# # name = "www" -# # zone_name = azurerm_dns_zone.primary.name -# # resource_group_name = azurerm_dns_zone.primary.resource_group_name -# # ttl = 300 -# # records = ["10.0.180.17"] #load balancer ip -# # } - -# resource "azurerm_dns_zone" "second" { -# name = "prf-cent.com" -# resource_group_name = var.aks_group_name - -# tags = { -# "type" = "client" -# "type_product" = "Saas" -# "product" = "O2NextGen Platform" -# } -# } diff --git a/deploy/k8s/helm_release_o2bionics_webapp.tf b/deploy/k8s/helm_release_o2bionics_webapp.tf deleted file mode 100644 index 41d19c88..00000000 --- a/deploy/k8s/helm_release_o2bionics_webapp.tf +++ /dev/null @@ -1,12 +0,0 @@ -# resource "helm_release" "o2bionicswebappdev" { -# name = "o2bionics-webapp" -# repository = "./charts" -# namespace = "dev" -# chart = "o2bionics-webapp" -# } -# resource "helm_release" "o2bionicswebappprod" { -# name = "o2bionics-webapp" -# repository = "./charts" -# namespace = "prod" -# chart = "o2bionics-webapp" -# } diff --git a/deploy/k8s/helm_release_testapp.tf b/deploy/k8s/helm_release_testapp.tf deleted file mode 100644 index 1c89ba95..00000000 --- a/deploy/k8s/helm_release_testapp.tf +++ /dev/null @@ -1,11 +0,0 @@ -# resource "helm_release" "testapp" { -# name = "test-app" -# repository = "./charts" -# namespace = "dev" -# chart = "test-app" -# } - -# resource "helm_release" "example" { -# name = "redis" -# chart = "bitnami/redis" -# } diff --git a/deploy/k8s/k8s-cluster.tf b/deploy/k8s/k8s-cluster.tf deleted file mode 100644 index 79512e3c..00000000 --- a/deploy/k8s/k8s-cluster.tf +++ /dev/null @@ -1,27 +0,0 @@ -resource "azurerm_kubernetes_cluster" "k8s" { - name = var.aks_cluster_name - resource_group_name = var.aks_group_name - location = var.aks_group_location - dns_prefix = var.aks_dns_prefix - - default_node_pool { - name = "system" - node_count = var.aks_node_count - vm_size = var.aks_vm_size - type = "VirtualMachineScaleSets" - enable_auto_scaling = false - } - identity { - type = "SystemAssigned" - } - # network_profile { - # load_balancer_sku = "Standard" - # network_plugin = "kubenet" # azure (CNI) - # } - - tags = { - Environment = "Production" - Product = "O2NextGen Platform" - } -} - diff --git a/deploy/k8s/k8s_acr.tf b/deploy/k8s/k8s_acr.tf deleted file mode 100644 index 02c58fa1..00000000 --- a/deploy/k8s/k8s_acr.tf +++ /dev/null @@ -1,12 +0,0 @@ -resource "azurerm_role_assignment" "role_acrpull" { - scope = azurerm_container_registry.acr.id - role_definition_name = "AcrPull" - principal_id = azurerm_kubernetes_cluster.k8s.kubelet_identity.0.object_id -} -resource "azurerm_container_registry" "acr" { - name = "o2nextgen" - resource_group_name = var.aks_group_name - location = var.aks_group_location - sku = "Standard" - admin_enabled = false -} diff --git a/deploy/k8s/main.tf b/deploy/k8s/main.tf deleted file mode 100644 index 17dc7368..00000000 --- a/deploy/k8s/main.tf +++ /dev/null @@ -1,4 +0,0 @@ -resource "azurerm_resource_group" "rg" { - name = var.aks_group_name - location = var.aks_group_location -} diff --git a/deploy/k8s/monitoring.tf b/deploy/k8s/monitoring.tf deleted file mode 100644 index 603a4534..00000000 --- a/deploy/k8s/monitoring.tf +++ /dev/null @@ -1,82 +0,0 @@ - -# resource "helm_release" "pod_identity" { -# name = "pod-identity" -# repository = "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts" -# chart = "aad-pod-identity" -# namespace = "kube-system" -# } - -# https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx -# resource "helm_release" "nginx_ingress_controller" { -# name = "nginx-ingress-controller" -# repository = "https://kubernetes.github.io/ingress-nginx" -# chart = "ingress-nginx" -# version = "4.1.3" -# namespace = "ingress" -# create_namespace = "true" - -# set { -# name = "controller.service.type" -# value = "LoadBalancer" -# } -# set { -# name = "controller.autoscaling.enabled" -# value = "true" -# } -# set { -# name = "controller.autoscaling.minReplicas" -# value = "1" -# } -# set { -# name = "controller.autoscaling.maxReplicas" -# value = "2" -# } -# } - -# # https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack -# resource "helm_release" "prometheusstack" { -# name = "prometheus-stack" -# repository = "https://prometheus-community.github.io/helm-charts" -# chart = "kube-prometheus-stack" -# namespace = "monitoring" -# create_namespace = true - -# set { -# name = "grafana.ingress.enabled" -# value = "true" -# } -# set { -# name = "grafana.ingress.ingressClassName" -# value = "nginx" -# } -# set { -# name = "grafana.ingress.path" -# value = "/(.*)" # "/grafana2/?(.*)" -# } -# # annotations: -# # nginx.ingress.kubernetes.io/ssl-redirect: "false" -# # nginx.ingress.kubernetes.io/use-regex: "true" -# # nginx.ingress.kubernetes.io/rewrite-target: /$1 -# set { -# name = "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect" -# value = "false" -# type = "string" -# } -# set { -# name = "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex" -# value = "true" -# type = "string" -# } -# set { -# name = "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target" -# value = "/$1" -# } -# set { -# name = "grafana.adminUser" -# value = var.grafana_admin_user -# } -# set { -# name = "grafana.adminPassword" -# value = var.grafana_admin_password -# } -# } diff --git a/deploy/k8s/providers.tf b/deploy/k8s/providers.tf deleted file mode 100644 index 0522ba11..00000000 --- a/deploy/k8s/providers.tf +++ /dev/null @@ -1,36 +0,0 @@ -# Configure the Microsoft Azure Provider -provider "azurerm" { - features {} -} - -provider "kubernetes" { - host = azurerm_kubernetes_cluster.k8s.kube_config.0.host - client_certificate = base64decode(azurerm_kubernetes_cluster.k8s.kube_config.0.client_certificate) - client_key = base64decode(azurerm_kubernetes_cluster.k8s.kube_config.0.client_key) - cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.k8s.kube_config.0.cluster_ca_certificate) -} - -# We strongly recommend using the required_providers block to set the -# Azure Provider source and version being used -terraform { - required_providers { - azurerm = { - source = "hashicorp/azurerm" - version = "=3.0.0" - } - kubernetes = { - source = "kubernetes" - version = "=2.8.0" - } - helm = { - source = "hashicorp/helm" - version = ">= 2.5.1" - } - } -} -provider "helm" { - kubernetes { - config_path = "~/.kube/config" - } -} - diff --git a/deploy/k8s/release_external_dns.tf b/deploy/k8s/release_external_dns.tf deleted file mode 100644 index 5fcd36c9..00000000 --- a/deploy/k8s/release_external_dns.tf +++ /dev/null @@ -1,13 +0,0 @@ -# ########## -# # data sources -# ########################## -# data "azurerm_client_config" "current" {} - - -# resource "helm_release" "extdns" { -# name = "external-dns" -# repository = "https://charts.bitnami.com/bitnami" -# chart = "external-dns" -# namespace = "external-dns" -# create_namespace = true -# } diff --git a/deploy/k8s/terraform.tfvars b/deploy/k8s/terraform.tfvars deleted file mode 100644 index f8a334de..00000000 --- a/deploy/k8s/terraform.tfvars +++ /dev/null @@ -1,9 +0,0 @@ -aks_cluster_name = "o2nextgen-aks" -aks_group_name = "aks-prods" -aks_group_location = "WestUS3" -aks_dns_prefix = "o2ngaks" -aks_vm_size = "Standard_D2_v2" -aks_node_count = 1 - -grafana_admin_user = "grafana" -grafana_admin_password = "grafana-pass" \ No newline at end of file diff --git a/deploy/release-deploy/clouds/azure/terraform/delete-infastructure.sh b/deploy/release-deploy/clouds/azure/terraform/delete-infastructure.sh new file mode 100644 index 00000000..6384eac6 --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/delete-infastructure.sh @@ -0,0 +1,13 @@ + +# initialize terraform Azure modules +terraform init + +# delete the infra +terraform destroy -auto-approve + +# cleanup files +rm terraform.tfstate +rm terraform.tfstate.backup +rm tfplan +rm tfplan.json +rm -r .terraform/ \ No newline at end of file diff --git a/deploy/release-deploy/clouds/azure/terraform/deploy-commands.sh b/deploy/release-deploy/clouds/azure/terraform/deploy-commands.sh new file mode 100644 index 00000000..8cc32aa1 --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/deploy-commands.sh @@ -0,0 +1,45 @@ +# make sure terraform CLI is installed +terraform + +# format the tf files +terraform fmt + +# initialize terraform Azure modules +terraform init + +# validate the template +terraform validate + +# plan and save the infra changes into tfplan file +terraform plan -out tfplan + +# show the tfplan file +terraform show -json tfplan +terraform show -json tfplan >> tfplan.json + +# Format tfplan.json file +terraform show -json tfplan | jq '.' > tfplan.json + +# show only the changes +cat tfplan.json | jq -r '(.resource_changes[] | [.change.actions[], .type, .change.after.name]) | @tsv' +cat tfplan.json | jq '[.resource_changes[] | {type: .type, name: .change.after.name, actions: .change.actions[]}]' + +# apply the infra changes +terraform apply tfplan + + +read -t 240 -p "Press [Enter] key to start remove all resources..." + + +# initialize terraform Azure modules +terraform init + +# delete the infra +terraform destroy -auto-approve + +# cleanup files +rm terraform.tfstate +rm terraform.tfstate.backup +rm tfplan +rm tfplan.json +rm -r .terraform/ \ No newline at end of file diff --git a/deploy/release-deploy/clouds/azure/terraform/deploy-infastructure.sh b/deploy/release-deploy/clouds/azure/terraform/deploy-infastructure.sh new file mode 100644 index 00000000..3a4665f6 --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/deploy-infastructure.sh @@ -0,0 +1,56 @@ +# make sure terraform CLI is installed +terraform + +# format the tf files +terraform fmt + +# initialize terraform Azure modules +terraform init + +# validate the template +terraform validate + +# plan and save the infra changes into tfplan file +terraform plan -out tfplan + +# show the tfplan file +terraform show -json tfplan +terraform show -json tfplan >> tfplan.json + +# Format tfplan.json file +terraform show -json tfplan | jq '.' > tfplan.json + +# show only the changes +cat tfplan.json | jq -r '(.resource_changes[] | [.change.actions[], .type, .change.after.name]) | @tsv' +cat tfplan.json | jq '[.resource_changes[] | {type: .type, name: .change.after.name, actions: .change.actions[]}]' + +# apply the infra changes +terraform apply tfplan + +# connect to AKS cluster +az aks get-credentials --name o2nextgen-aks --resource-group o2bionics-products --overwrite-existing + +# cluster authN & authZ is needed, so this won't work +kubectl get nodes + +# connect with kubelogin and Azure CLI identity +kubelogin convert-kubeconfig -l azurecli + +# now this works after auth using kubelogin +kubectl get nodes +# NAME STATUS ROLES AGE VERSION +# aks-systempool-15239186-vmss000000 Ready agent 7m30s v1.23.5 +# aks-systempool-15239186-vmss000001 Ready agent 7m40s v1.23.5 + +# now lets check if Terraform succeeded to create the namespace +kubectl get ns +# NAME STATUS AGE +# apps-namespace Active 6m48s +# default Active 8m55s +# kube-node-lease Active 8m58s +# kube-public Active 8m58s +# kube-system Active 8m58s + +kubectl get deploy -A +kubectl get all --all-namespaces +sh ./tls-issuer.sh \ No newline at end of file diff --git a/deploy/release-deploy/clouds/azure/terraform/main.tf b/deploy/release-deploy/clouds/azure/terraform/main.tf new file mode 100644 index 00000000..187f2b68 --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/main.tf @@ -0,0 +1,635 @@ +# Configure the Microsoft Azure Provider +provider "azurerm" { + features {} +} + +provider "helm" { + kubernetes { + host = azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.host + client_certificate = base64decode(azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.client_certificate) + client_key = base64decode(azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.client_key) + cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.cluster_ca_certificate) + } +} + +provider "kubernetes" { + host = azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.host + client_certificate = base64decode(azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.client_certificate) + client_key = base64decode(azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.client_key) + cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.o2nextgen-aks.kube_config.0.cluster_ca_certificate) +} + +# # Configure the Azure Active Directory Provider +# provider "azuread" { +# tenant_id = "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" +# } +# provider "azuread" { +# # NOTE: Environment Variables can also be used for Service Principal authentication +# # Terraform also supports authenticating via the Azure CLI too. +# # see here for more info: http://terraform.io/docs/providers/azuread/index.html + +# # subscription_id = "..." +# # client_id = "..." +# # client_secret = "..." +# # tenant_id = "..." +# } +# Configure the Azure Active Directory Provider +provider "azuread" { + # subscription_id="f1404c6e-2728-40ae-9cd2-fee75bde4c04" + tenant_id = "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" +} + +provider "tls" {} +# We strongly recommend using the required_providers block to set the +# Azure Provider source and version being used +terraform { + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = ">= 3.0.0" + } + kubernetes = { + source = "kubernetes" + version = "=2.8.0" + } + helm = { + source = "hashicorp/helm" + version = ">= 2.5.1" + } + azuread = { + source = "hashicorp/azuread" + version = "~> 2.15.0" + } + random = { + source = "hashicorp/random" + } + time = { + source = "hashicorp/time" + } + } +} + + +# Retrieve domain information +data "azuread_domains" "example" { + only_initial = true +} + +# ========================================== RESOURCE ========================================== +resource "azurerm_resource_group" "aks-resource-group" { + name = var.k8s_resource_group + location = var.k8s_location +} + +# ========================================== K8S ========================================== +resource "azurerm_kubernetes_cluster" "o2nextgen-aks" { + name = var.k8s_cluster_name + resource_group_name = var.k8s_resource_group + location = var.k8s_location + dns_prefix = var.k8s_dns_prefix + + default_node_pool { + name = "system" + node_count = var.k8s_node_count + vm_size = var.k8s_vm_size + type = "VirtualMachineScaleSets" + enable_auto_scaling = false + } + identity { + type = "SystemAssigned" + } + azure_policy_enabled = true + # # network_profile { + # load_balancer_sku = "Standard" + # network_plugin = "kubenet" # azure (CNI) + # } + + tags = { + Environment = "Production" + Product = "O2NextGen Platform" + } + + depends_on = [ + azurerm_resource_group.aks-resource-group + ] +} + + +# ========================================== ACR ========================================== +# ========================================================================================= +resource "azurerm_role_assignment" "role-acrpull" { + scope = azurerm_container_registry.o2nextgen-aks-acr.id + role_definition_name = "AcrPull" + principal_id = azurerm_kubernetes_cluster.o2nextgen-aks.kubelet_identity.0.object_id + depends_on = [ + azurerm_container_registry.o2nextgen-aks-acr + ] +} +resource "azurerm_container_registry" "o2nextgen-aks-acr" { + name = "o2nextgen" + resource_group_name = var.k8s_resource_group + location = var.k8s_location + sku = "Standard" + admin_enabled = false + depends_on = [ + azurerm_kubernetes_cluster.o2nextgen-aks + ] +} + +# ============================= AKS PREP - DNS ZONE in AKS ================================ +# ========================================================================================= +resource "azurerm_dns_zone" "primary-dns-zone" { + depends_on = [ + azurerm_kubernetes_cluster.o2nextgen-aks + ] + name = "o2bus.com" + resource_group_name = var.k8s_resource_group + + tags = { + "type_product" = "Saas" + "product" = "O2NextGen Platform" + } +} +# resource "azurerm_dns_zone" "second-dns-zone" { +# depends_on = [ +# azurerm_kubernetes_cluster.o2nextgen-aks +# ] +# name = "prf-cent.com" +# resource_group_name = var.k8s_resource_group + +# tags = { +# "type" = "client" +# "type_product" = "Saas" +# "product" = "O2NextGen Platform" +# } +# } + + +# resource "azuread_application" "example" { +# display_name = "sp-external-dns" +# owners = [data.azuread_client_config.current.object_id] +# } +# resource "azuread_service_principal" "sp-external-dns" { +# principal_id = azuread_service_principal.sp-external-dns.template_id +# } + +# current subscription +data "azurerm_subscription" "current" {} + +# # current client +data "azuread_client_config" "current" {} + +output "current_subscription_display_name" { + value = data.azurerm_subscription.current.display_name +} + +output "object_id" { + value = data.azuread_client_config.current.object_id +} + +# Create an application +resource "azuread_application" "example" { + depends_on = [ + azurerm_dns_zone.primary-dns-zone + ] + display_name = "external-dns" + owners = [data.azuread_client_config.current.object_id] +} + +# # Create a service principal +# resource "azuread_service_principal" "example" { +# application_id = azuread_application.example.application_id +# owners = [data.azuread_client_config.current.object_id] +# } + +# Create Service Principal linked to the Application +resource "azuread_service_principal" "current" { + application_id = azuread_application.example.application_id + app_role_assignment_required = false + owners = [data.azuread_client_config.current.object_id] +} + +# # Create role assignment for Service Principal +# resource "azurerm_role_assignment" "contributor" { +# scope = data.azurerm_subscription.current.id +# role_definition_name = "Contributor" +# principal_id = azuread_service_principal.current.id +# } + +# # # Generate random string to be used for Service Principal password +# resource "random_string" "password" { +# length = 32 +# special = true +# } +resource "azuread_application_password" "current" { + display_name = "rbac" + application_object_id = azuread_application.example.object_id +} +# resource "time_rotating" "example" { +# rotation_days = 7 +# } +# # Create Service Principal password +# resource "azuread_service_principal_password" "main" { +# service_principal_id = azuread_service_principal.current.object_id +# rotate_when_changed = { +# rotation = time_rotating.example.id +# } +# } + +# Create role assignment for service principal +# https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/role_assignment +resource "azurerm_role_assignment" "current" { + scope = data.azurerm_subscription.current.id + role_definition_name = "Contributor" + + # When assigning to a SP, use the object_id, not the appId + # see: https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-cli + principal_id = azuread_service_principal.current.object_id +} + +# Create role assignment for service principal +resource "azurerm_role_assignment" "main" { + scope = azurerm_dns_zone.primary-dns-zone.id + role_definition_name = "DNS Zone Contributor" + principal_id = azuread_service_principal.current.object_id +} + +# Create role assignment for service principal +resource "azurerm_role_assignment" "reader" { + scope = azurerm_resource_group.aks-resource-group.id + role_definition_name = "Reader" + principal_id = azuread_service_principal.current.object_id +} + +output "display_name" { + value = azuread_service_principal.current.display_name +} + +output "client_id" { + value = azuread_application.example.application_id +} + +output "client_secret" { + value = azuread_application_password.current.value + sensitive = true +} + + +# # Generate a private key +# resource "tls_private_key" "example" { +# algorithm = "RSA" +# rsa_bits = 2048 +# } + +# # Generate a self signed certificate +# resource "tls_self_signed_cert" "example" { +# private_key_pem = tls_private_key.example.private_key_pem + +# subject { +# common_name = azuread_application.example.display_name +# organization = "O2 Bionics LLC" +# } + +# allowed_uses = ["client_auth", "server_auth"] +# validity_period_hours = 8760 +# } + +# # Create Application certificate (client certificate) +# resource "azuread_application_certificate" "example" { +# application_object_id = azuread_application.example.object_id +# type = "AsymmetricX509Cert" +# end_date_relative = "4320h" # expire in 6 months +# value = tls_self_signed_cert.example.cert_pem +# } + +# # Create Application password (client secret) +# resource "azuread_application_password" "example" { +# application_object_id = azuread_application.example.object_id +# end_date_relative = "4320h" # expire in 6 months +# } +# output "account_id" { +# value = data.azurerm_client_config.current.service_principal_application_id +# } + +# resource "azuread_application" "example" { +# display_name = "External-DNS-SP" +# owners = [data.azurerm_client_config.current.object_id] +# } + +# resource "azuread_service_principal" "example" { +# application_id = azuread_application.example.application_id +# app_role_assignment_required = false +# owners = [data.azurerm_client_config.current.object_id] +# } + +# data "azuread_application_template" "example" { +# display_name = "External-DNS-SP" +# } + +# resource "azuread_application" "example" { +# display_name = "sp-external-dns" +# template_id = data.azuread_application_template.example.template_id +# } + +# resource "azuread_service_principal" "example" { +# application_id = azuread_application.example.application_id +# use_existing = true +# } + +# resource "azurerm_role_assignment" "role-secret-officer" { +# role_definition_name = "Key Vault Secrets Officer" +# principal_id = data.azurerm_client_config.current.object_id +# scope = azurerm_key_vault.keyvault.id +# } +# ============================= MONITORING TOOLS ========================================== +# ========================================================================================= +resource "helm_release" "aad-pod-identity" { + depends_on = [ + azurerm_resource_group.aks-resource-group, + azurerm_kubernetes_cluster.o2nextgen-aks, + azurerm_container_registry.o2nextgen-aks-acr + ] + name = "aad-pod-identity" + repository = "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts" + chart = "aad-pod-identity" + namespace = "kube-system" +} + +# https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx +resource "helm_release" "nginx-ingress-controller" { + name = "nginx-ingress-controller" + repository = "https://kubernetes.github.io/ingress-nginx" + chart = "ingress-nginx" + version = "4.1.3" + namespace = "ingress" + create_namespace = "true" + + set { + name = "controller.service.type" + value = "LoadBalancer" + } + set { + name = "controller.autoscaling.enabled" + value = "true" + } + set { + name = "controller.autoscaling.minReplicas" + value = "1" + } + set { + name = "controller.autoscaling.maxReplicas" + value = "1" + } +} + +# https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack +resource "helm_release" "prometheus-stack" { + depends_on = [ + helm_release.nginx-ingress-controller + ] + name = "prometheus-stack" + repository = "https://prometheus-community.github.io/helm-charts" + chart = "kube-prometheus-stack" + namespace = "monitoring" + create_namespace = true + + set { + name = "grafana.ingress.enabled" + value = "true" + } + set { + name = "grafana.ingress.ingressClassName" + value = "nginx" + } + set { + name = "grafana.ingress.path" + value = "/(.*)" # "/grafana2/?(.*)" + } + # annotations: + # nginx.ingress.kubernetes.io/ssl-redirect: "false" + # nginx.ingress.kubernetes.io/use-regex: "true" + # nginx.ingress.kubernetes.io/rewrite-target: /$1 + set { + name = "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect" + value = "false" + type = "string" + } + set { + name = "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex" + value = "true" + type = "string" + } + set { + name = "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target" + value = "/$1" + } + set { + name = "grafana.adminUser" + value = var.grafana_admin_user + } + set { + name = "grafana.adminPassword" + value = var.grafana_admin_password + } +} +locals { + dnsValues = <> tfplan.json + +# Format tfplan.json file +terraform show -json tfplan | jq '.' > tfplan.json + +# show only the changes +cat tfplan.json | jq -r '(.resource_changes[] | [.change.actions[], .type, .change.after.name]) | @tsv' +cat tfplan.json | jq '[.resource_changes[] | {type: .type, name: .change.after.name, actions: .change.actions[]}]' + +# apply the infra changes +terraform apply tfplan + diff --git a/deploy/release-deploy/clouds/azure/terraform/terraform.tfstate b/deploy/release-deploy/clouds/azure/terraform/terraform.tfstate new file mode 100644 index 00000000..8dd4ccb8 --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/terraform.tfstate @@ -0,0 +1,1542 @@ +{ + "version": 4, + "terraform_version": "1.2.9", + "serial": 58, + "lineage": "63489a0a-daf7-a393-1b70-f5d769dd6fa6", + "outputs": { + "client_id": { + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "type": "string" + }, + "client_secret": { + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb", + "type": "string", + "sensitive": true + }, + "current_subscription_display_name": { + "value": "paid-subscription", + "type": "string" + }, + "display_name": { + "value": "External-DNS-SP", + "type": "string" + }, + "object_id": { + "value": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "type": "string" + } + }, + "resources": [ + { + "mode": "data", + "type": "azuread_client_config", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "client_id": "04b07795-8ddb-461a-bbee-02f9e1bf7b46", + "id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6-04b07795-8ddb-461a-bbee-02f9e1bf7b46-ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "object_id": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "azuread_domains", + "name": "example", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "admin_managed": null, + "domains": [ + { + "admin_managed": true, + "authentication_type": "Managed", + "default": true, + "domain_name": "o2bionicshotmail.onmicrosoft.com", + "initial": true, + "root": true, + "supported_services": [ + "Email", + "OfficeCommunicationsOnline" + ], + "verified": true + } + ], + "id": "domains#f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6#ZFYJzSzr82ymyVfK_gF6i8a-KPM=", + "include_unverified": null, + "only_default": null, + "only_initial": true, + "only_root": null, + "supports_services": null, + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "azurerm_subscription", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "display_name": "paid-subscription", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "location_placement_id": "Public_2014-09-01", + "quota_id": "PayAsYouGo_2014-09-01", + "spending_limit": "Off", + "state": "Enabled", + "subscription_id": "f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "tags": {}, + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "azuread_application", + "name": "example", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "api": [ + { + "known_client_applications": [], + "mapped_claims_enabled": false, + "oauth2_permission_scope": [], + "requested_access_token_version": 1 + } + ], + "app_role": [], + "app_role_ids": {}, + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "device_only_auth_enabled": false, + "disabled_by_microsoft": "\u003cnil\u003e", + "display_name": "External-DNS-SP", + "fallback_public_client_enabled": false, + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "group_membership_claims": [], + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "identifier_uris": [], + "logo_image": "", + "logo_url": "", + "marketing_url": "", + "oauth2_permission_scope_ids": {}, + "oauth2_post_response_required": false, + "object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "prevent_duplicate_names": false, + "privacy_statement_url": "", + "public_client": [ + { + "redirect_uris": [] + } + ], + "publisher_domain": "o2bionicshotmail.onmicrosoft.com", + "required_resource_access": [], + "sign_in_audience": "AzureADMyOrg", + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "support_url": "", + "tags": [], + "template_id": "", + "terms_of_service_url": "", + "timeouts": null, + "web": [ + { + "homepage_url": "", + "implicit_grant": [ + { + "access_token_issuance_enabled": false, + "id_token_issuance_enabled": false + } + ], + "logout_url": "", + "redirect_uris": [] + } + ] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJyZWFkIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6NjAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azuread_application_password", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "application_object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "display_name": null, + "end_date": "2024-09-27T23:44:40Z", + "end_date_relative": null, + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9/password/6c924c19-e789-4549-a35a-b09cfc673d66", + "key_id": "6c924c19-e789-4549-a35a-b09cfc673d66", + "rotate_when_changed": null, + "start_date": "2022-09-27T23:44:40Z", + "timeouts": null, + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo5MDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJyZWFkIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6MzAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "azuread_application.example", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azuread_service_principal", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_enabled": true, + "alternative_names": [], + "app_role_assignment_required": false, + "app_role_ids": {}, + "app_roles": [], + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "application_tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "description": "", + "display_name": "External-DNS-SP", + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "features": [ + { + "custom_single_sign_on_app": false, + "enterprise_application": false, + "gallery_application": false, + "visible_to_users": true + } + ], + "homepage_url": "", + "id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "login_url": "", + "logout_url": "", + "notes": "", + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "object_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "preferred_single_sign_on_mode": "", + "redirect_uris": [], + "saml_metadata_url": "", + "saml_single_sign_on": [ + { + "relay_state": "" + } + ], + "service_principal_names": [], + "sign_in_audience": "AzureADMyOrg", + "tags": [], + "timeouts": null, + "type": "Application", + "use_existing": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJyZWFkIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6NjAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_container_registry", + "name": "o2nextgen-aks-acr", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "admin_enabled": false, + "admin_password": "", + "admin_username": "", + "anonymous_pull_enabled": false, + "data_endpoint_enabled": false, + "encryption": [ + { + "enabled": false, + "identity_client_id": "", + "key_vault_key_id": "" + } + ], + "export_policy_enabled": true, + "georeplications": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "identity": [], + "location": "westus3", + "login_server": "o2nextgen.azurecr.io", + "name": "o2nextgen", + "network_rule_bypass_option": "AzureServices", + "network_rule_set": [], + "public_network_access_enabled": true, + "quarantine_policy_enabled": false, + "resource_group_name": "o2bionics-products", + "retention_policy": [ + { + "days": 7, + "enabled": false + } + ], + "sku": "Standard", + "tags": {}, + "timeouts": null, + "trust_policy": [ + { + "enabled": false + } + ], + "zone_redundancy_enabled": false + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIyIn0=", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_dns_zone", + "name": "primary-dns-zone", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "max_number_of_record_sets": 10000, + "name": "o2bus.com", + "name_servers": [ + "ns1-32.azure-dns.com.", + "ns2-32.azure-dns.net.", + "ns3-32.azure-dns.org.", + "ns4-32.azure-dns.info." + ], + "number_of_record_sets": 4, + "resource_group_name": "o2bionics-products", + "soa_record": [ + { + "email": "azuredns-hostmaster.microsoft.com", + "expire_time": 2419200, + "fqdn": "o2bus.com.", + "host_name": "ns1-32.azure-dns.com.", + "minimum_ttl": 300, + "refresh_time": 3600, + "retry_time": 300, + "serial_number": 1, + "tags": {}, + "ttl": 3600 + } + ], + "tags": { + "product": "O2NextGen Platform", + "type_product": "Saas" + }, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_kubernetes_cluster", + "name": "o2nextgen-aks", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "automatic_channel_upgrade": "", + "azure_active_directory_role_based_access_control": [], + "azure_policy_enabled": false, + "default_node_pool": [ + { + "capacity_reservation_group_id": "", + "enable_auto_scaling": false, + "enable_host_encryption": false, + "enable_node_public_ip": false, + "fips_enabled": false, + "host_group_id": "", + "kubelet_config": [], + "kubelet_disk_type": "OS", + "linux_os_config": [], + "max_count": 0, + "max_pods": 110, + "min_count": 0, + "name": "system", + "node_count": 1, + "node_labels": {}, + "node_public_ip_prefix_id": "", + "node_taints": [], + "only_critical_addons_enabled": false, + "orchestrator_version": "", + "os_disk_size_gb": 128, + "os_disk_type": "Managed", + "os_sku": "Ubuntu", + "pod_subnet_id": "", + "proximity_placement_group_id": "", + "tags": {}, + "type": "VirtualMachineScaleSets", + "ultra_ssd_enabled": false, + "upgrade_settings": [], + "vm_size": "Standard_D2_v2", + "vnet_subnet_id": "", + "zones": [] + } + ], + "disk_encryption_set_id": "", + "dns_prefix": "aks", + "dns_prefix_private_cluster": "", + "edge_zone": "", + "enable_pod_security_policy": false, + "fqdn": "aks-62baec49.hcp.westus3.azmk8s.io", + "http_application_routing_enabled": false, + "http_application_routing_zone_name": "", + "http_proxy_config": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerService/managedClusters/o2nextgen-aks", + "identity": [ + { + "identity_ids": [], + "principal_id": "673d7ee5-59e9-4177-893a-154bf2411e58", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "type": "SystemAssigned" + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_admin_config_raw": "", + "kube_config": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "https://aks-62baec49.hcp.westus3.azmk8s.io:443", + "password": "85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf", + "username": "clusterUser_o2bionics-products_o2nextgen-aks" + } + ], + "kube_config_raw": "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://aks-62baec49.hcp.westus3.azmk8s.io:443\n name: o2nextgen-aks\ncontexts:\n- context:\n cluster: o2nextgen-aks\n user: clusterUser_o2bionics-products_o2nextgen-aks\n name: o2nextgen-aks\ncurrent-context: o2nextgen-aks\nkind: Config\npreferences: {}\nusers:\n- name: clusterUser_o2bionics-products_o2nextgen-aks\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K\n token: 85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf\n", + "kubelet_identity": [ + { + "client_id": "a7b1e297-2eb0-4fc0-acea-0b7dd9ac7ec6", + "object_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "user_assigned_identity_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/o2nextgen-aks-agentpool" + } + ], + "kubernetes_version": "1.23.8", + "linux_profile": [], + "local_account_disabled": false, + "location": "westus3", + "maintenance_window": [], + "microsoft_defender": [], + "name": "o2nextgen-aks", + "network_profile": [ + { + "dns_service_ip": "10.0.0.10", + "docker_bridge_cidr": "172.17.0.1/16", + "ip_versions": [ + "IPv4" + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.Network/publicIPAddresses/a671c948-31c9-41d8-9f2d-73edf7531002" + ], + "idle_timeout_in_minutes": 0, + "managed_outbound_ip_count": 1, + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [], + "outbound_ports_allocated": 0 + } + ], + "load_balancer_sku": "standard", + "nat_gateway_profile": [], + "network_mode": "", + "network_plugin": "kubenet", + "network_policy": "", + "outbound_type": "loadBalancer", + "pod_cidr": "10.244.0.0/16", + "service_cidr": "10.0.0.0/16" + } + ], + "node_resource_group": "MC_o2bionics-products_o2nextgen-aks_westus3", + "oidc_issuer_enabled": false, + "oidc_issuer_url": "", + "oms_agent": [], + "open_service_mesh_enabled": false, + "portal_fqdn": "aks-62baec49.portal.hcp.westus3.azmk8s.io", + "private_cluster_enabled": false, + "private_cluster_public_fqdn_enabled": false, + "private_dns_zone_id": "", + "private_fqdn": "", + "public_network_access_enabled": true, + "resource_group_name": "o2bionics-products", + "role_based_access_control_enabled": true, + "run_command_enabled": true, + "service_principal": [], + "sku_tier": "Free", + "tags": { + "Environment": "Production", + "Product": "O2NextGen Platform" + }, + "timeouts": null, + "windows_profile": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo1NDAwMDAwMDAwMDAwLCJkZWxldGUiOjU0MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjo1NDAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIyIn0=", + "dependencies": [ + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_resource_group", + "name": "aks-resource-group", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "location": "westus3", + "name": "o2bionics-products", + "tags": {}, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo1NDAwMDAwMDAwMDAwLCJkZWxldGUiOjU0MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjo1NDAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleAssignments/a964cad9-e2af-c584-abeb-260ba07b73d4", + "name": "a964cad9-e2af-c584-abeb-260ba07b73d4", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "role_definition_name": "Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current", + "data.azurerm_subscription.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com/providers/Microsoft.Authorization/roleAssignments/1e321e91-e008-911f-1259-daaa91498ded", + "name": "1e321e91-e008-911f-1259-daaa91498ded", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314", + "role_definition_name": "DNS Zone Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "reader", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Authorization/roleAssignments/2790a8c2-19c3-bd19-676e-be62e078963a", + "name": "2790a8c2-19c3-bd19-676e-be62e078963a", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", + "role_definition_name": "Reader", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "role-acrpull", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen/providers/Microsoft.Authorization/roleAssignments/88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "name": "88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "principal_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d", + "role_definition_name": "AcrPull", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azurerm_container_registry.o2nextgen-aks-acr", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "aad-pod-identity", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "aad-pod-identity", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "aad-pod-identity", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.8.12", + "chart": "aad-pod-identity", + "name": "aad-pod-identity", + "namespace": "kube-system", + "revision": 1, + "values": "null", + "version": "4.1.13" + } + ], + "name": "aad-pod-identity", + "namespace": "kube-system", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.13", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_container_registry.o2nextgen-aks-acr", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "cert-manager", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "cert-manager", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.6.1", + "chart": "cert-manager", + "name": "cert-manager", + "namespace": "cert-manager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.6.1" + } + ], + "name": "cert-manager", + "namespace": "cert-manager", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.6.1", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "external-dns", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "external-dns", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "external-dns", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.12.2", + "chart": "external-dns", + "name": "external-dns", + "namespace": "external-dns", + "revision": 1, + "values": "{\"azure\":{\"aadClientId\":\"4acf4b9b-9507-44ae-83ff-43a8b0a2d45e\",\"aadClientSecret\":\"xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb\",\"resourceGroup\":\"o2bionics-products\",\"subscriptionId\":\"/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04\",\"tenantId\":\"f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6\"},\"logLevel\":\"debug\",\"policy\":\"sync\",\"provider\":\"azure\",\"txtOwnerId\":\"o2nextgen-aks\"}", + "version": "6.10.0" + } + ], + "name": "external-dns", + "namespace": "external-dns", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.bitnami.com/bitnami", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "azure.aadClientId", + "type": "", + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e" + }, + { + "name": "azure.aadClientSecret", + "type": "", + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + { + "name": "azure.resourceGroup", + "type": "", + "value": "o2bionics-products" + }, + { + "name": "azure.subscriptionId", + "type": "", + "value": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04" + }, + { + "name": "azure.tenantId", + "type": "", + "value": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" + }, + { + "name": "logLevel", + "type": "", + "value": "debug" + }, + { + "name": "policy", + "type": "", + "value": "sync" + }, + { + "name": "provider", + "type": "", + "value": "azure" + }, + { + "name": "txtOwnerId", + "type": "", + "value": "o2nextgen-aks" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "6.10.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "set" + } + ] + ], + "private": "bnVsbA==", + "dependencies": [ + "azuread_application.example", + "azuread_application_password.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current", + "data.azurerm_subscription.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "nginx-ingress-controller", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "ingress-nginx", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "nginx-ingress-controller", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.2.1", + "chart": "ingress-nginx", + "name": "nginx-ingress-controller", + "namespace": "ingress", + "revision": 1, + "values": "{\"controller\":{\"autoscaling\":{\"enabled\":true,\"maxReplicas\":2,\"minReplicas\":1},\"service\":{\"type\":\"LoadBalancer\"}}}", + "version": "4.1.3" + } + ], + "name": "nginx-ingress-controller", + "namespace": "ingress", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://kubernetes.github.io/ingress-nginx", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "controller.autoscaling.enabled", + "type": "", + "value": "true" + }, + { + "name": "controller.autoscaling.maxReplicas", + "type": "", + "value": "2" + }, + { + "name": "controller.autoscaling.minReplicas", + "type": "", + "value": "1" + }, + { + "name": "controller.service.type", + "type": "", + "value": "LoadBalancer" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.3", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "o2bus-webapp", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "o2bus-webapp", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "o2bus-webapp", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.16.0", + "chart": "o2bus-webapp", + "name": "o2bus-webapp", + "namespace": "apps-prod", + "revision": 1, + "values": "{}", + "version": "0.1.0" + } + ], + "name": "o2bus-webapp", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "o2nextgen-auth", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "o2nextgen-auth", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "o2nextgen-auth", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.16.0", + "chart": "o2nextgen-auth", + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "revision": 1, + "values": "null", + "version": "0.1.0" + } + ], + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "prometheus-stack", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "kube-prometheus-stack", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "prometheus-stack", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.59.1", + "chart": "kube-prometheus-stack", + "name": "prometheus-stack", + "namespace": "monitoring", + "revision": 1, + "values": "{\"grafana\":{\"adminPassword\":\"grafana-pass\",\"adminUser\":\"grafana\",\"ingress\":{\"annotations\":{\"nginx.ingress.kubernetes.io/rewrite-target\":\"/$1\",\"nginx.ingress.kubernetes.io/ssl-redirect\":\"false\",\"nginx.ingress.kubernetes.io/use-regex\":\"true\"},\"enabled\":true,\"ingressClassName\":\"nginx\",\"path\":\"/(.*)\"}}}", + "version": "40.1.2" + } + ], + "name": "prometheus-stack", + "namespace": "monitoring", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://prometheus-community.github.io/helm-charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "grafana.adminPassword", + "type": "", + "value": "grafana-pass" + }, + { + "name": "grafana.adminUser", + "type": "", + "value": "grafana" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target", + "type": "", + "value": "/$1" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect", + "type": "string", + "value": "false" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex", + "type": "string", + "value": "true" + }, + { + "name": "grafana.ingress.enabled", + "type": "", + "value": "true" + }, + { + "name": "grafana.ingress.ingressClassName", + "type": "", + "value": "nginx" + }, + { + "name": "grafana.ingress.path", + "type": "", + "value": "/(.*)" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "40.1.2", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "helm_release.nginx-ingress-controller" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "dev", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-dev", + "metadata": [ + { + "annotations": { + "name": "apps-dev" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Development" + }, + "name": "apps-dev", + "resource_version": "1447", + "uid": "e7d1d0f0-539d-49f0-9ba1-f7a187586e94" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "devops", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-devops", + "metadata": [ + { + "annotations": { + "name": "apps-devops" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Devops" + }, + "name": "apps-devops", + "resource_version": "1444", + "uid": "251115c5-d26c-4bd7-8af9-99c93da74b5a" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "prod", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-prod", + "metadata": [ + { + "annotations": { + "name": "apps-prod" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Production" + }, + "name": "apps-prod", + "resource_version": "1445", + "uid": "e76706f9-6aa6-405f-8c72-7afdfb423c05" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "staging", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-staging", + "metadata": [ + { + "annotations": { + "name": "apps-staging" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Staging" + }, + "name": "apps-staging", + "resource_version": "1443", + "uid": "d5be15f9-8924-4415-9d7c-05b85a649510" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "tst", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-tst", + "metadata": [ + { + "annotations": { + "name": "apps-tst" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Test" + }, + "name": "apps-tst", + "resource_version": "1446", + "uid": "8001ed90-da14-41c5-a51b-6fe1464bc1a3" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + } + ] +} diff --git a/deploy/release-deploy/clouds/azure/terraform/terraform.tfstate.backup b/deploy/release-deploy/clouds/azure/terraform/terraform.tfstate.backup new file mode 100644 index 00000000..59582a36 --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/terraform.tfstate.backup @@ -0,0 +1,1472 @@ +{ + "version": 4, + "terraform_version": "1.2.9", + "serial": 56, + "lineage": "63489a0a-daf7-a393-1b70-f5d769dd6fa6", + "outputs": { + "client_id": { + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "type": "string" + }, + "client_secret": { + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb", + "type": "string", + "sensitive": true + }, + "current_subscription_display_name": { + "value": "paid-subscription", + "type": "string" + }, + "display_name": { + "value": "External-DNS-SP", + "type": "string" + }, + "object_id": { + "value": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "type": "string" + } + }, + "resources": [ + { + "mode": "data", + "type": "azuread_client_config", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "client_id": "04b07795-8ddb-461a-bbee-02f9e1bf7b46", + "id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6-04b07795-8ddb-461a-bbee-02f9e1bf7b46-ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "object_id": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "azuread_domains", + "name": "example", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "admin_managed": null, + "domains": [ + { + "admin_managed": true, + "authentication_type": "Managed", + "default": true, + "domain_name": "o2bionicshotmail.onmicrosoft.com", + "initial": true, + "root": true, + "supported_services": [ + "Email", + "OfficeCommunicationsOnline" + ], + "verified": true + } + ], + "id": "domains#f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6#ZFYJzSzr82ymyVfK_gF6i8a-KPM=", + "include_unverified": null, + "only_default": null, + "only_initial": true, + "only_root": null, + "supports_services": null, + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "azurerm_subscription", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "display_name": "paid-subscription", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "location_placement_id": "Public_2014-09-01", + "quota_id": "PayAsYouGo_2014-09-01", + "spending_limit": "Off", + "state": "Enabled", + "subscription_id": "f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "tags": {}, + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "azuread_application", + "name": "example", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "api": [ + { + "known_client_applications": [], + "mapped_claims_enabled": false, + "oauth2_permission_scope": [], + "requested_access_token_version": 1 + } + ], + "app_role": [], + "app_role_ids": {}, + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "device_only_auth_enabled": false, + "disabled_by_microsoft": "\u003cnil\u003e", + "display_name": "External-DNS-SP", + "fallback_public_client_enabled": false, + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "group_membership_claims": [], + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "identifier_uris": [], + "logo_image": "", + "logo_url": "", + "marketing_url": "", + "oauth2_permission_scope_ids": {}, + "oauth2_post_response_required": false, + "object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "prevent_duplicate_names": false, + "privacy_statement_url": "", + "public_client": [ + { + "redirect_uris": [] + } + ], + "publisher_domain": "o2bionicshotmail.onmicrosoft.com", + "required_resource_access": [], + "sign_in_audience": "AzureADMyOrg", + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "support_url": "", + "tags": [], + "template_id": "", + "terms_of_service_url": "", + "timeouts": null, + "web": [ + { + "homepage_url": "", + "implicit_grant": [ + { + "access_token_issuance_enabled": false, + "id_token_issuance_enabled": false + } + ], + "logout_url": "", + "redirect_uris": [] + } + ] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJyZWFkIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6NjAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azuread_application_password", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "application_object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "display_name": null, + "end_date": "2024-09-27T23:44:40Z", + "end_date_relative": null, + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9/password/6c924c19-e789-4549-a35a-b09cfc673d66", + "key_id": "6c924c19-e789-4549-a35a-b09cfc673d66", + "rotate_when_changed": null, + "start_date": "2022-09-27T23:44:40Z", + "timeouts": null, + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo5MDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJyZWFkIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6MzAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "azuread_application.example", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azuread_service_principal", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azuread\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_enabled": true, + "alternative_names": [], + "app_role_assignment_required": false, + "app_role_ids": {}, + "app_roles": [], + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "application_tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "description": "", + "display_name": "External-DNS-SP", + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "features": [ + { + "custom_single_sign_on_app": false, + "enterprise_application": false, + "gallery_application": false, + "visible_to_users": true + } + ], + "homepage_url": "", + "id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "login_url": "", + "logout_url": "", + "notes": "", + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "object_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "preferred_single_sign_on_mode": "", + "redirect_uris": [], + "saml_metadata_url": "", + "saml_single_sign_on": [ + { + "relay_state": "" + } + ], + "service_principal_names": [], + "sign_in_audience": "AzureADMyOrg", + "tags": [], + "timeouts": null, + "type": "Application", + "use_existing": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJyZWFkIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6NjAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_container_registry", + "name": "o2nextgen-aks-acr", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "admin_enabled": false, + "admin_password": "", + "admin_username": "", + "anonymous_pull_enabled": false, + "data_endpoint_enabled": false, + "encryption": [ + { + "enabled": false, + "identity_client_id": "", + "key_vault_key_id": "" + } + ], + "export_policy_enabled": true, + "georeplications": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "identity": [], + "location": "westus3", + "login_server": "o2nextgen.azurecr.io", + "name": "o2nextgen", + "network_rule_bypass_option": "AzureServices", + "network_rule_set": [], + "public_network_access_enabled": true, + "quarantine_policy_enabled": false, + "resource_group_name": "o2bionics-products", + "retention_policy": [ + { + "days": 7, + "enabled": false + } + ], + "sku": "Standard", + "tags": {}, + "timeouts": null, + "trust_policy": [ + { + "enabled": false + } + ], + "zone_redundancy_enabled": false + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIyIn0=", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_dns_zone", + "name": "primary-dns-zone", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "max_number_of_record_sets": 10000, + "name": "o2bus.com", + "name_servers": [ + "ns1-32.azure-dns.com.", + "ns2-32.azure-dns.net.", + "ns3-32.azure-dns.org.", + "ns4-32.azure-dns.info." + ], + "number_of_record_sets": 4, + "resource_group_name": "o2bionics-products", + "soa_record": [ + { + "email": "azuredns-hostmaster.microsoft.com", + "expire_time": 2419200, + "fqdn": "o2bus.com.", + "host_name": "ns1-32.azure-dns.com.", + "minimum_ttl": 300, + "refresh_time": 3600, + "retry_time": 300, + "serial_number": 1, + "tags": {}, + "ttl": 3600 + } + ], + "tags": { + "product": "O2NextGen Platform", + "type_product": "Saas" + }, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_kubernetes_cluster", + "name": "o2nextgen-aks", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "automatic_channel_upgrade": "", + "azure_active_directory_role_based_access_control": [], + "azure_policy_enabled": false, + "default_node_pool": [ + { + "capacity_reservation_group_id": "", + "enable_auto_scaling": false, + "enable_host_encryption": false, + "enable_node_public_ip": false, + "fips_enabled": false, + "host_group_id": "", + "kubelet_config": [], + "kubelet_disk_type": "OS", + "linux_os_config": [], + "max_count": 0, + "max_pods": 110, + "min_count": 0, + "name": "system", + "node_count": 1, + "node_labels": {}, + "node_public_ip_prefix_id": "", + "node_taints": [], + "only_critical_addons_enabled": false, + "orchestrator_version": "", + "os_disk_size_gb": 128, + "os_disk_type": "Managed", + "os_sku": "Ubuntu", + "pod_subnet_id": "", + "proximity_placement_group_id": "", + "tags": {}, + "type": "VirtualMachineScaleSets", + "ultra_ssd_enabled": false, + "upgrade_settings": [], + "vm_size": "Standard_D2_v2", + "vnet_subnet_id": "", + "zones": [] + } + ], + "disk_encryption_set_id": "", + "dns_prefix": "aks", + "dns_prefix_private_cluster": "", + "edge_zone": "", + "enable_pod_security_policy": false, + "fqdn": "aks-62baec49.hcp.westus3.azmk8s.io", + "http_application_routing_enabled": false, + "http_application_routing_zone_name": "", + "http_proxy_config": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerService/managedClusters/o2nextgen-aks", + "identity": [ + { + "identity_ids": [], + "principal_id": "673d7ee5-59e9-4177-893a-154bf2411e58", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "type": "SystemAssigned" + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_admin_config_raw": "", + "kube_config": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "https://aks-62baec49.hcp.westus3.azmk8s.io:443", + "password": "85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf", + "username": "clusterUser_o2bionics-products_o2nextgen-aks" + } + ], + "kube_config_raw": "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://aks-62baec49.hcp.westus3.azmk8s.io:443\n name: o2nextgen-aks\ncontexts:\n- context:\n cluster: o2nextgen-aks\n user: clusterUser_o2bionics-products_o2nextgen-aks\n name: o2nextgen-aks\ncurrent-context: o2nextgen-aks\nkind: Config\npreferences: {}\nusers:\n- name: clusterUser_o2bionics-products_o2nextgen-aks\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K\n token: 85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf\n", + "kubelet_identity": [ + { + "client_id": "a7b1e297-2eb0-4fc0-acea-0b7dd9ac7ec6", + "object_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "user_assigned_identity_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/o2nextgen-aks-agentpool" + } + ], + "kubernetes_version": "1.23.8", + "linux_profile": [], + "local_account_disabled": false, + "location": "westus3", + "maintenance_window": [], + "microsoft_defender": [], + "name": "o2nextgen-aks", + "network_profile": [ + { + "dns_service_ip": "10.0.0.10", + "docker_bridge_cidr": "172.17.0.1/16", + "ip_versions": [ + "IPv4" + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.Network/publicIPAddresses/a671c948-31c9-41d8-9f2d-73edf7531002" + ], + "idle_timeout_in_minutes": 0, + "managed_outbound_ip_count": 1, + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [], + "outbound_ports_allocated": 0 + } + ], + "load_balancer_sku": "standard", + "nat_gateway_profile": [], + "network_mode": "", + "network_plugin": "kubenet", + "network_policy": "", + "outbound_type": "loadBalancer", + "pod_cidr": "10.244.0.0/16", + "service_cidr": "10.0.0.0/16" + } + ], + "node_resource_group": "MC_o2bionics-products_o2nextgen-aks_westus3", + "oidc_issuer_enabled": false, + "oidc_issuer_url": "", + "oms_agent": [], + "open_service_mesh_enabled": false, + "portal_fqdn": "aks-62baec49.portal.hcp.westus3.azmk8s.io", + "private_cluster_enabled": false, + "private_cluster_public_fqdn_enabled": false, + "private_dns_zone_id": "", + "private_fqdn": "", + "public_network_access_enabled": true, + "resource_group_name": "o2bionics-products", + "role_based_access_control_enabled": true, + "run_command_enabled": true, + "service_principal": [], + "sku_tier": "Free", + "tags": { + "Environment": "Production", + "Product": "O2NextGen Platform" + }, + "timeouts": null, + "windows_profile": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo1NDAwMDAwMDAwMDAwLCJkZWxldGUiOjU0MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjo1NDAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIyIn0=", + "dependencies": [ + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_resource_group", + "name": "aks-resource-group", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "location": "westus3", + "name": "o2bionics-products", + "tags": {}, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo1NDAwMDAwMDAwMDAwLCJkZWxldGUiOjU0MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjo1NDAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "current", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleAssignments/a964cad9-e2af-c584-abeb-260ba07b73d4", + "name": "a964cad9-e2af-c584-abeb-260ba07b73d4", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "role_definition_name": "Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current", + "data.azurerm_subscription.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com/providers/Microsoft.Authorization/roleAssignments/1e321e91-e008-911f-1259-daaa91498ded", + "name": "1e321e91-e008-911f-1259-daaa91498ded", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314", + "role_definition_name": "DNS Zone Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "reader", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Authorization/roleAssignments/2790a8c2-19c3-bd19-676e-be62e078963a", + "name": "2790a8c2-19c3-bd19-676e-be62e078963a", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", + "role_definition_name": "Reader", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "role-acrpull", + "provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen/providers/Microsoft.Authorization/roleAssignments/88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "name": "88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "principal_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d", + "role_definition_name": "AcrPull", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInJlYWQiOjMwMDAwMDAwMDAwMCwidXBkYXRlIjoxODAwMDAwMDAwMDAwfX0=", + "dependencies": [ + "azurerm_container_registry.o2nextgen-aks-acr", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "aad-pod-identity", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "aad-pod-identity", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "aad-pod-identity", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.8.12", + "chart": "aad-pod-identity", + "name": "aad-pod-identity", + "namespace": "kube-system", + "revision": 1, + "values": "null", + "version": "4.1.13" + } + ], + "name": "aad-pod-identity", + "namespace": "kube-system", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.13", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_container_registry.o2nextgen-aks-acr", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "cert-manager", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "cert-manager", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.6.1", + "chart": "cert-manager", + "name": "cert-manager", + "namespace": "cert-manager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.6.1" + } + ], + "name": "cert-manager", + "namespace": "cert-manager", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.6.1", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "external-dns", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "external-dns", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "external-dns", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.12.2", + "chart": "external-dns", + "name": "external-dns", + "namespace": "external-dns", + "revision": 1, + "values": "{\"azure\":{\"aadClientId\":\"4acf4b9b-9507-44ae-83ff-43a8b0a2d45e\",\"aadClientSecret\":\"xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb\",\"resourceGroup\":\"o2bionics-products\",\"subscriptionId\":\"/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04\",\"tenantId\":\"f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6\"},\"logLevel\":\"debug\",\"policy\":\"sync\",\"provider\":\"azure\",\"txtOwnerId\":\"o2nextgen-aks\"}", + "version": "6.10.0" + } + ], + "name": "external-dns", + "namespace": "external-dns", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.bitnami.com/bitnami", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "azure.aadClientId", + "type": "", + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e" + }, + { + "name": "azure.aadClientSecret", + "type": "", + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + { + "name": "azure.resourceGroup", + "type": "", + "value": "o2bionics-products" + }, + { + "name": "azure.subscriptionId", + "type": "", + "value": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04" + }, + { + "name": "azure.tenantId", + "type": "", + "value": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" + }, + { + "name": "logLevel", + "type": "", + "value": "debug" + }, + { + "name": "policy", + "type": "", + "value": "sync" + }, + { + "name": "provider", + "type": "", + "value": "azure" + }, + { + "name": "txtOwnerId", + "type": "", + "value": "o2nextgen-aks" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "6.10.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "set" + } + ] + ], + "private": "bnVsbA==", + "dependencies": [ + "azuread_application.example", + "azuread_application_password.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current", + "data.azurerm_subscription.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "nginx-ingress-controller", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "ingress-nginx", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "nginx-ingress-controller", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.2.1", + "chart": "ingress-nginx", + "name": "nginx-ingress-controller", + "namespace": "ingress", + "revision": 1, + "values": "{\"controller\":{\"autoscaling\":{\"enabled\":true,\"maxReplicas\":2,\"minReplicas\":1},\"service\":{\"type\":\"LoadBalancer\"}}}", + "version": "4.1.3" + } + ], + "name": "nginx-ingress-controller", + "namespace": "ingress", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://kubernetes.github.io/ingress-nginx", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "controller.autoscaling.enabled", + "type": "", + "value": "true" + }, + { + "name": "controller.autoscaling.maxReplicas", + "type": "", + "value": "2" + }, + { + "name": "controller.autoscaling.minReplicas", + "type": "", + "value": "1" + }, + { + "name": "controller.service.type", + "type": "", + "value": "LoadBalancer" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.3", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "o2nextgen-auth", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "o2nextgen-auth", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "o2nextgen-auth", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.16.0", + "chart": "o2nextgen-auth", + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "revision": 1, + "values": "null", + "version": "0.1.0" + } + ], + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "helm_release", + "name": "prometheus-stack", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "kube-prometheus-stack", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "prometheus-stack", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.59.1", + "chart": "kube-prometheus-stack", + "name": "prometheus-stack", + "namespace": "monitoring", + "revision": 1, + "values": "{\"grafana\":{\"adminPassword\":\"grafana-pass\",\"adminUser\":\"grafana\",\"ingress\":{\"annotations\":{\"nginx.ingress.kubernetes.io/rewrite-target\":\"/$1\",\"nginx.ingress.kubernetes.io/ssl-redirect\":\"false\",\"nginx.ingress.kubernetes.io/use-regex\":\"true\"},\"enabled\":true,\"ingressClassName\":\"nginx\",\"path\":\"/(.*)\"}}}", + "version": "40.1.2" + } + ], + "name": "prometheus-stack", + "namespace": "monitoring", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://prometheus-community.github.io/helm-charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "grafana.adminPassword", + "type": "", + "value": "grafana-pass" + }, + { + "name": "grafana.adminUser", + "type": "", + "value": "grafana" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target", + "type": "", + "value": "/$1" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect", + "type": "string", + "value": "false" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex", + "type": "string", + "value": "true" + }, + { + "name": "grafana.ingress.enabled", + "type": "", + "value": "true" + }, + { + "name": "grafana.ingress.ingressClassName", + "type": "", + "value": "nginx" + }, + { + "name": "grafana.ingress.path", + "type": "", + "value": "/(.*)" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "40.1.2", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "helm_release.nginx-ingress-controller" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "dev", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-dev", + "metadata": [ + { + "annotations": { + "name": "apps-dev" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Development" + }, + "name": "apps-dev", + "resource_version": "1447", + "uid": "e7d1d0f0-539d-49f0-9ba1-f7a187586e94" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "devops", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-devops", + "metadata": [ + { + "annotations": { + "name": "apps-devops" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Devops" + }, + "name": "apps-devops", + "resource_version": "1444", + "uid": "251115c5-d26c-4bd7-8af9-99c93da74b5a" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "prod", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-prod", + "metadata": [ + { + "annotations": { + "name": "apps-prod" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Production" + }, + "name": "apps-prod", + "resource_version": "1445", + "uid": "e76706f9-6aa6-405f-8c72-7afdfb423c05" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "staging", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-staging", + "metadata": [ + { + "annotations": { + "name": "apps-staging" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Staging" + }, + "name": "apps-staging", + "resource_version": "1443", + "uid": "d5be15f9-8924-4415-9d7c-05b85a649510" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + }, + { + "mode": "managed", + "type": "kubernetes_namespace", + "name": "tst", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "apps-tst", + "metadata": [ + { + "annotations": { + "name": "apps-tst" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Test" + }, + "name": "apps-tst", + "resource_version": "1446", + "uid": "8001ed90-da14-41c5-a51b-6fe1464bc1a3" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + } + ] +} diff --git a/deploy/release-deploy/clouds/azure/terraform/terraform.tfvars b/deploy/release-deploy/clouds/azure/terraform/terraform.tfvars new file mode 100644 index 00000000..f9b4e1da --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/terraform.tfvars @@ -0,0 +1,10 @@ +k8s_cluster_name = "o2nextgen-aks" +k8s_resource_group = "o2bionics-products" +k8s_location = "WestUS3" +k8s_dns_prefix = "aks" +k8s_vm_size = "Standard_D2_v2" +k8s_node_count = 1 + + +grafana_admin_user = "grafana" +grafana_admin_password = "grafana-pass" diff --git a/deploy/release-deploy/clouds/azure/terraform/tfplan b/deploy/release-deploy/clouds/azure/terraform/tfplan new file mode 100644 index 00000000..17aba9e3 Binary files /dev/null and b/deploy/release-deploy/clouds/azure/terraform/tfplan differ diff --git a/deploy/release-deploy/clouds/azure/terraform/tfplan.json b/deploy/release-deploy/clouds/azure/terraform/tfplan.json new file mode 100644 index 00000000..2b001896 --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/tfplan.json @@ -0,0 +1,7081 @@ +{ + "format_version": "1.1", + "terraform_version": "1.2.9", + "variables": { + "grafana_admin_password": { + "value": "grafana-pass" + }, + "grafana_admin_user": { + "value": "grafana" + }, + "k8s_cluster_name": { + "value": "o2nextgen-aks" + }, + "k8s_dns_prefix": { + "value": "aks" + }, + "k8s_location": { + "value": "WestUS3" + }, + "k8s_node_count": { + "value": 1 + }, + "k8s_resource_group": { + "value": "o2bionics-products" + }, + "k8s_vm_size": { + "value": "Standard_D2_v2" + } + }, + "planned_values": { + "outputs": { + "client_id": { + "sensitive": false, + "type": "string", + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e" + }, + "client_secret": { + "sensitive": true, + "type": "string", + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + "current_subscription_display_name": { + "sensitive": false, + "type": "string", + "value": "paid-subscription" + }, + "display_name": { + "sensitive": false, + "type": "string", + "value": "External-DNS-SP" + }, + "object_id": { + "sensitive": false, + "type": "string", + "value": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + } + }, + "root_module": { + "resources": [ + { + "address": "azuread_application.example", + "mode": "managed", + "type": "azuread_application", + "name": "example", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 1, + "values": { + "api": [ + { + "known_client_applications": [], + "mapped_claims_enabled": false, + "oauth2_permission_scope": [], + "requested_access_token_version": 1 + } + ], + "app_role": [], + "app_role_ids": {}, + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "device_only_auth_enabled": false, + "disabled_by_microsoft": "", + "display_name": "External-DNS-SP", + "fallback_public_client_enabled": false, + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "group_membership_claims": [], + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "identifier_uris": [], + "logo_image": "", + "logo_url": "", + "marketing_url": "", + "oauth2_permission_scope_ids": {}, + "oauth2_post_response_required": false, + "object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "prevent_duplicate_names": false, + "privacy_statement_url": "", + "public_client": [ + { + "redirect_uris": [] + } + ], + "publisher_domain": "o2bionicshotmail.onmicrosoft.com", + "required_resource_access": [], + "sign_in_audience": "AzureADMyOrg", + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "support_url": "", + "tags": [], + "template_id": "", + "terms_of_service_url": "", + "timeouts": null, + "web": [ + { + "homepage_url": "", + "implicit_grant": [ + { + "access_token_issuance_enabled": false, + "id_token_issuance_enabled": false + } + ], + "logout_url": "", + "redirect_uris": [] + } + ] + }, + "sensitive_values": { + "api": [ + { + "known_client_applications": [], + "oauth2_permission_scope": [] + } + ], + "app_role": [], + "app_role_ids": {}, + "feature_tags": [ + {} + ], + "group_membership_claims": [], + "identifier_uris": [], + "oauth2_permission_scope_ids": {}, + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + false + ], + "public_client": [ + { + "redirect_uris": [] + } + ], + "required_resource_access": [], + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "tags": [], + "web": [ + { + "implicit_grant": [ + {} + ], + "redirect_uris": [] + } + ] + } + }, + { + "address": "azuread_application_password.current", + "mode": "managed", + "type": "azuread_application_password", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 1, + "values": { + "application_object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "display_name": null, + "end_date": "2024-09-27T23:44:40Z", + "end_date_relative": null, + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9/password/6c924c19-e789-4549-a35a-b09cfc673d66", + "key_id": "6c924c19-e789-4549-a35a-b09cfc673d66", + "rotate_when_changed": null, + "start_date": "2022-09-27T23:44:40Z", + "timeouts": null, + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + "sensitive_values": {} + }, + { + "address": "azuread_service_principal.current", + "mode": "managed", + "type": "azuread_service_principal", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 0, + "values": { + "account_enabled": true, + "alternative_names": [], + "app_role_assignment_required": false, + "app_role_ids": {}, + "app_roles": [], + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "application_tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "description": "", + "display_name": "External-DNS-SP", + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "features": [ + { + "custom_single_sign_on_app": false, + "enterprise_application": false, + "gallery_application": false, + "visible_to_users": true + } + ], + "homepage_url": "", + "id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "login_url": "", + "logout_url": "", + "notes": "", + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "object_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "preferred_single_sign_on_mode": "", + "redirect_uris": [], + "saml_metadata_url": "", + "saml_single_sign_on": [ + { + "relay_state": "" + } + ], + "service_principal_names": [], + "sign_in_audience": "AzureADMyOrg", + "tags": [], + "timeouts": null, + "type": "Application", + "use_existing": null + }, + "sensitive_values": { + "alternative_names": [], + "app_role_ids": {}, + "app_roles": [], + "feature_tags": [ + {} + ], + "features": [ + {} + ], + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "owners": [ + false + ], + "redirect_uris": [], + "saml_single_sign_on": [ + {} + ], + "service_principal_names": [], + "tags": [] + } + }, + { + "address": "azurerm_container_registry.o2nextgen-aks-acr", + "mode": "managed", + "type": "azurerm_container_registry", + "name": "o2nextgen-aks-acr", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 2, + "values": { + "admin_enabled": false, + "admin_password": "", + "admin_username": "", + "anonymous_pull_enabled": false, + "data_endpoint_enabled": false, + "encryption": [ + { + "enabled": false, + "identity_client_id": "", + "key_vault_key_id": "" + } + ], + "export_policy_enabled": true, + "georeplications": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "identity": [], + "location": "westus3", + "login_server": "o2nextgen.azurecr.io", + "name": "o2nextgen", + "network_rule_bypass_option": "AzureServices", + "network_rule_set": [], + "public_network_access_enabled": true, + "quarantine_policy_enabled": false, + "resource_group_name": "o2bionics-products", + "retention_policy": [ + { + "days": 7, + "enabled": false + } + ], + "sku": "Standard", + "tags": {}, + "timeouts": null, + "trust_policy": [ + { + "enabled": false + } + ], + "zone_redundancy_enabled": false + }, + "sensitive_values": { + "encryption": [ + {} + ], + "georeplications": [], + "identity": [], + "network_rule_set": [], + "retention_policy": [ + {} + ], + "tags": {}, + "trust_policy": [ + {} + ] + } + }, + { + "address": "azurerm_dns_zone.primary-dns-zone", + "mode": "managed", + "type": "azurerm_dns_zone", + "name": "primary-dns-zone", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 1, + "values": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "max_number_of_record_sets": 10000, + "name": "o2bus.com", + "name_servers": [ + "ns1-32.azure-dns.com.", + "ns2-32.azure-dns.net.", + "ns3-32.azure-dns.org.", + "ns4-32.azure-dns.info." + ], + "number_of_record_sets": 4, + "resource_group_name": "o2bionics-products", + "soa_record": [ + { + "email": "azuredns-hostmaster.microsoft.com", + "expire_time": 2419200, + "fqdn": "o2bus.com.", + "host_name": "ns1-32.azure-dns.com.", + "minimum_ttl": 300, + "refresh_time": 3600, + "retry_time": 300, + "serial_number": 1, + "tags": {}, + "ttl": 3600 + } + ], + "tags": { + "product": "O2NextGen Platform", + "type_product": "Saas" + }, + "timeouts": null + }, + "sensitive_values": { + "name_servers": [ + false, + false, + false, + false + ], + "soa_record": [ + { + "tags": {} + } + ], + "tags": {} + } + }, + { + "address": "azurerm_kubernetes_cluster.o2nextgen-aks", + "mode": "managed", + "type": "azurerm_kubernetes_cluster", + "name": "o2nextgen-aks", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 2, + "values": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "automatic_channel_upgrade": "", + "azure_active_directory_role_based_access_control": [], + "azure_policy_enabled": false, + "default_node_pool": [ + { + "capacity_reservation_group_id": "", + "enable_auto_scaling": false, + "enable_host_encryption": false, + "enable_node_public_ip": false, + "fips_enabled": false, + "host_group_id": "", + "kubelet_config": [], + "kubelet_disk_type": "OS", + "linux_os_config": [], + "max_count": 0, + "max_pods": 110, + "min_count": 0, + "name": "system", + "node_count": 1, + "node_labels": {}, + "node_public_ip_prefix_id": "", + "node_taints": [], + "only_critical_addons_enabled": false, + "orchestrator_version": "", + "os_disk_size_gb": 128, + "os_disk_type": "Managed", + "os_sku": "Ubuntu", + "pod_subnet_id": "", + "proximity_placement_group_id": "", + "tags": {}, + "type": "VirtualMachineScaleSets", + "ultra_ssd_enabled": false, + "upgrade_settings": [], + "vm_size": "Standard_D2_v2", + "vnet_subnet_id": "", + "zones": [] + } + ], + "disk_encryption_set_id": "", + "dns_prefix": "aks", + "dns_prefix_private_cluster": "", + "edge_zone": "", + "enable_pod_security_policy": false, + "fqdn": "aks-62baec49.hcp.westus3.azmk8s.io", + "http_application_routing_enabled": false, + "http_application_routing_zone_name": "", + "http_proxy_config": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerService/managedClusters/o2nextgen-aks", + "identity": [ + { + "identity_ids": [], + "principal_id": "673d7ee5-59e9-4177-893a-154bf2411e58", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "type": "SystemAssigned" + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_admin_config_raw": "", + "kube_config": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "https://aks-62baec49.hcp.westus3.azmk8s.io:443", + "password": "85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf", + "username": "clusterUser_o2bionics-products_o2nextgen-aks" + } + ], + "kube_config_raw": "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://aks-62baec49.hcp.westus3.azmk8s.io:443\n name: o2nextgen-aks\ncontexts:\n- context:\n cluster: o2nextgen-aks\n user: clusterUser_o2bionics-products_o2nextgen-aks\n name: o2nextgen-aks\ncurrent-context: o2nextgen-aks\nkind: Config\npreferences: {}\nusers:\n- name: clusterUser_o2bionics-products_o2nextgen-aks\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K\n token: 85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf\n", + "kubelet_identity": [ + { + "client_id": "a7b1e297-2eb0-4fc0-acea-0b7dd9ac7ec6", + "object_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "user_assigned_identity_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/o2nextgen-aks-agentpool" + } + ], + "kubernetes_version": "1.23.8", + "linux_profile": [], + "local_account_disabled": false, + "location": "westus3", + "maintenance_window": [], + "microsoft_defender": [], + "name": "o2nextgen-aks", + "network_profile": [ + { + "dns_service_ip": "10.0.0.10", + "docker_bridge_cidr": "172.17.0.1/16", + "ip_versions": [ + "IPv4" + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.Network/publicIPAddresses/a671c948-31c9-41d8-9f2d-73edf7531002" + ], + "idle_timeout_in_minutes": 0, + "managed_outbound_ip_count": 1, + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [], + "outbound_ports_allocated": 0 + } + ], + "load_balancer_sku": "standard", + "nat_gateway_profile": [], + "network_mode": "", + "network_plugin": "kubenet", + "network_policy": "", + "outbound_type": "loadBalancer", + "pod_cidr": "10.244.0.0/16", + "service_cidr": "10.0.0.0/16" + } + ], + "node_resource_group": "MC_o2bionics-products_o2nextgen-aks_westus3", + "oidc_issuer_enabled": false, + "oidc_issuer_url": "", + "oms_agent": [], + "open_service_mesh_enabled": false, + "portal_fqdn": "aks-62baec49.portal.hcp.westus3.azmk8s.io", + "private_cluster_enabled": false, + "private_cluster_public_fqdn_enabled": false, + "private_dns_zone_id": "", + "private_fqdn": "", + "public_network_access_enabled": true, + "resource_group_name": "o2bionics-products", + "role_based_access_control_enabled": true, + "run_command_enabled": true, + "service_principal": [], + "sku_tier": "Free", + "tags": { + "Environment": "Production", + "Product": "O2NextGen Platform" + }, + "timeouts": null, + "windows_profile": [] + }, + "sensitive_values": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "azure_active_directory_role_based_access_control": [], + "default_node_pool": [ + { + "kubelet_config": [], + "linux_os_config": [], + "node_labels": {}, + "node_taints": [], + "tags": {}, + "upgrade_settings": [], + "zones": [] + } + ], + "http_proxy_config": [], + "identity": [ + { + "identity_ids": [] + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_config": [ + {} + ], + "kubelet_identity": [ + {} + ], + "linux_profile": [], + "maintenance_window": [], + "microsoft_defender": [], + "network_profile": [ + { + "ip_versions": [ + false + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + false + ], + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [] + } + ], + "nat_gateway_profile": [] + } + ], + "oms_agent": [], + "service_principal": [], + "tags": {}, + "windows_profile": [] + } + }, + { + "address": "azurerm_resource_group.aks-resource-group", + "mode": "managed", + "type": "azurerm_resource_group", + "name": "aks-resource-group", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "location": "westus3", + "name": "o2bionics-products", + "tags": {}, + "timeouts": null + }, + "sensitive_values": { + "tags": {} + } + }, + { + "address": "azurerm_role_assignment.current", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleAssignments/a964cad9-e2af-c584-abeb-260ba07b73d4", + "name": "a964cad9-e2af-c584-abeb-260ba07b73d4", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "role_definition_name": "Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {} + }, + { + "address": "azurerm_role_assignment.main", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com/providers/Microsoft.Authorization/roleAssignments/1e321e91-e008-911f-1259-daaa91498ded", + "name": "1e321e91-e008-911f-1259-daaa91498ded", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314", + "role_definition_name": "DNS Zone Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {} + }, + { + "address": "azurerm_role_assignment.reader", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "reader", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Authorization/roleAssignments/2790a8c2-19c3-bd19-676e-be62e078963a", + "name": "2790a8c2-19c3-bd19-676e-be62e078963a", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", + "role_definition_name": "Reader", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {} + }, + { + "address": "azurerm_role_assignment.role-acrpull", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "role-acrpull", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen/providers/Microsoft.Authorization/roleAssignments/88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "name": "88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "principal_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d", + "role_definition_name": "AcrPull", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {} + }, + { + "address": "helm_release.aad-pod-identity", + "mode": "managed", + "type": "helm_release", + "name": "aad-pod-identity", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "aad-pod-identity", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "aad-pod-identity", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.8.12", + "chart": "aad-pod-identity", + "name": "aad-pod-identity", + "namespace": "kube-system", + "revision": 1, + "values": "null", + "version": "4.1.13" + } + ], + "name": "aad-pod-identity", + "namespace": "kube-system", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.13", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [], + "set_sensitive": [] + } + }, + { + "address": "helm_release.cert-manager", + "mode": "managed", + "type": "helm_release", + "name": "cert-manager", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "cert-manager", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.6.1", + "chart": "cert-manager", + "name": "cert-manager", + "namespace": "cert-manager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.6.1" + } + ], + "name": "cert-manager", + "namespace": "cert-manager", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.6.1", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [ + {} + ], + "set_sensitive": [] + } + }, + { + "address": "helm_release.external-dns", + "mode": "managed", + "type": "helm_release", + "name": "external-dns", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "external-dns", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "external-dns", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.12.2", + "chart": "external-dns", + "name": "external-dns", + "namespace": "external-dns", + "revision": 1, + "values": "{\"azure\":{\"aadClientId\":\"4acf4b9b-9507-44ae-83ff-43a8b0a2d45e\",\"aadClientSecret\":\"xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb\",\"resourceGroup\":\"o2bionics-products\",\"subscriptionId\":\"/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04\",\"tenantId\":\"f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6\"},\"logLevel\":\"debug\",\"policy\":\"sync\",\"provider\":\"azure\",\"txtOwnerId\":\"o2nextgen-aks\"}", + "version": "6.10.0" + } + ], + "name": "external-dns", + "namespace": "external-dns", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.bitnami.com/bitnami", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "azure.aadClientId", + "type": "", + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e" + }, + { + "name": "azure.aadClientSecret", + "type": "", + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + { + "name": "azure.resourceGroup", + "type": "", + "value": "o2bionics-products" + }, + { + "name": "azure.subscriptionId", + "type": "", + "value": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04" + }, + { + "name": "azure.tenantId", + "type": "", + "value": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" + }, + { + "name": "logLevel", + "type": "", + "value": "debug" + }, + { + "name": "policy", + "type": "", + "value": "sync" + }, + { + "name": "provider", + "type": "", + "value": "azure" + }, + { + "name": "txtOwnerId", + "type": "", + "value": "o2nextgen-aks" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "6.10.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": true, + "set_sensitive": [] + } + }, + { + "address": "helm_release.nginx-ingress-controller", + "mode": "managed", + "type": "helm_release", + "name": "nginx-ingress-controller", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "ingress-nginx", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "nginx-ingress-controller", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.2.1", + "chart": "ingress-nginx", + "name": "nginx-ingress-controller", + "namespace": "ingress", + "revision": 1, + "values": "{\"controller\":{\"autoscaling\":{\"enabled\":true,\"maxReplicas\":2,\"minReplicas\":1},\"service\":{\"type\":\"LoadBalancer\"}}}", + "version": "4.1.3" + } + ], + "name": "nginx-ingress-controller", + "namespace": "ingress", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://kubernetes.github.io/ingress-nginx", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "controller.autoscaling.enabled", + "type": "", + "value": "true" + }, + { + "name": "controller.autoscaling.maxReplicas", + "type": "", + "value": "2" + }, + { + "name": "controller.autoscaling.minReplicas", + "type": "", + "value": "1" + }, + { + "name": "controller.service.type", + "type": "", + "value": "LoadBalancer" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.3", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [ + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + } + }, + { + "address": "helm_release.o2bus-webapp", + "mode": "managed", + "type": "helm_release", + "name": "o2bus-webapp", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "o2bus-webapp", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "keyring": null, + "lint": false, + "max_history": 0, + "name": "o2bus-webapp", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [], + "postrender": [], + "set": [], + "set_sensitive": [] + } + }, + { + "address": "helm_release.o2nextgen-auth", + "mode": "managed", + "type": "helm_release", + "name": "o2nextgen-auth", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "o2nextgen-auth", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "o2nextgen-auth", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.16.0", + "chart": "o2nextgen-auth", + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "revision": 1, + "values": "null", + "version": "0.1.0" + } + ], + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [], + "set_sensitive": [] + } + }, + { + "address": "helm_release.prometheus-stack", + "mode": "managed", + "type": "helm_release", + "name": "prometheus-stack", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "kube-prometheus-stack", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "prometheus-stack", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.59.1", + "chart": "kube-prometheus-stack", + "name": "prometheus-stack", + "namespace": "monitoring", + "revision": 1, + "values": "{\"grafana\":{\"adminPassword\":\"grafana-pass\",\"adminUser\":\"grafana\",\"ingress\":{\"annotations\":{\"nginx.ingress.kubernetes.io/rewrite-target\":\"/$1\",\"nginx.ingress.kubernetes.io/ssl-redirect\":\"false\",\"nginx.ingress.kubernetes.io/use-regex\":\"true\"},\"enabled\":true,\"ingressClassName\":\"nginx\",\"path\":\"/(.*)\"}}}", + "version": "40.1.2" + } + ], + "name": "prometheus-stack", + "namespace": "monitoring", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://prometheus-community.github.io/helm-charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "grafana.adminPassword", + "type": "", + "value": "grafana-pass" + }, + { + "name": "grafana.adminUser", + "type": "", + "value": "grafana" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target", + "type": "", + "value": "/$1" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect", + "type": "string", + "value": "false" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex", + "type": "string", + "value": "true" + }, + { + "name": "grafana.ingress.enabled", + "type": "", + "value": "true" + }, + { + "name": "grafana.ingress.ingressClassName", + "type": "", + "value": "nginx" + }, + { + "name": "grafana.ingress.path", + "type": "", + "value": "/(.*)" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "40.1.2", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + } + }, + { + "address": "kubernetes_namespace.dev", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "dev", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-dev", + "metadata": [ + { + "annotations": { + "name": "apps-dev" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Development" + }, + "name": "apps-dev", + "resource_version": "1447", + "uid": "e7d1d0f0-539d-49f0-9ba1-f7a187586e94" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + }, + { + "address": "kubernetes_namespace.devops", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "devops", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-devops", + "metadata": [ + { + "annotations": { + "name": "apps-devops" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Devops" + }, + "name": "apps-devops", + "resource_version": "1444", + "uid": "251115c5-d26c-4bd7-8af9-99c93da74b5a" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + }, + { + "address": "kubernetes_namespace.prod", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "prod", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-prod", + "metadata": [ + { + "annotations": { + "name": "apps-prod" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Production" + }, + "name": "apps-prod", + "resource_version": "1445", + "uid": "e76706f9-6aa6-405f-8c72-7afdfb423c05" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + }, + { + "address": "kubernetes_namespace.staging", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "staging", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-staging", + "metadata": [ + { + "annotations": { + "name": "apps-staging" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Staging" + }, + "name": "apps-staging", + "resource_version": "1443", + "uid": "d5be15f9-8924-4415-9d7c-05b85a649510" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + }, + { + "address": "kubernetes_namespace.tst", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "tst", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-tst", + "metadata": [ + { + "annotations": { + "name": "apps-tst" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Test" + }, + "name": "apps-tst", + "resource_version": "1446", + "uid": "8001ed90-da14-41c5-a51b-6fe1464bc1a3" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + } + ] + } + }, + "resource_changes": [ + { + "address": "azuread_application.example", + "mode": "managed", + "type": "azuread_application", + "name": "example", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "change": { + "actions": [ + "no-op" + ], + "before": { + "api": [ + { + "known_client_applications": [], + "mapped_claims_enabled": false, + "oauth2_permission_scope": [], + "requested_access_token_version": 1 + } + ], + "app_role": [], + "app_role_ids": {}, + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "device_only_auth_enabled": false, + "disabled_by_microsoft": "", + "display_name": "External-DNS-SP", + "fallback_public_client_enabled": false, + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "group_membership_claims": [], + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "identifier_uris": [], + "logo_image": "", + "logo_url": "", + "marketing_url": "", + "oauth2_permission_scope_ids": {}, + "oauth2_post_response_required": false, + "object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "prevent_duplicate_names": false, + "privacy_statement_url": "", + "public_client": [ + { + "redirect_uris": [] + } + ], + "publisher_domain": "o2bionicshotmail.onmicrosoft.com", + "required_resource_access": [], + "sign_in_audience": "AzureADMyOrg", + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "support_url": "", + "tags": [], + "template_id": "", + "terms_of_service_url": "", + "timeouts": null, + "web": [ + { + "homepage_url": "", + "implicit_grant": [ + { + "access_token_issuance_enabled": false, + "id_token_issuance_enabled": false + } + ], + "logout_url": "", + "redirect_uris": [] + } + ] + }, + "after": { + "api": [ + { + "known_client_applications": [], + "mapped_claims_enabled": false, + "oauth2_permission_scope": [], + "requested_access_token_version": 1 + } + ], + "app_role": [], + "app_role_ids": {}, + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "device_only_auth_enabled": false, + "disabled_by_microsoft": "", + "display_name": "External-DNS-SP", + "fallback_public_client_enabled": false, + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "group_membership_claims": [], + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "identifier_uris": [], + "logo_image": "", + "logo_url": "", + "marketing_url": "", + "oauth2_permission_scope_ids": {}, + "oauth2_post_response_required": false, + "object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "prevent_duplicate_names": false, + "privacy_statement_url": "", + "public_client": [ + { + "redirect_uris": [] + } + ], + "publisher_domain": "o2bionicshotmail.onmicrosoft.com", + "required_resource_access": [], + "sign_in_audience": "AzureADMyOrg", + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "support_url": "", + "tags": [], + "template_id": "", + "terms_of_service_url": "", + "timeouts": null, + "web": [ + { + "homepage_url": "", + "implicit_grant": [ + { + "access_token_issuance_enabled": false, + "id_token_issuance_enabled": false + } + ], + "logout_url": "", + "redirect_uris": [] + } + ] + }, + "after_unknown": {}, + "before_sensitive": { + "api": [ + { + "known_client_applications": [], + "oauth2_permission_scope": [] + } + ], + "app_role": [], + "app_role_ids": {}, + "feature_tags": [ + {} + ], + "group_membership_claims": [], + "identifier_uris": [], + "oauth2_permission_scope_ids": {}, + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + false + ], + "public_client": [ + { + "redirect_uris": [] + } + ], + "required_resource_access": [], + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "tags": [], + "web": [ + { + "implicit_grant": [ + {} + ], + "redirect_uris": [] + } + ] + }, + "after_sensitive": { + "api": [ + { + "known_client_applications": [], + "oauth2_permission_scope": [] + } + ], + "app_role": [], + "app_role_ids": {}, + "feature_tags": [ + {} + ], + "group_membership_claims": [], + "identifier_uris": [], + "oauth2_permission_scope_ids": {}, + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + false + ], + "public_client": [ + { + "redirect_uris": [] + } + ], + "required_resource_access": [], + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "tags": [], + "web": [ + { + "implicit_grant": [ + {} + ], + "redirect_uris": [] + } + ] + } + } + }, + { + "address": "azuread_application_password.current", + "mode": "managed", + "type": "azuread_application_password", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "change": { + "actions": [ + "no-op" + ], + "before": { + "application_object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "display_name": null, + "end_date": "2024-09-27T23:44:40Z", + "end_date_relative": null, + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9/password/6c924c19-e789-4549-a35a-b09cfc673d66", + "key_id": "6c924c19-e789-4549-a35a-b09cfc673d66", + "rotate_when_changed": null, + "start_date": "2022-09-27T23:44:40Z", + "timeouts": null, + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + "after": { + "application_object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "display_name": null, + "end_date": "2024-09-27T23:44:40Z", + "end_date_relative": null, + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9/password/6c924c19-e789-4549-a35a-b09cfc673d66", + "key_id": "6c924c19-e789-4549-a35a-b09cfc673d66", + "rotate_when_changed": null, + "start_date": "2022-09-27T23:44:40Z", + "timeouts": null, + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + "after_unknown": {}, + "before_sensitive": { + "value": true + }, + "after_sensitive": { + "value": true + } + } + }, + { + "address": "azuread_service_principal.current", + "mode": "managed", + "type": "azuread_service_principal", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "change": { + "actions": [ + "no-op" + ], + "before": { + "account_enabled": true, + "alternative_names": [], + "app_role_assignment_required": false, + "app_role_ids": {}, + "app_roles": [], + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "application_tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "description": "", + "display_name": "External-DNS-SP", + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "features": [ + { + "custom_single_sign_on_app": false, + "enterprise_application": false, + "gallery_application": false, + "visible_to_users": true + } + ], + "homepage_url": "", + "id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "login_url": "", + "logout_url": "", + "notes": "", + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "object_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "preferred_single_sign_on_mode": "", + "redirect_uris": [], + "saml_metadata_url": "", + "saml_single_sign_on": [ + { + "relay_state": "" + } + ], + "service_principal_names": [], + "sign_in_audience": "AzureADMyOrg", + "tags": [], + "timeouts": null, + "type": "Application", + "use_existing": null + }, + "after": { + "account_enabled": true, + "alternative_names": [], + "app_role_assignment_required": false, + "app_role_ids": {}, + "app_roles": [], + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "application_tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "description": "", + "display_name": "External-DNS-SP", + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "features": [ + { + "custom_single_sign_on_app": false, + "enterprise_application": false, + "gallery_application": false, + "visible_to_users": true + } + ], + "homepage_url": "", + "id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "login_url": "", + "logout_url": "", + "notes": "", + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "object_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "preferred_single_sign_on_mode": "", + "redirect_uris": [], + "saml_metadata_url": "", + "saml_single_sign_on": [ + { + "relay_state": "" + } + ], + "service_principal_names": [], + "sign_in_audience": "AzureADMyOrg", + "tags": [], + "timeouts": null, + "type": "Application", + "use_existing": null + }, + "after_unknown": {}, + "before_sensitive": { + "alternative_names": [], + "app_role_ids": {}, + "app_roles": [], + "feature_tags": [ + {} + ], + "features": [ + {} + ], + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "owners": [ + false + ], + "redirect_uris": [], + "saml_single_sign_on": [ + {} + ], + "service_principal_names": [], + "tags": [] + }, + "after_sensitive": { + "alternative_names": [], + "app_role_ids": {}, + "app_roles": [], + "feature_tags": [ + {} + ], + "features": [ + {} + ], + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "owners": [ + false + ], + "redirect_uris": [], + "saml_single_sign_on": [ + {} + ], + "service_principal_names": [], + "tags": [] + } + } + }, + { + "address": "azurerm_container_registry.o2nextgen-aks-acr", + "mode": "managed", + "type": "azurerm_container_registry", + "name": "o2nextgen-aks-acr", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "admin_enabled": false, + "admin_password": "", + "admin_username": "", + "anonymous_pull_enabled": false, + "data_endpoint_enabled": false, + "encryption": [ + { + "enabled": false, + "identity_client_id": "", + "key_vault_key_id": "" + } + ], + "export_policy_enabled": true, + "georeplications": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "identity": [], + "location": "westus3", + "login_server": "o2nextgen.azurecr.io", + "name": "o2nextgen", + "network_rule_bypass_option": "AzureServices", + "network_rule_set": [], + "public_network_access_enabled": true, + "quarantine_policy_enabled": false, + "resource_group_name": "o2bionics-products", + "retention_policy": [ + { + "days": 7, + "enabled": false + } + ], + "sku": "Standard", + "tags": {}, + "timeouts": null, + "trust_policy": [ + { + "enabled": false + } + ], + "zone_redundancy_enabled": false + }, + "after": { + "admin_enabled": false, + "admin_password": "", + "admin_username": "", + "anonymous_pull_enabled": false, + "data_endpoint_enabled": false, + "encryption": [ + { + "enabled": false, + "identity_client_id": "", + "key_vault_key_id": "" + } + ], + "export_policy_enabled": true, + "georeplications": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "identity": [], + "location": "westus3", + "login_server": "o2nextgen.azurecr.io", + "name": "o2nextgen", + "network_rule_bypass_option": "AzureServices", + "network_rule_set": [], + "public_network_access_enabled": true, + "quarantine_policy_enabled": false, + "resource_group_name": "o2bionics-products", + "retention_policy": [ + { + "days": 7, + "enabled": false + } + ], + "sku": "Standard", + "tags": {}, + "timeouts": null, + "trust_policy": [ + { + "enabled": false + } + ], + "zone_redundancy_enabled": false + }, + "after_unknown": {}, + "before_sensitive": { + "admin_password": true, + "encryption": [ + {} + ], + "georeplications": [], + "identity": [], + "network_rule_set": [], + "retention_policy": [ + {} + ], + "tags": {}, + "trust_policy": [ + {} + ] + }, + "after_sensitive": { + "admin_password": true, + "encryption": [ + {} + ], + "georeplications": [], + "identity": [], + "network_rule_set": [], + "retention_policy": [ + {} + ], + "tags": {}, + "trust_policy": [ + {} + ] + } + } + }, + { + "address": "azurerm_dns_zone.primary-dns-zone", + "mode": "managed", + "type": "azurerm_dns_zone", + "name": "primary-dns-zone", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "max_number_of_record_sets": 10000, + "name": "o2bus.com", + "name_servers": [ + "ns1-32.azure-dns.com.", + "ns2-32.azure-dns.net.", + "ns3-32.azure-dns.org.", + "ns4-32.azure-dns.info." + ], + "number_of_record_sets": 4, + "resource_group_name": "o2bionics-products", + "soa_record": [ + { + "email": "azuredns-hostmaster.microsoft.com", + "expire_time": 2419200, + "fqdn": "o2bus.com.", + "host_name": "ns1-32.azure-dns.com.", + "minimum_ttl": 300, + "refresh_time": 3600, + "retry_time": 300, + "serial_number": 1, + "tags": {}, + "ttl": 3600 + } + ], + "tags": { + "product": "O2NextGen Platform", + "type_product": "Saas" + }, + "timeouts": null + }, + "after": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "max_number_of_record_sets": 10000, + "name": "o2bus.com", + "name_servers": [ + "ns1-32.azure-dns.com.", + "ns2-32.azure-dns.net.", + "ns3-32.azure-dns.org.", + "ns4-32.azure-dns.info." + ], + "number_of_record_sets": 4, + "resource_group_name": "o2bionics-products", + "soa_record": [ + { + "email": "azuredns-hostmaster.microsoft.com", + "expire_time": 2419200, + "fqdn": "o2bus.com.", + "host_name": "ns1-32.azure-dns.com.", + "minimum_ttl": 300, + "refresh_time": 3600, + "retry_time": 300, + "serial_number": 1, + "tags": {}, + "ttl": 3600 + } + ], + "tags": { + "product": "O2NextGen Platform", + "type_product": "Saas" + }, + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": { + "name_servers": [ + false, + false, + false, + false + ], + "soa_record": [ + { + "tags": {} + } + ], + "tags": {} + }, + "after_sensitive": { + "name_servers": [ + false, + false, + false, + false + ], + "soa_record": [ + { + "tags": {} + } + ], + "tags": {} + } + } + }, + { + "address": "azurerm_kubernetes_cluster.o2nextgen-aks", + "mode": "managed", + "type": "azurerm_kubernetes_cluster", + "name": "o2nextgen-aks", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "automatic_channel_upgrade": "", + "azure_active_directory_role_based_access_control": [], + "azure_policy_enabled": false, + "default_node_pool": [ + { + "capacity_reservation_group_id": "", + "enable_auto_scaling": false, + "enable_host_encryption": false, + "enable_node_public_ip": false, + "fips_enabled": false, + "host_group_id": "", + "kubelet_config": [], + "kubelet_disk_type": "OS", + "linux_os_config": [], + "max_count": 0, + "max_pods": 110, + "min_count": 0, + "name": "system", + "node_count": 1, + "node_labels": {}, + "node_public_ip_prefix_id": "", + "node_taints": [], + "only_critical_addons_enabled": false, + "orchestrator_version": "", + "os_disk_size_gb": 128, + "os_disk_type": "Managed", + "os_sku": "Ubuntu", + "pod_subnet_id": "", + "proximity_placement_group_id": "", + "tags": {}, + "type": "VirtualMachineScaleSets", + "ultra_ssd_enabled": false, + "upgrade_settings": [], + "vm_size": "Standard_D2_v2", + "vnet_subnet_id": "", + "zones": [] + } + ], + "disk_encryption_set_id": "", + "dns_prefix": "aks", + "dns_prefix_private_cluster": "", + "edge_zone": "", + "enable_pod_security_policy": false, + "fqdn": "aks-62baec49.hcp.westus3.azmk8s.io", + "http_application_routing_enabled": false, + "http_application_routing_zone_name": "", + "http_proxy_config": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerService/managedClusters/o2nextgen-aks", + "identity": [ + { + "identity_ids": [], + "principal_id": "673d7ee5-59e9-4177-893a-154bf2411e58", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "type": "SystemAssigned" + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_admin_config_raw": "", + "kube_config": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "https://aks-62baec49.hcp.westus3.azmk8s.io:443", + "password": "85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf", + "username": "clusterUser_o2bionics-products_o2nextgen-aks" + } + ], + "kube_config_raw": "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://aks-62baec49.hcp.westus3.azmk8s.io:443\n name: o2nextgen-aks\ncontexts:\n- context:\n cluster: o2nextgen-aks\n user: clusterUser_o2bionics-products_o2nextgen-aks\n name: o2nextgen-aks\ncurrent-context: o2nextgen-aks\nkind: Config\npreferences: {}\nusers:\n- name: clusterUser_o2bionics-products_o2nextgen-aks\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K\n token: 85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf\n", + "kubelet_identity": [ + { + "client_id": "a7b1e297-2eb0-4fc0-acea-0b7dd9ac7ec6", + "object_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "user_assigned_identity_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/o2nextgen-aks-agentpool" + } + ], + "kubernetes_version": "1.23.8", + "linux_profile": [], + "local_account_disabled": false, + "location": "westus3", + "maintenance_window": [], + "microsoft_defender": [], + "name": "o2nextgen-aks", + "network_profile": [ + { + "dns_service_ip": "10.0.0.10", + "docker_bridge_cidr": "172.17.0.1/16", + "ip_versions": [ + "IPv4" + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.Network/publicIPAddresses/a671c948-31c9-41d8-9f2d-73edf7531002" + ], + "idle_timeout_in_minutes": 0, + "managed_outbound_ip_count": 1, + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [], + "outbound_ports_allocated": 0 + } + ], + "load_balancer_sku": "standard", + "nat_gateway_profile": [], + "network_mode": "", + "network_plugin": "kubenet", + "network_policy": "", + "outbound_type": "loadBalancer", + "pod_cidr": "10.244.0.0/16", + "service_cidr": "10.0.0.0/16" + } + ], + "node_resource_group": "MC_o2bionics-products_o2nextgen-aks_westus3", + "oidc_issuer_enabled": false, + "oidc_issuer_url": "", + "oms_agent": [], + "open_service_mesh_enabled": false, + "portal_fqdn": "aks-62baec49.portal.hcp.westus3.azmk8s.io", + "private_cluster_enabled": false, + "private_cluster_public_fqdn_enabled": false, + "private_dns_zone_id": "", + "private_fqdn": "", + "public_network_access_enabled": true, + "resource_group_name": "o2bionics-products", + "role_based_access_control_enabled": true, + "run_command_enabled": true, + "service_principal": [], + "sku_tier": "Free", + "tags": { + "Environment": "Production", + "Product": "O2NextGen Platform" + }, + "timeouts": null, + "windows_profile": [] + }, + "after": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "automatic_channel_upgrade": "", + "azure_active_directory_role_based_access_control": [], + "azure_policy_enabled": false, + "default_node_pool": [ + { + "capacity_reservation_group_id": "", + "enable_auto_scaling": false, + "enable_host_encryption": false, + "enable_node_public_ip": false, + "fips_enabled": false, + "host_group_id": "", + "kubelet_config": [], + "kubelet_disk_type": "OS", + "linux_os_config": [], + "max_count": 0, + "max_pods": 110, + "min_count": 0, + "name": "system", + "node_count": 1, + "node_labels": {}, + "node_public_ip_prefix_id": "", + "node_taints": [], + "only_critical_addons_enabled": false, + "orchestrator_version": "", + "os_disk_size_gb": 128, + "os_disk_type": "Managed", + "os_sku": "Ubuntu", + "pod_subnet_id": "", + "proximity_placement_group_id": "", + "tags": {}, + "type": "VirtualMachineScaleSets", + "ultra_ssd_enabled": false, + "upgrade_settings": [], + "vm_size": "Standard_D2_v2", + "vnet_subnet_id": "", + "zones": [] + } + ], + "disk_encryption_set_id": "", + "dns_prefix": "aks", + "dns_prefix_private_cluster": "", + "edge_zone": "", + "enable_pod_security_policy": false, + "fqdn": "aks-62baec49.hcp.westus3.azmk8s.io", + "http_application_routing_enabled": false, + "http_application_routing_zone_name": "", + "http_proxy_config": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerService/managedClusters/o2nextgen-aks", + "identity": [ + { + "identity_ids": [], + "principal_id": "673d7ee5-59e9-4177-893a-154bf2411e58", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "type": "SystemAssigned" + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_admin_config_raw": "", + "kube_config": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "https://aks-62baec49.hcp.westus3.azmk8s.io:443", + "password": "85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf", + "username": "clusterUser_o2bionics-products_o2nextgen-aks" + } + ], + "kube_config_raw": "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://aks-62baec49.hcp.westus3.azmk8s.io:443\n name: o2nextgen-aks\ncontexts:\n- context:\n cluster: o2nextgen-aks\n user: clusterUser_o2bionics-products_o2nextgen-aks\n name: o2nextgen-aks\ncurrent-context: o2nextgen-aks\nkind: Config\npreferences: {}\nusers:\n- name: clusterUser_o2bionics-products_o2nextgen-aks\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K\n token: 85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf\n", + "kubelet_identity": [ + { + "client_id": "a7b1e297-2eb0-4fc0-acea-0b7dd9ac7ec6", + "object_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "user_assigned_identity_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/o2nextgen-aks-agentpool" + } + ], + "kubernetes_version": "1.23.8", + "linux_profile": [], + "local_account_disabled": false, + "location": "westus3", + "maintenance_window": [], + "microsoft_defender": [], + "name": "o2nextgen-aks", + "network_profile": [ + { + "dns_service_ip": "10.0.0.10", + "docker_bridge_cidr": "172.17.0.1/16", + "ip_versions": [ + "IPv4" + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.Network/publicIPAddresses/a671c948-31c9-41d8-9f2d-73edf7531002" + ], + "idle_timeout_in_minutes": 0, + "managed_outbound_ip_count": 1, + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [], + "outbound_ports_allocated": 0 + } + ], + "load_balancer_sku": "standard", + "nat_gateway_profile": [], + "network_mode": "", + "network_plugin": "kubenet", + "network_policy": "", + "outbound_type": "loadBalancer", + "pod_cidr": "10.244.0.0/16", + "service_cidr": "10.0.0.0/16" + } + ], + "node_resource_group": "MC_o2bionics-products_o2nextgen-aks_westus3", + "oidc_issuer_enabled": false, + "oidc_issuer_url": "", + "oms_agent": [], + "open_service_mesh_enabled": false, + "portal_fqdn": "aks-62baec49.portal.hcp.westus3.azmk8s.io", + "private_cluster_enabled": false, + "private_cluster_public_fqdn_enabled": false, + "private_dns_zone_id": "", + "private_fqdn": "", + "public_network_access_enabled": true, + "resource_group_name": "o2bionics-products", + "role_based_access_control_enabled": true, + "run_command_enabled": true, + "service_principal": [], + "sku_tier": "Free", + "tags": { + "Environment": "Production", + "Product": "O2NextGen Platform" + }, + "timeouts": null, + "windows_profile": [] + }, + "after_unknown": {}, + "before_sensitive": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "azure_active_directory_role_based_access_control": [], + "default_node_pool": [ + { + "kubelet_config": [], + "linux_os_config": [], + "node_labels": {}, + "node_taints": [], + "tags": {}, + "upgrade_settings": [], + "zones": [] + } + ], + "http_proxy_config": [], + "identity": [ + { + "identity_ids": [] + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": true, + "kube_admin_config_raw": true, + "kube_config": true, + "kube_config_raw": true, + "kubelet_identity": [ + {} + ], + "linux_profile": [], + "maintenance_window": [], + "microsoft_defender": [], + "network_profile": [ + { + "ip_versions": [ + false + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + false + ], + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [] + } + ], + "nat_gateway_profile": [] + } + ], + "oms_agent": [], + "service_principal": [], + "tags": {}, + "windows_profile": [] + }, + "after_sensitive": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "azure_active_directory_role_based_access_control": [], + "default_node_pool": [ + { + "kubelet_config": [], + "linux_os_config": [], + "node_labels": {}, + "node_taints": [], + "tags": {}, + "upgrade_settings": [], + "zones": [] + } + ], + "http_proxy_config": [], + "identity": [ + { + "identity_ids": [] + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": true, + "kube_admin_config_raw": true, + "kube_config": true, + "kube_config_raw": true, + "kubelet_identity": [ + {} + ], + "linux_profile": [], + "maintenance_window": [], + "microsoft_defender": [], + "network_profile": [ + { + "ip_versions": [ + false + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + false + ], + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [] + } + ], + "nat_gateway_profile": [] + } + ], + "oms_agent": [], + "service_principal": [], + "tags": {}, + "windows_profile": [] + } + } + }, + { + "address": "azurerm_resource_group.aks-resource-group", + "mode": "managed", + "type": "azurerm_resource_group", + "name": "aks-resource-group", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "location": "westus3", + "name": "o2bionics-products", + "tags": {}, + "timeouts": null + }, + "after": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "location": "westus3", + "name": "o2bionics-products", + "tags": {}, + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": { + "tags": {} + }, + "after_sensitive": { + "tags": {} + } + } + }, + { + "address": "azurerm_role_assignment.current", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleAssignments/a964cad9-e2af-c584-abeb-260ba07b73d4", + "name": "a964cad9-e2af-c584-abeb-260ba07b73d4", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "role_definition_name": "Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleAssignments/a964cad9-e2af-c584-abeb-260ba07b73d4", + "name": "a964cad9-e2af-c584-abeb-260ba07b73d4", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "role_definition_name": "Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": {}, + "after_sensitive": {} + } + }, + { + "address": "azurerm_role_assignment.main", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com/providers/Microsoft.Authorization/roleAssignments/1e321e91-e008-911f-1259-daaa91498ded", + "name": "1e321e91-e008-911f-1259-daaa91498ded", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314", + "role_definition_name": "DNS Zone Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com/providers/Microsoft.Authorization/roleAssignments/1e321e91-e008-911f-1259-daaa91498ded", + "name": "1e321e91-e008-911f-1259-daaa91498ded", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314", + "role_definition_name": "DNS Zone Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": {}, + "after_sensitive": {} + } + }, + { + "address": "azurerm_role_assignment.reader", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "reader", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Authorization/roleAssignments/2790a8c2-19c3-bd19-676e-be62e078963a", + "name": "2790a8c2-19c3-bd19-676e-be62e078963a", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", + "role_definition_name": "Reader", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Authorization/roleAssignments/2790a8c2-19c3-bd19-676e-be62e078963a", + "name": "2790a8c2-19c3-bd19-676e-be62e078963a", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", + "role_definition_name": "Reader", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": {}, + "after_sensitive": {} + } + }, + { + "address": "azurerm_role_assignment.role-acrpull", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "role-acrpull", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen/providers/Microsoft.Authorization/roleAssignments/88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "name": "88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "principal_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d", + "role_definition_name": "AcrPull", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen/providers/Microsoft.Authorization/roleAssignments/88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "name": "88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "principal_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d", + "role_definition_name": "AcrPull", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": {}, + "after_sensitive": {} + } + }, + { + "address": "helm_release.aad-pod-identity", + "mode": "managed", + "type": "helm_release", + "name": "aad-pod-identity", + "provider_name": "registry.terraform.io/hashicorp/helm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "atomic": false, + "chart": "aad-pod-identity", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "aad-pod-identity", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.8.12", + "chart": "aad-pod-identity", + "name": "aad-pod-identity", + "namespace": "kube-system", + "revision": 1, + "values": "null", + "version": "4.1.13" + } + ], + "name": "aad-pod-identity", + "namespace": "kube-system", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.13", + "wait": true, + "wait_for_jobs": false + }, + "after": { + "atomic": false, + "chart": "aad-pod-identity", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "aad-pod-identity", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.8.12", + "chart": "aad-pod-identity", + "name": "aad-pod-identity", + "namespace": "kube-system", + "revision": 1, + "values": "null", + "version": "4.1.13" + } + ], + "name": "aad-pod-identity", + "namespace": "kube-system", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.13", + "wait": true, + "wait_for_jobs": false + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [], + "set_sensitive": [] + }, + "after_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [], + "set_sensitive": [] + } + } + }, + { + "address": "helm_release.cert-manager", + "mode": "managed", + "type": "helm_release", + "name": "cert-manager", + "provider_name": "registry.terraform.io/hashicorp/helm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "cert-manager", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.6.1", + "chart": "cert-manager", + "name": "cert-manager", + "namespace": "cert-manager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.6.1" + } + ], + "name": "cert-manager", + "namespace": "cert-manager", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.6.1", + "wait": true, + "wait_for_jobs": false + }, + "after": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "cert-manager", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.6.1", + "chart": "cert-manager", + "name": "cert-manager", + "namespace": "cert-manager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.6.1" + } + ], + "name": "cert-manager", + "namespace": "cert-manager", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.6.1", + "wait": true, + "wait_for_jobs": false + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [ + {} + ], + "set_sensitive": [] + }, + "after_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [ + {} + ], + "set_sensitive": [] + } + } + }, + { + "address": "helm_release.external-dns", + "mode": "managed", + "type": "helm_release", + "name": "external-dns", + "provider_name": "registry.terraform.io/hashicorp/helm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "atomic": false, + "chart": "external-dns", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "external-dns", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.12.2", + "chart": "external-dns", + "name": "external-dns", + "namespace": "external-dns", + "revision": 1, + "values": "{\"azure\":{\"aadClientId\":\"4acf4b9b-9507-44ae-83ff-43a8b0a2d45e\",\"aadClientSecret\":\"xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb\",\"resourceGroup\":\"o2bionics-products\",\"subscriptionId\":\"/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04\",\"tenantId\":\"f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6\"},\"logLevel\":\"debug\",\"policy\":\"sync\",\"provider\":\"azure\",\"txtOwnerId\":\"o2nextgen-aks\"}", + "version": "6.10.0" + } + ], + "name": "external-dns", + "namespace": "external-dns", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.bitnami.com/bitnami", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "azure.aadClientId", + "type": "", + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e" + }, + { + "name": "azure.aadClientSecret", + "type": "", + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + { + "name": "azure.resourceGroup", + "type": "", + "value": "o2bionics-products" + }, + { + "name": "azure.subscriptionId", + "type": "", + "value": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04" + }, + { + "name": "azure.tenantId", + "type": "", + "value": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" + }, + { + "name": "logLevel", + "type": "", + "value": "debug" + }, + { + "name": "policy", + "type": "", + "value": "sync" + }, + { + "name": "provider", + "type": "", + "value": "azure" + }, + { + "name": "txtOwnerId", + "type": "", + "value": "o2nextgen-aks" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "6.10.0", + "wait": true, + "wait_for_jobs": false + }, + "after": { + "atomic": false, + "chart": "external-dns", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "external-dns", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.12.2", + "chart": "external-dns", + "name": "external-dns", + "namespace": "external-dns", + "revision": 1, + "values": "{\"azure\":{\"aadClientId\":\"4acf4b9b-9507-44ae-83ff-43a8b0a2d45e\",\"aadClientSecret\":\"xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb\",\"resourceGroup\":\"o2bionics-products\",\"subscriptionId\":\"/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04\",\"tenantId\":\"f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6\"},\"logLevel\":\"debug\",\"policy\":\"sync\",\"provider\":\"azure\",\"txtOwnerId\":\"o2nextgen-aks\"}", + "version": "6.10.0" + } + ], + "name": "external-dns", + "namespace": "external-dns", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.bitnami.com/bitnami", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "azure.aadClientId", + "type": "", + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e" + }, + { + "name": "azure.aadClientSecret", + "type": "", + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + { + "name": "azure.resourceGroup", + "type": "", + "value": "o2bionics-products" + }, + { + "name": "azure.subscriptionId", + "type": "", + "value": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04" + }, + { + "name": "azure.tenantId", + "type": "", + "value": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" + }, + { + "name": "logLevel", + "type": "", + "value": "debug" + }, + { + "name": "policy", + "type": "", + "value": "sync" + }, + { + "name": "provider", + "type": "", + "value": "azure" + }, + { + "name": "txtOwnerId", + "type": "", + "value": "o2nextgen-aks" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "6.10.0", + "wait": true, + "wait_for_jobs": false + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": true, + "set_sensitive": [] + }, + "after_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": true, + "set_sensitive": [] + } + } + }, + { + "address": "helm_release.nginx-ingress-controller", + "mode": "managed", + "type": "helm_release", + "name": "nginx-ingress-controller", + "provider_name": "registry.terraform.io/hashicorp/helm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "atomic": false, + "chart": "ingress-nginx", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "nginx-ingress-controller", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.2.1", + "chart": "ingress-nginx", + "name": "nginx-ingress-controller", + "namespace": "ingress", + "revision": 1, + "values": "{\"controller\":{\"autoscaling\":{\"enabled\":true,\"maxReplicas\":2,\"minReplicas\":1},\"service\":{\"type\":\"LoadBalancer\"}}}", + "version": "4.1.3" + } + ], + "name": "nginx-ingress-controller", + "namespace": "ingress", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://kubernetes.github.io/ingress-nginx", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "controller.autoscaling.enabled", + "type": "", + "value": "true" + }, + { + "name": "controller.autoscaling.maxReplicas", + "type": "", + "value": "2" + }, + { + "name": "controller.autoscaling.minReplicas", + "type": "", + "value": "1" + }, + { + "name": "controller.service.type", + "type": "", + "value": "LoadBalancer" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.3", + "wait": true, + "wait_for_jobs": false + }, + "after": { + "atomic": false, + "chart": "ingress-nginx", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "nginx-ingress-controller", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.2.1", + "chart": "ingress-nginx", + "name": "nginx-ingress-controller", + "namespace": "ingress", + "revision": 1, + "values": "{\"controller\":{\"autoscaling\":{\"enabled\":true,\"maxReplicas\":2,\"minReplicas\":1},\"service\":{\"type\":\"LoadBalancer\"}}}", + "version": "4.1.3" + } + ], + "name": "nginx-ingress-controller", + "namespace": "ingress", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://kubernetes.github.io/ingress-nginx", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "controller.autoscaling.enabled", + "type": "", + "value": "true" + }, + { + "name": "controller.autoscaling.maxReplicas", + "type": "", + "value": "2" + }, + { + "name": "controller.autoscaling.minReplicas", + "type": "", + "value": "1" + }, + { + "name": "controller.service.type", + "type": "", + "value": "LoadBalancer" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.3", + "wait": true, + "wait_for_jobs": false + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [ + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + }, + "after_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [ + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + } + } + }, + { + "address": "helm_release.o2bus-webapp", + "mode": "managed", + "type": "helm_release", + "name": "o2bus-webapp", + "provider_name": "registry.terraform.io/hashicorp/helm", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "atomic": false, + "chart": "o2bus-webapp", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "keyring": null, + "lint": false, + "max_history": 0, + "name": "o2bus-webapp", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "after_unknown": { + "id": true, + "manifest": true, + "metadata": true, + "postrender": [], + "set": [], + "set_sensitive": [] + }, + "before_sensitive": false, + "after_sensitive": { + "metadata": [], + "postrender": [], + "repository_password": true, + "set": [], + "set_sensitive": [] + } + } + }, + { + "address": "helm_release.o2nextgen-auth", + "mode": "managed", + "type": "helm_release", + "name": "o2nextgen-auth", + "provider_name": "registry.terraform.io/hashicorp/helm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "atomic": false, + "chart": "o2nextgen-auth", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "o2nextgen-auth", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.16.0", + "chart": "o2nextgen-auth", + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "revision": 1, + "values": "null", + "version": "0.1.0" + } + ], + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "after": { + "atomic": false, + "chart": "o2nextgen-auth", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "o2nextgen-auth", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.16.0", + "chart": "o2nextgen-auth", + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "revision": 1, + "values": "null", + "version": "0.1.0" + } + ], + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [], + "set_sensitive": [] + }, + "after_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [], + "set_sensitive": [] + } + } + }, + { + "address": "helm_release.prometheus-stack", + "mode": "managed", + "type": "helm_release", + "name": "prometheus-stack", + "provider_name": "registry.terraform.io/hashicorp/helm", + "change": { + "actions": [ + "no-op" + ], + "before": { + "atomic": false, + "chart": "kube-prometheus-stack", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "prometheus-stack", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.59.1", + "chart": "kube-prometheus-stack", + "name": "prometheus-stack", + "namespace": "monitoring", + "revision": 1, + "values": "{\"grafana\":{\"adminPassword\":\"grafana-pass\",\"adminUser\":\"grafana\",\"ingress\":{\"annotations\":{\"nginx.ingress.kubernetes.io/rewrite-target\":\"/$1\",\"nginx.ingress.kubernetes.io/ssl-redirect\":\"false\",\"nginx.ingress.kubernetes.io/use-regex\":\"true\"},\"enabled\":true,\"ingressClassName\":\"nginx\",\"path\":\"/(.*)\"}}}", + "version": "40.1.2" + } + ], + "name": "prometheus-stack", + "namespace": "monitoring", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://prometheus-community.github.io/helm-charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "grafana.adminPassword", + "type": "", + "value": "grafana-pass" + }, + { + "name": "grafana.adminUser", + "type": "", + "value": "grafana" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target", + "type": "", + "value": "/$1" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect", + "type": "string", + "value": "false" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex", + "type": "string", + "value": "true" + }, + { + "name": "grafana.ingress.enabled", + "type": "", + "value": "true" + }, + { + "name": "grafana.ingress.ingressClassName", + "type": "", + "value": "nginx" + }, + { + "name": "grafana.ingress.path", + "type": "", + "value": "/(.*)" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "40.1.2", + "wait": true, + "wait_for_jobs": false + }, + "after": { + "atomic": false, + "chart": "kube-prometheus-stack", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "prometheus-stack", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.59.1", + "chart": "kube-prometheus-stack", + "name": "prometheus-stack", + "namespace": "monitoring", + "revision": 1, + "values": "{\"grafana\":{\"adminPassword\":\"grafana-pass\",\"adminUser\":\"grafana\",\"ingress\":{\"annotations\":{\"nginx.ingress.kubernetes.io/rewrite-target\":\"/$1\",\"nginx.ingress.kubernetes.io/ssl-redirect\":\"false\",\"nginx.ingress.kubernetes.io/use-regex\":\"true\"},\"enabled\":true,\"ingressClassName\":\"nginx\",\"path\":\"/(.*)\"}}}", + "version": "40.1.2" + } + ], + "name": "prometheus-stack", + "namespace": "monitoring", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://prometheus-community.github.io/helm-charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "grafana.adminPassword", + "type": "", + "value": "grafana-pass" + }, + { + "name": "grafana.adminUser", + "type": "", + "value": "grafana" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target", + "type": "", + "value": "/$1" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect", + "type": "string", + "value": "false" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex", + "type": "string", + "value": "true" + }, + { + "name": "grafana.ingress.enabled", + "type": "", + "value": "true" + }, + { + "name": "grafana.ingress.ingressClassName", + "type": "", + "value": "nginx" + }, + { + "name": "grafana.ingress.path", + "type": "", + "value": "/(.*)" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "40.1.2", + "wait": true, + "wait_for_jobs": false + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + }, + "after_sensitive": { + "metadata": [ + {} + ], + "postrender": [], + "repository_password": true, + "set": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + } + } + }, + { + "address": "kubernetes_namespace.dev", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "dev", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "apps-dev", + "metadata": [ + { + "annotations": { + "name": "apps-dev" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Development" + }, + "name": "apps-dev", + "resource_version": "1447", + "uid": "e7d1d0f0-539d-49f0-9ba1-f7a187586e94" + } + ], + "timeouts": null + }, + "after": { + "id": "apps-dev", + "metadata": [ + { + "annotations": { + "name": "apps-dev" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Development" + }, + "name": "apps-dev", + "resource_version": "1447", + "uid": "e7d1d0f0-539d-49f0-9ba1-f7a187586e94" + } + ], + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "after_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + } + }, + { + "address": "kubernetes_namespace.devops", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "devops", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "apps-devops", + "metadata": [ + { + "annotations": { + "name": "apps-devops" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Devops" + }, + "name": "apps-devops", + "resource_version": "1444", + "uid": "251115c5-d26c-4bd7-8af9-99c93da74b5a" + } + ], + "timeouts": null + }, + "after": { + "id": "apps-devops", + "metadata": [ + { + "annotations": { + "name": "apps-devops" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Devops" + }, + "name": "apps-devops", + "resource_version": "1444", + "uid": "251115c5-d26c-4bd7-8af9-99c93da74b5a" + } + ], + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "after_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + } + }, + { + "address": "kubernetes_namespace.prod", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "prod", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "apps-prod", + "metadata": [ + { + "annotations": { + "name": "apps-prod" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Production" + }, + "name": "apps-prod", + "resource_version": "1445", + "uid": "e76706f9-6aa6-405f-8c72-7afdfb423c05" + } + ], + "timeouts": null + }, + "after": { + "id": "apps-prod", + "metadata": [ + { + "annotations": { + "name": "apps-prod" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Production" + }, + "name": "apps-prod", + "resource_version": "1445", + "uid": "e76706f9-6aa6-405f-8c72-7afdfb423c05" + } + ], + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "after_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + } + }, + { + "address": "kubernetes_namespace.staging", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "staging", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "apps-staging", + "metadata": [ + { + "annotations": { + "name": "apps-staging" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Staging" + }, + "name": "apps-staging", + "resource_version": "1443", + "uid": "d5be15f9-8924-4415-9d7c-05b85a649510" + } + ], + "timeouts": null + }, + "after": { + "id": "apps-staging", + "metadata": [ + { + "annotations": { + "name": "apps-staging" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Staging" + }, + "name": "apps-staging", + "resource_version": "1443", + "uid": "d5be15f9-8924-4415-9d7c-05b85a649510" + } + ], + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "after_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + } + }, + { + "address": "kubernetes_namespace.tst", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "tst", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "apps-tst", + "metadata": [ + { + "annotations": { + "name": "apps-tst" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Test" + }, + "name": "apps-tst", + "resource_version": "1446", + "uid": "8001ed90-da14-41c5-a51b-6fe1464bc1a3" + } + ], + "timeouts": null + }, + "after": { + "id": "apps-tst", + "metadata": [ + { + "annotations": { + "name": "apps-tst" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Test" + }, + "name": "apps-tst", + "resource_version": "1446", + "uid": "8001ed90-da14-41c5-a51b-6fe1464bc1a3" + } + ], + "timeouts": null + }, + "after_unknown": {}, + "before_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "after_sensitive": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + } + } + } + ], + "output_changes": { + "client_id": { + "actions": [ + "no-op" + ], + "before": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "after": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "after_unknown": false, + "before_sensitive": false, + "after_sensitive": false + }, + "client_secret": { + "actions": [ + "no-op" + ], + "before": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb", + "after": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb", + "after_unknown": false, + "before_sensitive": true, + "after_sensitive": true + }, + "current_subscription_display_name": { + "actions": [ + "no-op" + ], + "before": "paid-subscription", + "after": "paid-subscription", + "after_unknown": false, + "before_sensitive": false, + "after_sensitive": false + }, + "display_name": { + "actions": [ + "no-op" + ], + "before": "External-DNS-SP", + "after": "External-DNS-SP", + "after_unknown": false, + "before_sensitive": false, + "after_sensitive": false + }, + "object_id": { + "actions": [ + "no-op" + ], + "before": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "after": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "after_unknown": false, + "before_sensitive": false, + "after_sensitive": false + } + }, + "prior_state": { + "format_version": "1.0", + "terraform_version": "1.2.9", + "values": { + "outputs": { + "client_id": { + "sensitive": false, + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "type": "string" + }, + "client_secret": { + "sensitive": true, + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb", + "type": "string" + }, + "current_subscription_display_name": { + "sensitive": false, + "value": "paid-subscription", + "type": "string" + }, + "display_name": { + "sensitive": false, + "value": "External-DNS-SP", + "type": "string" + }, + "object_id": { + "sensitive": false, + "value": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "type": "string" + } + }, + "root_module": { + "resources": [ + { + "address": "azuread_application.example", + "mode": "managed", + "type": "azuread_application", + "name": "example", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 1, + "values": { + "api": [ + { + "known_client_applications": [], + "mapped_claims_enabled": false, + "oauth2_permission_scope": [], + "requested_access_token_version": 1 + } + ], + "app_role": [], + "app_role_ids": {}, + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "device_only_auth_enabled": false, + "disabled_by_microsoft": "", + "display_name": "External-DNS-SP", + "fallback_public_client_enabled": false, + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "group_membership_claims": [], + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "identifier_uris": [], + "logo_image": "", + "logo_url": "", + "marketing_url": "", + "oauth2_permission_scope_ids": {}, + "oauth2_post_response_required": false, + "object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "prevent_duplicate_names": false, + "privacy_statement_url": "", + "public_client": [ + { + "redirect_uris": [] + } + ], + "publisher_domain": "o2bionicshotmail.onmicrosoft.com", + "required_resource_access": [], + "sign_in_audience": "AzureADMyOrg", + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "support_url": "", + "tags": [], + "template_id": "", + "terms_of_service_url": "", + "timeouts": null, + "web": [ + { + "homepage_url": "", + "implicit_grant": [ + { + "access_token_issuance_enabled": false, + "id_token_issuance_enabled": false + } + ], + "logout_url": "", + "redirect_uris": [] + } + ] + }, + "sensitive_values": { + "api": [ + { + "known_client_applications": [], + "oauth2_permission_scope": [] + } + ], + "app_role": [], + "app_role_ids": {}, + "feature_tags": [ + {} + ], + "group_membership_claims": [], + "identifier_uris": [], + "oauth2_permission_scope_ids": {}, + "optional_claims": [ + { + "access_token": [], + "id_token": [], + "saml2_token": [] + } + ], + "owners": [ + false + ], + "public_client": [ + { + "redirect_uris": [] + } + ], + "required_resource_access": [], + "single_page_application": [ + { + "redirect_uris": [] + } + ], + "tags": [], + "web": [ + { + "implicit_grant": [ + {} + ], + "redirect_uris": [] + } + ] + }, + "depends_on": [ + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + }, + { + "address": "azuread_application_password.current", + "mode": "managed", + "type": "azuread_application_password", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 1, + "values": { + "application_object_id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9", + "display_name": null, + "end_date": "2024-09-27T23:44:40Z", + "end_date_relative": null, + "id": "b414f0b5-5546-4f76-ae08-8fea6cbce5b9/password/6c924c19-e789-4549-a35a-b09cfc673d66", + "key_id": "6c924c19-e789-4549-a35a-b09cfc673d66", + "rotate_when_changed": null, + "start_date": "2022-09-27T23:44:40Z", + "timeouts": null, + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + "sensitive_values": {}, + "depends_on": [ + "azuread_application.example", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + }, + { + "address": "azuread_service_principal.current", + "mode": "managed", + "type": "azuread_service_principal", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 0, + "values": { + "account_enabled": true, + "alternative_names": [], + "app_role_assignment_required": false, + "app_role_ids": {}, + "app_roles": [], + "application_id": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e", + "application_tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "description": "", + "display_name": "External-DNS-SP", + "feature_tags": [ + { + "custom_single_sign_on": false, + "enterprise": false, + "gallery": false, + "hide": false + } + ], + "features": [ + { + "custom_single_sign_on_app": false, + "enterprise_application": false, + "gallery_application": false, + "visible_to_users": true + } + ], + "homepage_url": "", + "id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "login_url": "", + "logout_url": "", + "notes": "", + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "object_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "owners": [ + "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0" + ], + "preferred_single_sign_on_mode": "", + "redirect_uris": [], + "saml_metadata_url": "", + "saml_single_sign_on": [ + { + "relay_state": "" + } + ], + "service_principal_names": [], + "sign_in_audience": "AzureADMyOrg", + "tags": [], + "timeouts": null, + "type": "Application", + "use_existing": null + }, + "sensitive_values": { + "alternative_names": [], + "app_role_ids": {}, + "app_roles": [], + "feature_tags": [ + {} + ], + "features": [ + {} + ], + "notification_email_addresses": [], + "oauth2_permission_scope_ids": {}, + "oauth2_permission_scopes": [], + "owners": [ + false + ], + "redirect_uris": [], + "saml_single_sign_on": [ + {} + ], + "service_principal_names": [], + "tags": [] + }, + "depends_on": [ + "azuread_application.example", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + }, + { + "address": "azurerm_container_registry.o2nextgen-aks-acr", + "mode": "managed", + "type": "azurerm_container_registry", + "name": "o2nextgen-aks-acr", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 2, + "values": { + "admin_enabled": false, + "admin_password": "", + "admin_username": "", + "anonymous_pull_enabled": false, + "data_endpoint_enabled": false, + "encryption": [ + { + "enabled": false, + "identity_client_id": "", + "key_vault_key_id": "" + } + ], + "export_policy_enabled": true, + "georeplications": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "identity": [], + "location": "westus3", + "login_server": "o2nextgen.azurecr.io", + "name": "o2nextgen", + "network_rule_bypass_option": "AzureServices", + "network_rule_set": [], + "public_network_access_enabled": true, + "quarantine_policy_enabled": false, + "resource_group_name": "o2bionics-products", + "retention_policy": [ + { + "days": 7, + "enabled": false + } + ], + "sku": "Standard", + "tags": {}, + "timeouts": null, + "trust_policy": [ + { + "enabled": false + } + ], + "zone_redundancy_enabled": false + }, + "sensitive_values": { + "encryption": [ + {} + ], + "georeplications": [], + "identity": [], + "network_rule_set": [], + "retention_policy": [ + {} + ], + "tags": {}, + "trust_policy": [ + {} + ] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "azurerm_dns_zone.primary-dns-zone", + "mode": "managed", + "type": "azurerm_dns_zone", + "name": "primary-dns-zone", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 1, + "values": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "max_number_of_record_sets": 10000, + "name": "o2bus.com", + "name_servers": [ + "ns1-32.azure-dns.com.", + "ns2-32.azure-dns.net.", + "ns3-32.azure-dns.org.", + "ns4-32.azure-dns.info." + ], + "number_of_record_sets": 4, + "resource_group_name": "o2bionics-products", + "soa_record": [ + { + "email": "azuredns-hostmaster.microsoft.com", + "expire_time": 2419200, + "fqdn": "o2bus.com.", + "host_name": "ns1-32.azure-dns.com.", + "minimum_ttl": 300, + "refresh_time": 3600, + "retry_time": 300, + "serial_number": 1, + "tags": {}, + "ttl": 3600 + } + ], + "tags": { + "product": "O2NextGen Platform", + "type_product": "Saas" + }, + "timeouts": null + }, + "sensitive_values": { + "name_servers": [ + false, + false, + false, + false + ], + "soa_record": [ + { + "tags": {} + } + ], + "tags": {} + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "azurerm_kubernetes_cluster.o2nextgen-aks", + "mode": "managed", + "type": "azurerm_kubernetes_cluster", + "name": "o2nextgen-aks", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 2, + "values": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "automatic_channel_upgrade": "", + "azure_active_directory_role_based_access_control": [], + "azure_policy_enabled": false, + "default_node_pool": [ + { + "capacity_reservation_group_id": "", + "enable_auto_scaling": false, + "enable_host_encryption": false, + "enable_node_public_ip": false, + "fips_enabled": false, + "host_group_id": "", + "kubelet_config": [], + "kubelet_disk_type": "OS", + "linux_os_config": [], + "max_count": 0, + "max_pods": 110, + "min_count": 0, + "name": "system", + "node_count": 1, + "node_labels": {}, + "node_public_ip_prefix_id": "", + "node_taints": [], + "only_critical_addons_enabled": false, + "orchestrator_version": "", + "os_disk_size_gb": 128, + "os_disk_type": "Managed", + "os_sku": "Ubuntu", + "pod_subnet_id": "", + "proximity_placement_group_id": "", + "tags": {}, + "type": "VirtualMachineScaleSets", + "ultra_ssd_enabled": false, + "upgrade_settings": [], + "vm_size": "Standard_D2_v2", + "vnet_subnet_id": "", + "zones": [] + } + ], + "disk_encryption_set_id": "", + "dns_prefix": "aks", + "dns_prefix_private_cluster": "", + "edge_zone": "", + "enable_pod_security_policy": false, + "fqdn": "aks-62baec49.hcp.westus3.azmk8s.io", + "http_application_routing_enabled": false, + "http_application_routing_zone_name": "", + "http_proxy_config": [], + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerService/managedClusters/o2nextgen-aks", + "identity": [ + { + "identity_ids": [], + "principal_id": "673d7ee5-59e9-4177-893a-154bf2411e58", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "type": "SystemAssigned" + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_admin_config_raw": "", + "kube_config": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "https://aks-62baec49.hcp.westus3.azmk8s.io:443", + "password": "85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf", + "username": "clusterUser_o2bionics-products_o2nextgen-aks" + } + ], + "kube_config_raw": "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU2VENDQXRHZ0F3SUJBZ0lSQUsvc2xaV1hRaytINStDcFhKUmtQTmd3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpJd09USTNNak16TVRFd1doZ1BNakExTWpBNU1qY3lNelF4TVRCYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCndEQ2dpdmNEUHNWY2R2TjI2bTlLTjJHTnBkck1XMk9mUG05V0cwMjlEbGNwNkNOUmVZY2o1K0lYOUZacXVWLysKS1B1OGRZTW14VldpKzhGQkpwT0RYbzBWSks3czdNLzBmdlNKNGpYQ0R1Rjl3NUVQMDNJU3BQTTBHTTRCMEVTWQpLMm93eCsrWC9jcE9iTVlQaUYxOTd3TnZWRkVsdHUxd3AwYU5vOWZDdjR6bDBOQ21FTk0wNXUwNEltY1lUQzY1CkRIMFdidzExRWxUcUplMHM5ZFBkZk8xM1gvNWZ2RWg5YldNRzMwaVNOWGJqYnF3UFZXQk94S2RQc1RYUlhlalIKM29xZ1pqdW5jbTZCcytEenJyOGdvVjNsYWZjUno5ODQ3Tk5xVjFzdTdMWmExdjlyRXBkd2h4NUV1VFV4Yk1URgpEVWJkZW45eGUrU1E4YVBYU2ZSMUdmYUZ2ekttckNQb1Btd0lRUXdyRXdrY1VjOUQvQWlXdUJDZUhpTllLbkQ2CmllN2FJbkpWSGhuVTE5d0creE5ZOXFaSFhSQnpXUCtKU1NFZE42LzlSaVlMWVdFbFBYVFVqUGhPcE5KalpQaUIKR2VhZTZSN2ZDYUdNc0dkMndPcFljd2prZTM0MzMzK2ZhNnZiekw0RURueEg1VlptajBUeTY3SlIwdU5UeEhCMQpFbmczUk5OMnBwcFVLNWl6UmNxckgreVhyQmxzV3JzTTVrNW9HL0tkUkQrSVpkUG0rQ29oUlNDOGpPMGRPK1MrCjA4WnJoK2ZtbHU1R0RjS0JyL2tNR29nSTZ5UU9rQ28zdlR5UVZLWEh2T0xaOVg5c0VUNnJ3dkRNc0VWQTJLTVQKR05JN21LSU41NEJKUGdmbzlxdk5PaExCcjBnRkFXTHlTeFdLekFFOGxpY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQTdWU0gvRmMzT0RZam1tCmpGRkxyeDgrMkdwYk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmdDSTNpSjhUWHZkdWZCTUt1cjBHM2UrblkKUDFGZUVNbmxNa1VQT3VYN2pFT092cG1zRnR5ZlhjUjVEN1FqTEJhRis1S3FQKzNVbld5bWczeFlPaEZIMkhMZAo3VmtjazlWZVBRNlFlOXYvUmlOK1Z4NG4vZjlBT2VHemVrV29uaEcwemVlZ2RDUFN3VkZCQjlaR0l2SGR0Y2VPCmZzTldzWjAyd01MckJReml1djdyUGFTVjVaallFOVNEd2tMMG1ielNpRzZoUW1ndDV2blR4UVpVbmNWamRtUVAKNklteE4vaXF0VHhrV0pMbk13alYyY0NZV0UrNGlxdXVnbzdERFNtSFNIRytwMXBHL1NzaVdXZEJ6ck1GVDJOdQpuWitiKzU4QVFuRllKZWZzd2V0WVUzdE1mU21TOE0wTFFNYTdmWHc0dWpDOXV2Nm9IRnNqeFloTmFzdDExMmQ2CmhhcFUwUWc5c0djZ2NVV2dWVjF1Q3d0ZGI5b1JsV0VFd0ptVjluVDJsVkZHTU5JRGlnakJMZGRmUmR4cWJlc2YKL0N5bWJDbEI4QnRrNGR3WmY1UFNBLzROamZXN2ZMNHQ2ZVl3Umo5YllRV21jeVFtbnlhK1MyZGdkakhZVkFmcgpCa0Ryd1BXbTN6VjRNa1E0MGxBc1lkZCtUVGR3TE04aHZwOTAwUDJ2Z1pCZEkrRjFhKzNidEZFemZiTFk1V3lpCnoyL2wwL2MrdWFPRjBoWTZidW4vNDFTTjB3emMrdGVtNTRNRjFQMlNmdy9Pdm9ZbmdyZEVTRmFka2o0SDMwWlcKLytvRFVsRkxpcHEzUEJ3bnR2MCt1QXAwU1J4dWRHeG9KQ2NlV0hkTm41cmZRbW14dFZQRzEyazRLdTdXQlVBcwpYcks3NGp6b25vTjlFNllsUHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://aks-62baec49.hcp.westus3.azmk8s.io:443\n name: o2nextgen-aks\ncontexts:\n- context:\n cluster: o2nextgen-aks\n user: clusterUser_o2bionics-products_o2nextgen-aks\n name: o2nextgen-aks\ncurrent-context: o2nextgen-aks\nkind: Config\npreferences: {}\nusers:\n- name: clusterUser_o2bionics-products_o2nextgen-aks\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZIVENDQXdXZ0F3SUJBZ0lRRWk4VS9rQ0hyd1dCRTNTbExqNEdaREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TWpBNU1qY3lNek14TVRCYUZ3MHlOREE1TWpjeU16UXhNVEJhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURBUC9JVTNxK0pwUS9FTXVudTdqaEEKd1VYdXVFcmxIZHZMM2tFc1RBUmdnNEhyK1ZVYkFaMEZqQmRsK0hqQ002SThoczBmM3VVS0ZWU2lkNWZqN3A4dAp3bzlSOHJid24vd2lxTmJoRWh3Y0dDWTN6czQ0MVo3a0k4VmtBRnE4bWtQdHhCbnRPNUhQWS9IZ3p5ZEFlUUo3CjRVSXNzN1RkMitDYTQxbmZ1dGtiNkdrazJraXcxSVZ2MG12NlkwUkptTlpja0V1N092NFdlQU5DRDNZTERRcjkKZGUxZnA5eCtOS21uNFlmR0FUeW5zMzJiR3h6azhRQTVwcXlmUzJ4elF6YmZjVmNiaEN1UU9Ddm5RUE1CRGZFSApxd0hSbmh0aE4wbHpBR0dOWUZ1d2owZ1pCM3N5Y3FRUjhGNDh4eGJ5alEvUkJ2SkJVUXFSVnRrem9MdWJVR0FLCjlmeWtvNXRYb0dsNGFSbjdkT09HdVBTZXpHREJxN3FHTFRXZDloWUx0Y0VNaUFlSmZQSHNVTUs3Vk1Ka2FGRlEKd0xkYktiRzFYaHFkTnRseTBkY0pGQkZ3eDVkY2tJTDBJZlZQYXBGdUdjdmVCZlQ4Vk5IUWVxVXRnWEVXak5OWQpKVnlsS2hEMStKTjZTb0ZSd0hSelo2L3Jpa0FkcEFubEQvT2s4ZmdQS1I5TmE5VXpTMmhtbTVNUkd2WFgwN05DCjNiZTZJMXlpcStuOFlTbnRodzV4WTEvOTVrTUF2ZG5UNTdmbm8vbVIwS1lLWXhlaTRkeFZtOXhOYk5WWlNmSVoKWXpqeTRNYzJPNllyYWU3NzBxRzhQTU03R0dXZSsxTVc2NktRT2o4VFhjejhOM0paaWVyMDQyU2F1MTAyOHZJZwpxUGtCQlo0UFNiQWp1UVR3YzNmdld3SURBUUFCbzFZd1ZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFPMVVoL3hYTnoKZzJJNXBveFJTNjhmUHRocVd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZbWJ0aGxRWTRMaFoveTN2dkM2ZApvNG0ycWRjdGoyaFZIUjl1VERtbExtVFQxRE4xYmIzYzNrQmhxQWlIWnNvVUc2M0R6cmtsbmNtVXdWUTFmbUF6Ck5pZmt5aDhNQnc3Y3JuL3RSbmY2bEI4Z2FoRm9kMFBhcElYV1VQcXlTa1VjRUN1SGZPNDY5VXZpeEowelpPa2wKRTdDMU41aHJ3ekc2cVBkWGJEaW5tRHdKSTFHS2pCd2RIUU0rTEJMODFSd1ZUZkZ0WTdFMWdBZEp2YUE0V3dVdQpNdzlQYnR4ZGN1ZnBuZkltRjB1M3AvL2VNT094cVgvOWRxOUVjSzZEZEoxQUp3ZGE1NHJCMUNQQjI3L1BJcWV4CkRUa25hM083RnVNaXhjOHlqUC9nczlUZGtSS1lYRCtIRUZHdUhYOE5DdFpRTjRIc3VpSk5jbHZWUStZbDFrUFQKeENxb3VseFZ5SW9FVjM5Zmp3RlE0c3JHckV1QXBvbzA5N245UTBhUHpocnJmR0Z5cGZteXZjSk03aER4T3I5TgoycG1uU1NycDJtK1NpTGNyQnBkcktIZzN0a0xpVWE4bGxrWU92ZCtXcFJZZlgzZUNpSDZJeWtBU2FqS2Q5dEdMClQ4U3dkN2JnM1BKM09TY3pKL0RhTkgvVEJNTlh3ZVRzT2c0aUZBNUNUQjk3SmNhek9wQWt4Q2ZlcFFXYzVwYkwKNmx3cUh0dVRSbHYwbTdYSjZUWGFLSkFZdXpGNkJLV3NGM3V6RVY4T3lEaXJpMVhUYkQrOE5FWXNMMER5VEl3UwpoTmpHd1dVSVBJeFFqL1l5ZHgzUDRLcVd4UHBzT1ZnVkNnWWE5WHdXR2tQTXBNSERlR2NQUlNxejhOcHh4eGxLCmtVcHhXNHdWUkYrMEVzV3Qxa2tYT3lrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBd0QveUZONnZpYVVQeERMcDd1NDRRTUZGN3JoSzVSM2J5OTVCTEV3RVlJT0I2L2xWCkd3R2RCWXdYWmZoNHdqT2lQSWJOSDk3bENoVlVvbmVYNCs2ZkxjS1BVZksyOEovOElxalc0UkljSEJnbU44N08KT05XZTVDUEZaQUJhdkpwRDdjUVo3VHVSejJQeDRNOG5RSGtDZStGQ0xMTzAzZHZnbXVOWjM3clpHK2hwSk5wSQpzTlNGYjlKcittTkVTWmpXWEpCTHV6citGbmdEUWc5MkN3MEsvWFh0WDZmY2ZqU3BwK0dIeGdFOHA3TjlteHNjCjVQRUFPYWFzbjB0c2MwTTIzM0ZYRzRRcmtEZ3I1MER6QVEzeEI2c0IwWjRiWVRkSmN3QmhqV0Jic0k5SUdRZDcKTW5La0VmQmVQTWNXOG8wUDBRYnlRVkVLa1ZiWk02QzdtMUJnQ3ZYOHBLT2JWNkJwZUdrWiszVGpocmowbnN4Zwp3YXU2aGkwMW5mWVdDN1hCRElnSGlYeng3RkRDdTFUQ1pHaFJVTUMzV3lteHRWNGFuVGJaY3RIWENSUVJjTWVYClhKQ0M5Q0gxVDJxUmJobkwzZ1gwL0ZUUjBIcWxMWUZ4Rm96VFdDVmNwU29ROWZpVGVrcUJVY0IwYzJldjY0cEEKSGFRSjVRL3pwUEg0RHlrZlRXdlZNMHRvWnB1VEVScjExOU96UXQyM3VpTmNvcXZwL0dFcDdZY09jV05mL2VaRApBTDNaMCtlMzU2UDVrZENtQ21NWG91SGNWWnZjVFd6VldVbnlHV000OHVESE5qdW1LMm51KzlLaHZEekRPeGhsCm52dFRGdXVpa0RvL0UxM00vRGR5V1lucTlPTmttcnRkTnZMeUlLajVBUVdlRDBtd0k3a0U4SE4zNzFzQ0F3RUEKQVFLQ0FnRUFuS0Q4aUFoTmw2VUZUV0gxdVpZWCtwbjhjZHR3R1c3VUxpcXJpbjE4YTIxNUlsb0cvbk80REZidwprVUY0a1RBa0U0LzMrdWxNVFlUSGFYNXFIMmZBQkRZcE1paSs1eGhSQWFQeFBYblZzUVh6elRBT1Q3dXJNay82CmQ5amFGQ0xUQ1JubHphUGt6Y1N0d2V6RUhBRDdCeGFsSldwY0J3MG0xc28zNU5HRUpQcWEvMDFnUDhGRjNhN2cKRGlWbDgxZ3ovVUlLa1VZazBRV0NFZ1lxdENJeVBBSWlIUGJUNjNiWWFsQ1NuNzFPUDRzNjRHMmNndUhldnhtTwpObEhxejVXSlZVNHdHOWo0N1F6MnAvZ0FnM0ZxV0ViNHVtRklDVkpUNHdBQ2VuNXc5VTRtL1UxZEQrTGF6VXE2ClhHWVB5aGtuTTdPbkY1UUJPaHc1NVpna2dRdGcwdUo4T1JFbWU5NFVXRitoSEh0bDlDNzNIa3AydC9JT3pyNEsKMWNQcXo3RG5FSm9vaS82d3k5R2xOMStWK1VRV0oxaFZ1a21UazlOY0V2QmdQZmtUV0QvbENoVTJxd1B4WWtObwppelJFYlUrOWVtUWo5TkxRdmllTmJncURweWJUVmVLR2pRUGpCRy9RdUpBUGlaektDd1dKMWdzeE56Um45WG1VClprS2NKVTc1UW4yem8wWCtJTXJWZkdKaklEUjNMdE5jTG5BamdYMm4vS3NnMlorcmxOS3FBQld0Mk1MWkc3c24KSHZISHE4SExjdWhDSjdmOUg3NVFnMUsrQlovejVsWWNJUHhxbFBZcm1UeGEwSzlQWGhkTVdQOGF1c2J1Qk94TgpHZHpmck1KT1Y4YWszS1NwYklVRmpwY1hkOTVaQy9lajZWTG0zK3JWa3oxeExTL1VoQUVDZ2dFQkFQR2NUWWUzCnBIUm56YXJ2aGg5aFZ5SStGeVpscDMwRGtyZXkzclovMU1ySnRwcWFrdXpick9jNmhQZWVZSmswNmlQV1lzUnIKbGpZaHg3cVBSUnV2eGpPQXdwRisxck9JcTBHT3VkR2s5R1NUNTZaREZZM09KbFhrTU1QeXRqdlM2NFh4WmlFVgoyRERDdTZmeFJFbHN0M1VYdDJlUzI5ODFZYkdTVmFQd1ExYW5MSS9VejcvdGxUcG9TUUxzclM4RGJzT2ZGTkFECkJ0SUY0YWtuRHo5eWp4QXI4MEZsQnN6M25CdVEvb1VXZzdqcHJYb3h3eDVmN0JGanZkbE0za3R3ekZmQngxR2EKOG1PSnVDdjRVT3c4cFhCcGNZaHUxZDBHYmk5bG02a0dkamFucDdrUHVaN3hqOG9sWmZDMFo1S2FRNVNjcjE4dApUYldIV1NhWklCWXE0RnNDZ2dFQkFNdXpFVWkvMTJXVUVqQ3BmbjA1ZHRkQ3Nud2VvTDRUMnh1MS9mb0Q0SlE2CnJESFVKbzlWelVDQlJrbVhkcVhRUWE3UW1VWnZvRXdyMnlhSFlsSVEwUUF6OXJRaGw5U0prRndFK1Z1L1FWb2IKM2FCTitBc3MrRU8xbmRaVXRDSGpXenFSZjlPVVFLbGlPQTdWS2FvMzY1YVh1ZWh2cWcxVDRybU54bkhHMGlWRQpzZTJiUWZKSmk1MUN1RURaYmVKTXVCUjdXT2lZVGRhYXZ3cXVXeU1GVUZSMG5HWldRb0lENUY4QlBvUk1XSEw0CllMQnprbndEc2t2Skt5SldSNkFocXVTbi9oaEN1Y1JwbG5HZXAyWThoVDRDRlllZmNHdS9LY1l4QkNGbnExaEkKM2VrRndmc0pIWWg0YlJyeTE4U0drZytPbSs3V1QzRHc1OXljSmtja1hRRUNnZ0VBYitoWWxMci9oaGNxVUxrKwpvencvMHBGMXdZZ21DcVprQjRmbTFocmhZY2dLTnhQUFo3dmNHd0drNHRoTm44aTloam5mWjJENW96c0VPcW52CmRZSjF5QmNraDZWN0pvN3YyNTZTL01KdG5FUlJjRlgwSHNsVVFrWStQQlFvU2c5SW5iS1EvbFFTM1lya3hrWGUKdmkrSHpjbGRYckRML0ZmS1Z5Z1RXS3FKVmhKNmRtZzRqWW9xcTNId0YxV3VaVzh1bDVjUVdjUjlIVHd5S0ZuNgpHd1loczNqWDQvczZLaWVwKzY2dDVORG4wL2NRTGQvc294NEV4bzB2T3YzNm5IQ3poUll4RHVBNDB0ZlFJVFdUCnJjZnRUT0xaL2pwdi9qN2pQRHJRM1hvcnVPYndyYXZWNndPeCtReFhhaVQxTUJjWnBEVHFtYWZ2TFZ4eWM0bEwKTGxsUHJ3S0NBUUJ1ZHNra3ZvUThuYlBQbDlyMFpibEF1dmEzd0pSQy85bU9pWDhWbWd5cjFiV1R3QXk1SmpxTQpoSTV0VWlvUmVZSmxIdEpBRkVERmpmTG1UZnpQckRicStVTU1KRHVHRXFPcWd6Z0d2UXpmcE1UbkxlRVpqbVdECnNuWEp5VjEyRXlsaDlZMXdXN0ZGS2ZKa2VNeURkcGZYcnFndW1IK0xncll0RWVsUHdoWXNCN2pGdGJCcGgrQ2kKZzVBUCt0bFFJM0tnQ05RS0xxM25kenVxdXlySkx4U0UrRWZvWjFiaDB1S0JjdGRJUDI2bnluSUV2bWZ0d01Ocgp2Y2dhY3RlY3l5VTFvclIweTVxYUhQaHMzVERDaklkbFBSUVgzQ3JIQTMvUDdyemlzS21HMHQwa2hPN1JCL3h3CkNYNkJZcmdINTBKR0ZYd1NaVDNuYlgwUGNjNkFQZ1FCQW9JQkFIc0FTa0tmN0NaakdRcWdGVy9PYUpCeE5pclkKQlZVZ2NRVzN1NnVZN1BEeEFnR3JuakxCcUNXVE5Fd0dzNjZCeS9PbE1Fa3BnTU1JVVBJN1RnazZDc0Y4QWN0TgpaWUR3WWc3VExvVVdPTXpBNTZXUEJwdFhrZEk2NkZjdTJzTUhQdWpOMFAzOUo2K1VPaEVNVjlJRW9KN3ZWb3RrCjFrbHNVSUwydkM1T1VtRVJRcGhQSHlBM2l4TGZVQjBwNCtTWXArdVBmT3l1ejZyNkpjNnlpd2ZETWp4aUp0cXUKOGlncGpnMkJXZndIVzlsWlcwL3dhNHlKbmM5U1hpZ1RGWmNqa2dSb1F4TEVSdndqK0t4MFFxdDU4UFVqUmlxWQpqWjhjUDZlNEtmZ0dLVHhObkFtMTEwbExjbXNFOUQwcE15QzczV2I3SkpVZ0FETHFvRDJEc293SUY4Yz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K\n token: 85d3c874ccdf0d4be13918907d28db9df99116f2ef9666c5dad8317a6632d2fa4ae2a708e40efbfe0ded0b2c78bb05b607aae5df346697a6b2eb3c3b13532dbf\n", + "kubelet_identity": [ + { + "client_id": "a7b1e297-2eb0-4fc0-acea-0b7dd9ac7ec6", + "object_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "user_assigned_identity_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/o2nextgen-aks-agentpool" + } + ], + "kubernetes_version": "1.23.8", + "linux_profile": [], + "local_account_disabled": false, + "location": "westus3", + "maintenance_window": [], + "microsoft_defender": [], + "name": "o2nextgen-aks", + "network_profile": [ + { + "dns_service_ip": "10.0.0.10", + "docker_bridge_cidr": "172.17.0.1/16", + "ip_versions": [ + "IPv4" + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/MC_o2bionics-products_o2nextgen-aks_westus3/providers/Microsoft.Network/publicIPAddresses/a671c948-31c9-41d8-9f2d-73edf7531002" + ], + "idle_timeout_in_minutes": 0, + "managed_outbound_ip_count": 1, + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [], + "outbound_ports_allocated": 0 + } + ], + "load_balancer_sku": "standard", + "nat_gateway_profile": [], + "network_mode": "", + "network_plugin": "kubenet", + "network_policy": "", + "outbound_type": "loadBalancer", + "pod_cidr": "10.244.0.0/16", + "service_cidr": "10.0.0.0/16" + } + ], + "node_resource_group": "MC_o2bionics-products_o2nextgen-aks_westus3", + "oidc_issuer_enabled": false, + "oidc_issuer_url": "", + "oms_agent": [], + "open_service_mesh_enabled": false, + "portal_fqdn": "aks-62baec49.portal.hcp.westus3.azmk8s.io", + "private_cluster_enabled": false, + "private_cluster_public_fqdn_enabled": false, + "private_dns_zone_id": "", + "private_fqdn": "", + "public_network_access_enabled": true, + "resource_group_name": "o2bionics-products", + "role_based_access_control_enabled": true, + "run_command_enabled": true, + "service_principal": [], + "sku_tier": "Free", + "tags": { + "Environment": "Production", + "Product": "O2NextGen Platform" + }, + "timeouts": null, + "windows_profile": [] + }, + "sensitive_values": { + "aci_connector_linux": [], + "api_server_authorized_ip_ranges": [], + "auto_scaler_profile": [], + "azure_active_directory_role_based_access_control": [], + "default_node_pool": [ + { + "kubelet_config": [], + "linux_os_config": [], + "node_labels": {}, + "node_taints": [], + "tags": {}, + "upgrade_settings": [], + "zones": [] + } + ], + "http_proxy_config": [], + "identity": [ + { + "identity_ids": [] + } + ], + "ingress_application_gateway": [], + "key_vault_secrets_provider": [], + "kube_admin_config": [], + "kube_config": [ + {} + ], + "kubelet_identity": [ + {} + ], + "linux_profile": [], + "maintenance_window": [], + "microsoft_defender": [], + "network_profile": [ + { + "ip_versions": [ + false + ], + "load_balancer_profile": [ + { + "effective_outbound_ips": [ + false + ], + "outbound_ip_address_ids": [], + "outbound_ip_prefix_ids": [] + } + ], + "nat_gateway_profile": [] + } + ], + "oms_agent": [], + "service_principal": [], + "tags": {}, + "windows_profile": [] + }, + "depends_on": [ + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "azurerm_resource_group.aks-resource-group", + "mode": "managed", + "type": "azurerm_resource_group", + "name": "aks-resource-group", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "location": "westus3", + "name": "o2bionics-products", + "tags": {}, + "timeouts": null + }, + "sensitive_values": { + "tags": {} + } + }, + { + "address": "azurerm_role_assignment.current", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleAssignments/a964cad9-e2af-c584-abeb-260ba07b73d4", + "name": "a964cad9-e2af-c584-abeb-260ba07b73d4", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "role_definition_name": "Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {}, + "depends_on": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current", + "data.azurerm_subscription.current" + ] + }, + { + "address": "azurerm_role_assignment.main", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com/providers/Microsoft.Authorization/roleAssignments/1e321e91-e008-911f-1259-daaa91498ded", + "name": "1e321e91-e008-911f-1259-daaa91498ded", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314", + "role_definition_name": "DNS Zone Contributor", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Network/dnsZones/o2bus.com", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {}, + "depends_on": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + }, + { + "address": "azurerm_role_assignment.reader", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "reader", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.Authorization/roleAssignments/2790a8c2-19c3-bd19-676e-be62e078963a", + "name": "2790a8c2-19c3-bd19-676e-be62e078963a", + "principal_id": "2b4b23c7-ef03-4fdb-b16a-b14dac98c4fd", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", + "role_definition_name": "Reader", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {}, + "depends_on": [ + "azuread_application.example", + "azuread_service_principal.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current" + ] + }, + { + "address": "azurerm_role_assignment.role-acrpull", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "role-acrpull", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "condition": "", + "condition_version": "", + "delegated_managed_identity_resource_id": "", + "description": "", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen/providers/Microsoft.Authorization/roleAssignments/88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "name": "88ef3ca8-c6bb-61dd-153e-e2440aa66b70", + "principal_id": "c1a2d202-93af-4298-a620-455e6b5a7431", + "principal_type": "ServicePrincipal", + "role_definition_id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d", + "role_definition_name": "AcrPull", + "scope": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04/resourceGroups/o2bionics-products/providers/Microsoft.ContainerRegistry/registries/o2nextgen", + "skip_service_principal_aad_check": null, + "timeouts": null + }, + "sensitive_values": {}, + "depends_on": [ + "azurerm_container_registry.o2nextgen-aks-acr", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "data.azuread_client_config.current", + "mode": "data", + "type": "azuread_client_config", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 0, + "values": { + "client_id": "04b07795-8ddb-461a-bbee-02f9e1bf7b46", + "id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6-04b07795-8ddb-461a-bbee-02f9e1bf7b46-ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "object_id": "ae2c64ac-8e28-41da-9f2c-fa3ce8cbc3c0", + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "timeouts": null + }, + "sensitive_values": {} + }, + { + "address": "data.azuread_domains.example", + "mode": "data", + "type": "azuread_domains", + "name": "example", + "provider_name": "registry.terraform.io/hashicorp/azuread", + "schema_version": 0, + "values": { + "admin_managed": null, + "domains": [ + { + "admin_managed": true, + "authentication_type": "Managed", + "default": true, + "domain_name": "o2bionicshotmail.onmicrosoft.com", + "initial": true, + "root": true, + "supported_services": [ + "Email", + "OfficeCommunicationsOnline" + ], + "verified": true + } + ], + "id": "domains#f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6#ZFYJzSzr82ymyVfK_gF6i8a-KPM=", + "include_unverified": null, + "only_default": null, + "only_initial": true, + "only_root": null, + "supports_services": null, + "timeouts": null + }, + "sensitive_values": { + "domains": [ + { + "supported_services": [ + false, + false + ] + } + ] + } + }, + { + "address": "data.azurerm_subscription.current", + "mode": "data", + "type": "azurerm_subscription", + "name": "current", + "provider_name": "registry.terraform.io/hashicorp/azurerm", + "schema_version": 0, + "values": { + "display_name": "paid-subscription", + "id": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "location_placement_id": "Public_2014-09-01", + "quota_id": "PayAsYouGo_2014-09-01", + "spending_limit": "Off", + "state": "Enabled", + "subscription_id": "f1404c6e-2728-40ae-9cd2-fee75bde4c04", + "tags": {}, + "tenant_id": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6", + "timeouts": null + }, + "sensitive_values": { + "tags": {} + } + }, + { + "address": "helm_release.aad-pod-identity", + "mode": "managed", + "type": "helm_release", + "name": "aad-pod-identity", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "aad-pod-identity", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "aad-pod-identity", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.8.12", + "chart": "aad-pod-identity", + "name": "aad-pod-identity", + "namespace": "kube-system", + "revision": 1, + "values": "null", + "version": "4.1.13" + } + ], + "name": "aad-pod-identity", + "namespace": "kube-system", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.13", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [], + "set_sensitive": [] + }, + "depends_on": [ + "azurerm_container_registry.o2nextgen-aks-acr", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "helm_release.cert-manager", + "mode": "managed", + "type": "helm_release", + "name": "cert-manager", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "cert-manager", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.6.1", + "chart": "cert-manager", + "name": "cert-manager", + "namespace": "cert-manager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.6.1" + } + ], + "name": "cert-manager", + "namespace": "cert-manager", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.6.1", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [ + {} + ], + "set_sensitive": [] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "helm_release.external-dns", + "mode": "managed", + "type": "helm_release", + "name": "external-dns", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "external-dns", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "external-dns", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.12.2", + "chart": "external-dns", + "name": "external-dns", + "namespace": "external-dns", + "revision": 1, + "values": "{\"azure\":{\"aadClientId\":\"4acf4b9b-9507-44ae-83ff-43a8b0a2d45e\",\"aadClientSecret\":\"xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb\",\"resourceGroup\":\"o2bionics-products\",\"subscriptionId\":\"/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04\",\"tenantId\":\"f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6\"},\"logLevel\":\"debug\",\"policy\":\"sync\",\"provider\":\"azure\",\"txtOwnerId\":\"o2nextgen-aks\"}", + "version": "6.10.0" + } + ], + "name": "external-dns", + "namespace": "external-dns", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.bitnami.com/bitnami", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "azure.aadClientId", + "type": "", + "value": "4acf4b9b-9507-44ae-83ff-43a8b0a2d45e" + }, + { + "name": "azure.aadClientSecret", + "type": "", + "value": "xvT8Q~GoHTTArzkIjY0mPAbt2Grg-1KxoShWGaxb" + }, + { + "name": "azure.resourceGroup", + "type": "", + "value": "o2bionics-products" + }, + { + "name": "azure.subscriptionId", + "type": "", + "value": "/subscriptions/f1404c6e-2728-40ae-9cd2-fee75bde4c04" + }, + { + "name": "azure.tenantId", + "type": "", + "value": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" + }, + { + "name": "logLevel", + "type": "", + "value": "debug" + }, + { + "name": "policy", + "type": "", + "value": "sync" + }, + { + "name": "provider", + "type": "", + "value": "azure" + }, + { + "name": "txtOwnerId", + "type": "", + "value": "o2nextgen-aks" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "6.10.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": true, + "set_sensitive": [] + }, + "depends_on": [ + "azuread_application.example", + "azuread_application_password.current", + "azurerm_dns_zone.primary-dns-zone", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "data.azuread_client_config.current", + "data.azurerm_subscription.current" + ] + }, + { + "address": "helm_release.nginx-ingress-controller", + "mode": "managed", + "type": "helm_release", + "name": "nginx-ingress-controller", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "ingress-nginx", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "nginx-ingress-controller", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.2.1", + "chart": "ingress-nginx", + "name": "nginx-ingress-controller", + "namespace": "ingress", + "revision": 1, + "values": "{\"controller\":{\"autoscaling\":{\"enabled\":true,\"maxReplicas\":2,\"minReplicas\":1},\"service\":{\"type\":\"LoadBalancer\"}}}", + "version": "4.1.3" + } + ], + "name": "nginx-ingress-controller", + "namespace": "ingress", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://kubernetes.github.io/ingress-nginx", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "controller.autoscaling.enabled", + "type": "", + "value": "true" + }, + { + "name": "controller.autoscaling.maxReplicas", + "type": "", + "value": "2" + }, + { + "name": "controller.autoscaling.minReplicas", + "type": "", + "value": "1" + }, + { + "name": "controller.service.type", + "type": "", + "value": "LoadBalancer" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "4.1.3", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [ + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "helm_release.o2nextgen-auth", + "mode": "managed", + "type": "helm_release", + "name": "o2nextgen-auth", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "o2nextgen-auth", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "o2nextgen-auth", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "1.16.0", + "chart": "o2nextgen-auth", + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "revision": 1, + "values": "null", + "version": "0.1.0" + } + ], + "name": "o2nextgen-auth", + "namespace": "apps-prod", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "../../../helm_charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "0.1.0", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [], + "set_sensitive": [] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "helm_release.prometheus-stack", + "mode": "managed", + "type": "helm_release", + "name": "prometheus-stack", + "provider_name": "registry.terraform.io/hashicorp/helm", + "schema_version": 0, + "values": { + "atomic": false, + "chart": "kube-prometheus-stack", + "cleanup_on_fail": false, + "create_namespace": true, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "prometheus-stack", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "0.59.1", + "chart": "kube-prometheus-stack", + "name": "prometheus-stack", + "namespace": "monitoring", + "revision": 1, + "values": "{\"grafana\":{\"adminPassword\":\"grafana-pass\",\"adminUser\":\"grafana\",\"ingress\":{\"annotations\":{\"nginx.ingress.kubernetes.io/rewrite-target\":\"/$1\",\"nginx.ingress.kubernetes.io/ssl-redirect\":\"false\",\"nginx.ingress.kubernetes.io/use-regex\":\"true\"},\"enabled\":true,\"ingressClassName\":\"nginx\",\"path\":\"/(.*)\"}}}", + "version": "40.1.2" + } + ], + "name": "prometheus-stack", + "namespace": "monitoring", + "pass_credentials": false, + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://prometheus-community.github.io/helm-charts", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "grafana.adminPassword", + "type": "", + "value": "grafana-pass" + }, + { + "name": "grafana.adminUser", + "type": "", + "value": "grafana" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target", + "type": "", + "value": "/$1" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect", + "type": "string", + "value": "false" + }, + { + "name": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex", + "type": "string", + "value": "true" + }, + { + "name": "grafana.ingress.enabled", + "type": "", + "value": "true" + }, + { + "name": "grafana.ingress.ingressClassName", + "type": "", + "value": "nginx" + }, + { + "name": "grafana.ingress.path", + "type": "", + "value": "/(.*)" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "40.1.2", + "wait": true, + "wait_for_jobs": false + }, + "sensitive_values": { + "metadata": [ + {} + ], + "postrender": [], + "set": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "set_sensitive": [] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group", + "helm_release.nginx-ingress-controller" + ] + }, + { + "address": "kubernetes_namespace.dev", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "dev", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-dev", + "metadata": [ + { + "annotations": { + "name": "apps-dev" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Development" + }, + "name": "apps-dev", + "resource_version": "1447", + "uid": "e7d1d0f0-539d-49f0-9ba1-f7a187586e94" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "kubernetes_namespace.devops", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "devops", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-devops", + "metadata": [ + { + "annotations": { + "name": "apps-devops" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Devops" + }, + "name": "apps-devops", + "resource_version": "1444", + "uid": "251115c5-d26c-4bd7-8af9-99c93da74b5a" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "kubernetes_namespace.prod", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "prod", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-prod", + "metadata": [ + { + "annotations": { + "name": "apps-prod" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Production" + }, + "name": "apps-prod", + "resource_version": "1445", + "uid": "e76706f9-6aa6-405f-8c72-7afdfb423c05" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "kubernetes_namespace.staging", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "staging", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-staging", + "metadata": [ + { + "annotations": { + "name": "apps-staging" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Staging" + }, + "name": "apps-staging", + "resource_version": "1443", + "uid": "d5be15f9-8924-4415-9d7c-05b85a649510" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "kubernetes_namespace.tst", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "tst", + "provider_name": "registry.terraform.io/hashicorp/kubernetes", + "schema_version": 0, + "values": { + "id": "apps-tst", + "metadata": [ + { + "annotations": { + "name": "apps-tst" + }, + "generate_name": "", + "generation": 0, + "labels": { + "Environment": "Test" + }, + "name": "apps-tst", + "resource_version": "1446", + "uid": "8001ed90-da14-41c5-a51b-6fe1464bc1a3" + } + ], + "timeouts": null + }, + "sensitive_values": { + "metadata": [ + { + "annotations": {}, + "labels": {} + } + ] + }, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_resource_group.aks-resource-group" + ] + } + ] + } + } + }, + "configuration": { + "provider_config": { + "azuread": { + "name": "azuread", + "full_name": "registry.terraform.io/hashicorp/azuread", + "version_constraint": "~> 2.15.0", + "expressions": { + "tenant_id": { + "constant_value": "f3a52f65-e3a4-4386-8bc9-a42f32fc1cd6" + } + } + }, + "azurerm": { + "name": "azurerm", + "full_name": "registry.terraform.io/hashicorp/azurerm", + "version_constraint": ">= 3.0.0", + "expressions": { + "features": [ + {} + ] + } + }, + "helm": { + "name": "helm", + "full_name": "registry.terraform.io/hashicorp/helm", + "version_constraint": ">= 2.5.1", + "expressions": { + "kubernetes": [ + { + "client_certificate": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].client_certificate", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + "client_key": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].client_key", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + "cluster_ca_certificate": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].cluster_ca_certificate", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + "host": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].host", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + } + } + ] + } + }, + "kubernetes": { + "name": "kubernetes", + "full_name": "registry.terraform.io/hashicorp/kubernetes", + "version_constraint": "2.8.0", + "expressions": { + "client_certificate": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].client_certificate", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + "client_key": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].client_key", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + "cluster_ca_certificate": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].cluster_ca_certificate", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + "host": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0].host", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kube_config", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + } + } + }, + "random": { + "name": "random", + "full_name": "registry.terraform.io/hashicorp/random" + }, + "time": { + "name": "time", + "full_name": "registry.terraform.io/hashicorp/time" + }, + "tls": { + "name": "tls", + "full_name": "registry.terraform.io/hashicorp/tls" + } + }, + "root_module": { + "outputs": { + "client_id": { + "expression": { + "references": [ + "azuread_application.example.application_id", + "azuread_application.example" + ] + } + }, + "client_secret": { + "sensitive": true, + "expression": { + "references": [ + "azuread_application_password.current.value", + "azuread_application_password.current" + ] + } + }, + "current_subscription_display_name": { + "expression": { + "references": [ + "data.azurerm_subscription.current.display_name", + "data.azurerm_subscription.current" + ] + } + }, + "display_name": { + "expression": { + "references": [ + "azuread_service_principal.current.display_name", + "azuread_service_principal.current" + ] + } + }, + "object_id": { + "expression": { + "references": [ + "data.azuread_client_config.current.object_id", + "data.azuread_client_config.current" + ] + } + } + }, + "resources": [ + { + "address": "azuread_application.example", + "mode": "managed", + "type": "azuread_application", + "name": "example", + "provider_config_key": "azuread", + "expressions": { + "display_name": { + "constant_value": "External-DNS-SP" + }, + "owners": { + "references": [ + "data.azuread_client_config.current.object_id", + "data.azuread_client_config.current" + ] + } + }, + "schema_version": 1, + "depends_on": [ + "azurerm_dns_zone.primary-dns-zone" + ] + }, + { + "address": "azuread_application_password.current", + "mode": "managed", + "type": "azuread_application_password", + "name": "current", + "provider_config_key": "azuread", + "expressions": { + "application_object_id": { + "references": [ + "azuread_application.example.object_id", + "azuread_application.example" + ] + } + }, + "schema_version": 1 + }, + { + "address": "azuread_service_principal.current", + "mode": "managed", + "type": "azuread_service_principal", + "name": "current", + "provider_config_key": "azuread", + "expressions": { + "app_role_assignment_required": { + "constant_value": false + }, + "application_id": { + "references": [ + "azuread_application.example.application_id", + "azuread_application.example" + ] + }, + "owners": { + "references": [ + "data.azuread_client_config.current.object_id", + "data.azuread_client_config.current" + ] + } + }, + "schema_version": 0 + }, + { + "address": "azurerm_container_registry.o2nextgen-aks-acr", + "mode": "managed", + "type": "azurerm_container_registry", + "name": "o2nextgen-aks-acr", + "provider_config_key": "azurerm", + "expressions": { + "admin_enabled": { + "constant_value": false + }, + "location": { + "references": [ + "var.k8s_location" + ] + }, + "name": { + "constant_value": "o2nextgen" + }, + "resource_group_name": { + "references": [ + "var.k8s_resource_group" + ] + }, + "sku": { + "constant_value": "Standard" + } + }, + "schema_version": 2, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + { + "address": "azurerm_dns_zone.primary-dns-zone", + "mode": "managed", + "type": "azurerm_dns_zone", + "name": "primary-dns-zone", + "provider_config_key": "azurerm", + "expressions": { + "name": { + "constant_value": "o2bus.com" + }, + "resource_group_name": { + "references": [ + "var.k8s_resource_group" + ] + }, + "tags": { + "constant_value": { + "product": "O2NextGen Platform", + "type_product": "Saas" + } + } + }, + "schema_version": 1, + "depends_on": [ + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + { + "address": "azurerm_kubernetes_cluster.o2nextgen-aks", + "mode": "managed", + "type": "azurerm_kubernetes_cluster", + "name": "o2nextgen-aks", + "provider_config_key": "azurerm", + "expressions": { + "default_node_pool": [ + { + "enable_auto_scaling": { + "constant_value": false + }, + "name": { + "constant_value": "system" + }, + "node_count": { + "references": [ + "var.k8s_node_count" + ] + }, + "type": { + "constant_value": "VirtualMachineScaleSets" + }, + "vm_size": { + "references": [ + "var.k8s_vm_size" + ] + } + } + ], + "dns_prefix": { + "references": [ + "var.k8s_dns_prefix" + ] + }, + "identity": [ + { + "type": { + "constant_value": "SystemAssigned" + } + } + ], + "location": { + "references": [ + "var.k8s_location" + ] + }, + "name": { + "references": [ + "var.k8s_cluster_name" + ] + }, + "resource_group_name": { + "references": [ + "var.k8s_resource_group" + ] + }, + "tags": { + "constant_value": { + "Environment": "Production", + "Product": "O2NextGen Platform" + } + } + }, + "schema_version": 2, + "depends_on": [ + "azurerm_resource_group.aks-resource-group" + ] + }, + { + "address": "azurerm_resource_group.aks-resource-group", + "mode": "managed", + "type": "azurerm_resource_group", + "name": "aks-resource-group", + "provider_config_key": "azurerm", + "expressions": { + "location": { + "references": [ + "var.k8s_location" + ] + }, + "name": { + "references": [ + "var.k8s_resource_group" + ] + } + }, + "schema_version": 0 + }, + { + "address": "azurerm_role_assignment.current", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "current", + "provider_config_key": "azurerm", + "expressions": { + "principal_id": { + "references": [ + "azuread_service_principal.current.object_id", + "azuread_service_principal.current" + ] + }, + "role_definition_name": { + "constant_value": "Contributor" + }, + "scope": { + "references": [ + "data.azurerm_subscription.current.id", + "data.azurerm_subscription.current" + ] + } + }, + "schema_version": 0 + }, + { + "address": "azurerm_role_assignment.main", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "main", + "provider_config_key": "azurerm", + "expressions": { + "principal_id": { + "references": [ + "azuread_service_principal.current.object_id", + "azuread_service_principal.current" + ] + }, + "role_definition_name": { + "constant_value": "DNS Zone Contributor" + }, + "scope": { + "references": [ + "azurerm_dns_zone.primary-dns-zone.id", + "azurerm_dns_zone.primary-dns-zone" + ] + } + }, + "schema_version": 0 + }, + { + "address": "azurerm_role_assignment.reader", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "reader", + "provider_config_key": "azurerm", + "expressions": { + "principal_id": { + "references": [ + "azuread_service_principal.current.object_id", + "azuread_service_principal.current" + ] + }, + "role_definition_name": { + "constant_value": "Reader" + }, + "scope": { + "references": [ + "azurerm_resource_group.aks-resource-group.id", + "azurerm_resource_group.aks-resource-group" + ] + } + }, + "schema_version": 0 + }, + { + "address": "azurerm_role_assignment.role-acrpull", + "mode": "managed", + "type": "azurerm_role_assignment", + "name": "role-acrpull", + "provider_config_key": "azurerm", + "expressions": { + "principal_id": { + "references": [ + "azurerm_kubernetes_cluster.o2nextgen-aks.kubelet_identity[0].object_id", + "azurerm_kubernetes_cluster.o2nextgen-aks.kubelet_identity[0]", + "azurerm_kubernetes_cluster.o2nextgen-aks.kubelet_identity", + "azurerm_kubernetes_cluster.o2nextgen-aks" + ] + }, + "role_definition_name": { + "constant_value": "AcrPull" + }, + "scope": { + "references": [ + "azurerm_container_registry.o2nextgen-aks-acr.id", + "azurerm_container_registry.o2nextgen-aks-acr" + ] + } + }, + "schema_version": 0, + "depends_on": [ + "azurerm_container_registry.o2nextgen-aks-acr" + ] + }, + { + "address": "helm_release.aad-pod-identity", + "mode": "managed", + "type": "helm_release", + "name": "aad-pod-identity", + "provider_config_key": "helm", + "expressions": { + "chart": { + "constant_value": "aad-pod-identity" + }, + "name": { + "constant_value": "aad-pod-identity" + }, + "namespace": { + "constant_value": "kube-system" + }, + "repository": { + "constant_value": "https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts" + } + }, + "schema_version": 0, + "depends_on": [ + "azurerm_resource_group.aks-resource-group", + "azurerm_kubernetes_cluster.o2nextgen-aks", + "azurerm_container_registry.o2nextgen-aks-acr" + ] + }, + { + "address": "helm_release.cert-manager", + "mode": "managed", + "type": "helm_release", + "name": "cert-manager", + "provider_config_key": "helm", + "expressions": { + "chart": { + "constant_value": "cert-manager" + }, + "create_namespace": { + "constant_value": true + }, + "name": { + "constant_value": "cert-manager" + }, + "namespace": { + "constant_value": "cert-manager" + }, + "repository": { + "constant_value": "https://charts.jetstack.io" + }, + "set": [ + { + "name": { + "constant_value": "installCRDs" + }, + "value": { + "constant_value": "true" + } + } + ], + "version": { + "constant_value": "1.6.1" + } + }, + "schema_version": 0 + }, + { + "address": "helm_release.external-dns", + "mode": "managed", + "type": "helm_release", + "name": "external-dns", + "provider_config_key": "helm", + "expressions": { + "chart": { + "constant_value": "external-dns" + }, + "create_namespace": { + "constant_value": true + }, + "name": { + "constant_value": "external-dns" + }, + "namespace": { + "constant_value": "external-dns" + }, + "repository": { + "constant_value": "https://charts.bitnami.com/bitnami" + }, + "set": [ + { + "name": { + "constant_value": "txtOwnerId" + }, + "value": { + "references": [ + "var.k8s_cluster_name" + ] + } + }, + { + "name": { + "constant_value": "provider" + }, + "value": { + "constant_value": "azure" + } + }, + { + "name": { + "constant_value": "logLevel" + }, + "value": { + "constant_value": "debug" + } + }, + { + "name": { + "constant_value": "policy" + }, + "value": { + "constant_value": "sync" + } + }, + { + "name": { + "constant_value": "azure.resourceGroup" + }, + "value": { + "references": [ + "var.k8s_resource_group" + ] + } + }, + { + "name": { + "constant_value": "azure.tenantId" + }, + "value": { + "references": [ + "data.azuread_client_config.current.tenant_id", + "data.azuread_client_config.current" + ] + } + }, + { + "name": { + "constant_value": "azure.subscriptionId" + }, + "value": { + "references": [ + "data.azurerm_subscription.current.id", + "data.azurerm_subscription.current" + ] + } + }, + { + "name": { + "constant_value": "azure.aadClientId" + }, + "value": { + "references": [ + "azuread_application.example.application_id", + "azuread_application.example" + ] + } + }, + { + "name": { + "constant_value": "azure.aadClientSecret" + }, + "value": { + "references": [ + "azuread_application_password.current.value", + "azuread_application_password.current" + ] + } + } + ] + }, + "schema_version": 0, + "depends_on": [ + "azurerm_dns_zone.primary-dns-zone" + ] + }, + { + "address": "helm_release.nginx-ingress-controller", + "mode": "managed", + "type": "helm_release", + "name": "nginx-ingress-controller", + "provider_config_key": "helm", + "expressions": { + "chart": { + "constant_value": "ingress-nginx" + }, + "create_namespace": { + "constant_value": "true" + }, + "name": { + "constant_value": "nginx-ingress-controller" + }, + "namespace": { + "constant_value": "ingress" + }, + "repository": { + "constant_value": "https://kubernetes.github.io/ingress-nginx" + }, + "set": [ + { + "name": { + "constant_value": "controller.service.type" + }, + "value": { + "constant_value": "LoadBalancer" + } + }, + { + "name": { + "constant_value": "controller.autoscaling.enabled" + }, + "value": { + "constant_value": "true" + } + }, + { + "name": { + "constant_value": "controller.autoscaling.minReplicas" + }, + "value": { + "constant_value": "1" + } + }, + { + "name": { + "constant_value": "controller.autoscaling.maxReplicas" + }, + "value": { + "constant_value": "2" + } + } + ], + "version": { + "constant_value": "4.1.3" + } + }, + "schema_version": 0 + }, + { + "address": "helm_release.o2bus-webapp", + "mode": "managed", + "type": "helm_release", + "name": "o2bus-webapp", + "provider_config_key": "helm", + "expressions": { + "chart": { + "constant_value": "o2bus-webapp" + }, + "name": { + "constant_value": "o2bus-webapp" + }, + "namespace": { + "constant_value": "apps-prod" + }, + "repository": { + "constant_value": "../../../helm_charts" + } + }, + "schema_version": 0 + }, + { + "address": "helm_release.o2nextgen-auth", + "mode": "managed", + "type": "helm_release", + "name": "o2nextgen-auth", + "provider_config_key": "helm", + "expressions": { + "chart": { + "constant_value": "o2nextgen-auth" + }, + "name": { + "constant_value": "o2nextgen-auth" + }, + "namespace": { + "constant_value": "apps-prod" + }, + "repository": { + "constant_value": "../../../helm_charts" + } + }, + "schema_version": 0 + }, + { + "address": "helm_release.prometheus-stack", + "mode": "managed", + "type": "helm_release", + "name": "prometheus-stack", + "provider_config_key": "helm", + "expressions": { + "chart": { + "constant_value": "kube-prometheus-stack" + }, + "create_namespace": { + "constant_value": true + }, + "name": { + "constant_value": "prometheus-stack" + }, + "namespace": { + "constant_value": "monitoring" + }, + "repository": { + "constant_value": "https://prometheus-community.github.io/helm-charts" + }, + "set": [ + { + "name": { + "constant_value": "grafana.ingress.enabled" + }, + "value": { + "constant_value": "true" + } + }, + { + "name": { + "constant_value": "grafana.ingress.ingressClassName" + }, + "value": { + "constant_value": "nginx" + } + }, + { + "name": { + "constant_value": "grafana.ingress.path" + }, + "value": { + "constant_value": "/(.*)" + } + }, + { + "name": { + "constant_value": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/ssl-redirect" + }, + "type": { + "constant_value": "string" + }, + "value": { + "constant_value": "false" + } + }, + { + "name": { + "constant_value": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/use-regex" + }, + "type": { + "constant_value": "string" + }, + "value": { + "constant_value": "true" + } + }, + { + "name": { + "constant_value": "grafana.ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/rewrite-target" + }, + "value": { + "constant_value": "/$1" + } + }, + { + "name": { + "constant_value": "grafana.adminUser" + }, + "value": { + "references": [ + "var.grafana_admin_user" + ] + } + }, + { + "name": { + "constant_value": "grafana.adminPassword" + }, + "value": { + "references": [ + "var.grafana_admin_password" + ] + } + } + ] + }, + "schema_version": 0, + "depends_on": [ + "helm_release.nginx-ingress-controller" + ] + }, + { + "address": "kubernetes_namespace.dev", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "dev", + "provider_config_key": "kubernetes", + "expressions": { + "metadata": [ + { + "annotations": { + "constant_value": { + "name": "apps-dev" + } + }, + "labels": { + "constant_value": { + "Environment": "Development" + } + }, + "name": { + "constant_value": "apps-dev" + } + } + ] + }, + "schema_version": 0 + }, + { + "address": "kubernetes_namespace.devops", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "devops", + "provider_config_key": "kubernetes", + "expressions": { + "metadata": [ + { + "annotations": { + "constant_value": { + "name": "apps-devops" + } + }, + "labels": { + "constant_value": { + "Environment": "Devops" + } + }, + "name": { + "constant_value": "apps-devops" + } + } + ] + }, + "schema_version": 0 + }, + { + "address": "kubernetes_namespace.prod", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "prod", + "provider_config_key": "kubernetes", + "expressions": { + "metadata": [ + { + "annotations": { + "constant_value": { + "name": "apps-prod" + } + }, + "labels": { + "constant_value": { + "Environment": "Production" + } + }, + "name": { + "constant_value": "apps-prod" + } + } + ] + }, + "schema_version": 0 + }, + { + "address": "kubernetes_namespace.staging", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "staging", + "provider_config_key": "kubernetes", + "expressions": { + "metadata": [ + { + "annotations": { + "constant_value": { + "name": "apps-staging" + } + }, + "labels": { + "constant_value": { + "Environment": "Staging" + } + }, + "name": { + "constant_value": "apps-staging" + } + } + ] + }, + "schema_version": 0 + }, + { + "address": "kubernetes_namespace.tst", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "tst", + "provider_config_key": "kubernetes", + "expressions": { + "metadata": [ + { + "annotations": { + "constant_value": { + "name": "apps-tst" + } + }, + "labels": { + "constant_value": { + "Environment": "Test" + } + }, + "name": { + "constant_value": "apps-tst" + } + } + ] + }, + "schema_version": 0 + }, + { + "address": "data.azuread_client_config.current", + "mode": "data", + "type": "azuread_client_config", + "name": "current", + "provider_config_key": "azuread", + "schema_version": 0 + }, + { + "address": "data.azuread_domains.example", + "mode": "data", + "type": "azuread_domains", + "name": "example", + "provider_config_key": "azuread", + "expressions": { + "only_initial": { + "constant_value": true + } + }, + "schema_version": 0 + }, + { + "address": "data.azurerm_subscription.current", + "mode": "data", + "type": "azurerm_subscription", + "name": "current", + "provider_config_key": "azurerm", + "schema_version": 0 + } + ], + "variables": { + "grafana_admin_password": { + "description": "Admin password to access Grafana dashboard" + }, + "grafana_admin_user": { + "description": "Admin user to access Grafana dashboard" + }, + "k8s_cluster_name": { + "description": "AKS cluster name" + }, + "k8s_dns_prefix": { + "description": "DNS prefix for AKS Cluster" + }, + "k8s_location": { + "description": "Resourse group location for AKS cluster" + }, + "k8s_node_count": { + "description": "Node count for AKS Cluster" + }, + "k8s_resource_group": { + "description": "Resourse group for AKS cluster" + }, + "k8s_vm_size": { + "description": "Name VM for AKS Cluster" + } + } + } + } +} diff --git a/deploy/release-deploy/clouds/azure/terraform/tls-issuer.sh b/deploy/release-deploy/clouds/azure/terraform/tls-issuer.sh new file mode 100644 index 00000000..4e51b9de --- /dev/null +++ b/deploy/release-deploy/clouds/azure/terraform/tls-issuer.sh @@ -0,0 +1,91 @@ +LETS_ENCRYPT_EMAIL=o2bionics@hotmail.com +cat <<-EOF | kubectl apply --namespace default -f - +apiVersion: cert-manager.io/v1 + +kind: ClusterIssuer +metadata: + name: letsencrypt +spec: + acme: + server: https://acme-v02.api.letsencrypt.org/directory + email: $LETS_ENCRYPT_EMAIL + privateKeySecretRef: + name: letsencrypt + solvers: + - http01: + ingress: + class: nginx +EOF + +# cat <<-EOF | kubectl apply --namespace apps-prod -f - +# apiVersion: cert-manager.io/v1 + +# kind: ClusterIssuer +# metadata: +# name: letsencrypt-prod +# spec: +# acme: +# server: https://acme-v02.api.letsencrypt.org/directory +# email: $LETS_ENCRYPT_EMAIL +# privateKeySecretRef: +# name: letsencrypt-prod +# solvers: +# - http01: +# ingress: +# class: nginx +# EOF + +# cat <<-EOF | kubectl apply --namespace apps-staging -f - +# apiVersion: cert-manager.io/v1 + +# kind: ClusterIssuer +# metadata: +# name: letsencrypt-staging +# spec: +# acme: +# server: https://acme-v02.api.letsencrypt.org/directory +# email: $LETS_ENCRYPT_EMAIL +# privateKeySecretRef: +# name: letsencrypt-staging +# solvers: +# - http01: +# ingress: +# class: nginx +# EOF + +# cat <<-EOF | kubectl apply --namespace apps-dev -f - +# apiVersion: cert-manager.io/v1 + +# kind: ClusterIssuer +# metadata: +# name: letsencrypt-dev +# spec: +# acme: +# server: https://acme-v02.api.letsencrypt.org/directory +# email: $LETS_ENCRYPT_EMAIL +# privateKeySecretRef: +# name: letsencrypt-dev +# solvers: +# - http01: +# ingress: +# class: nginx +# EOF + + +# cat <<-EOF | kubectl apply --namespace apps-devops -f - +# apiVersion: cert-manager.io/v1 + +# kind: ClusterIssuer +# metadata: +# name: letsencrypt-devops +# spec: +# acme: +# server: https://acme-v02.api.letsencrypt.org/directory +# email: $LETS_ENCRYPT_EMAIL +# privateKeySecretRef: +# name: letsencrypt-devops +# solvers: +# - http01: +# ingress: +# class: nginx +# EOF \ No newline at end of file diff --git a/deploy/k8s/varribles.tf b/deploy/release-deploy/clouds/azure/terraform/variables.tf similarity index 75% rename from deploy/k8s/varribles.tf rename to deploy/release-deploy/clouds/azure/terraform/variables.tf index f88ed365..1806f5e6 100644 --- a/deploy/k8s/varribles.tf +++ b/deploy/release-deploy/clouds/azure/terraform/variables.tf @@ -1,32 +1,32 @@ -variable "aks_group_name" { +variable "k8s_resource_group" { type = string description = "Resourse group for AKS cluster" } -variable "aks_group_location" { +variable "k8s_location" { type = string description = "Resourse group location for AKS cluster" } +variable "k8s_cluster_name" { + type = string + description = "AKS cluster name" +} -variable "aks_dns_prefix" { +variable "k8s_dns_prefix" { type = string description = "DNS prefix for AKS Cluster" } -variable "aks_vm_size" { +variable "k8s_vm_size" { type = string description = "Name VM for AKS Cluster" } -variable "aks_node_count" { +variable "k8s_node_count" { type = number description = "Node count for AKS Cluster" } -variable "aks_cluster_name" { - type = string - description = "AKS Cluster Name" -} variable "grafana_admin_user" { type = string @@ -36,4 +36,4 @@ variable "grafana_admin_user" { variable "grafana_admin_password" { type = string description = "Admin password to access Grafana dashboard" -} +} \ No newline at end of file diff --git a/deploy/k8s/charts/o2bionics-webapp/.helmignore b/deploy/release-deploy/helm_charts/cgen-api/.helmignore similarity index 100% rename from deploy/k8s/charts/o2bionics-webapp/.helmignore rename to deploy/release-deploy/helm_charts/cgen-api/.helmignore diff --git a/deploy/k8s/charts/test-app/Chart.yaml b/deploy/release-deploy/helm_charts/cgen-api/Chart.yaml similarity index 98% rename from deploy/k8s/charts/test-app/Chart.yaml rename to deploy/release-deploy/helm_charts/cgen-api/Chart.yaml index 9f0654b7..84cc1efa 100644 --- a/deploy/k8s/charts/test-app/Chart.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -name: test-app +name: cgen-api description: A Helm chart for Kubernetes # A chart can be either an 'application' or a 'library' chart. diff --git a/deploy/k8s/charts/test-app/templates/NOTES.txt b/deploy/release-deploy/helm_charts/cgen-api/templates/NOTES.txt similarity index 87% rename from deploy/k8s/charts/test-app/templates/NOTES.txt rename to deploy/release-deploy/helm_charts/cgen-api/templates/NOTES.txt index 2c0f109e..72f9354f 100644 --- a/deploy/k8s/charts/test-app/templates/NOTES.txt +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/NOTES.txt @@ -6,16 +6,16 @@ {{- end }} {{- end }} {{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "test-app.fullname" . }}) + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "cgen-api.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT {{- else if contains "LoadBalancer" .Values.service.type }} NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "test-app.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "test-app.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "cgen-api.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "cgen-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") echo http://$SERVICE_IP:{{ .Values.service.port }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "test-app.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "cgen-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT diff --git a/deploy/k8s/charts/test-app/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/cgen-api/templates/_helpers.tpl similarity index 76% rename from deploy/k8s/charts/test-app/templates/_helpers.tpl rename to deploy/release-deploy/helm_charts/cgen-api/templates/_helpers.tpl index 77d474ef..0e559756 100644 --- a/deploy/k8s/charts/test-app/templates/_helpers.tpl +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/_helpers.tpl @@ -1,7 +1,7 @@ {{/* Expand the name of the chart. */}} -{{- define "test-app.name" -}} +{{- define "cgen-api.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} @@ -10,7 +10,7 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "test-app.fullname" -}} +{{- define "cgen-api.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} @@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name. {{/* Create chart name and version as used by the chart label. */}} -{{- define "test-app.chart" -}} +{{- define "cgen-api.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Common labels */}} -{{- define "test-app.labels" -}} -helm.sh/chart: {{ include "test-app.chart" . }} -{{ include "test-app.selectorLabels" . }} +{{- define "cgen-api.labels" -}} +helm.sh/chart: {{ include "cgen-api.chart" . }} +{{ include "cgen-api.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{/* Selector labels */}} -{{- define "test-app.selectorLabels" -}} -app.kubernetes.io/name: {{ include "test-app.name" . }} +{{- define "cgen-api.selectorLabels" -}} +app.kubernetes.io/name: {{ include "cgen-api.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{/* Create the name of the service account to use */}} -{{- define "test-app.serviceAccountName" -}} +{{- define "cgen-api.serviceAccountName" -}} {{- if .Values.serviceAccount.create }} -{{- default (include "test-app.fullname" .) .Values.serviceAccount.name }} +{{- default (include "cgen-api.fullname" .) .Values.serviceAccount.name }} {{- else }} {{- default "default" .Values.serviceAccount.name }} {{- end }} diff --git a/deploy/k8s/charts/test-app/templates/deployment.yaml b/deploy/release-deploy/helm_charts/cgen-api/templates/deployment.yaml similarity index 84% rename from deploy/k8s/charts/test-app/templates/deployment.yaml rename to deploy/release-deploy/helm_charts/cgen-api/templates/deployment.yaml index 69bfe12c..afd50f2a 100644 --- a/deploy/k8s/charts/test-app/templates/deployment.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/deployment.yaml @@ -1,16 +1,16 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "test-app.fullname" . }} + name: {{ include "cgen-api.fullname" . }} labels: - {{- include "test-app.labels" . | nindent 4 }} + {{- include "cgen-api.labels" . | nindent 4 }} spec: {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} {{- end }} selector: matchLabels: - {{- include "test-app.selectorLabels" . | nindent 6 }} + {{- include "cgen-api.selectorLabels" . | nindent 6 }} template: metadata: {{- with .Values.podAnnotations }} @@ -18,13 +18,13 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} labels: - {{- include "test-app.selectorLabels" . | nindent 8 }} + {{- include "cgen-api.selectorLabels" . | nindent 8 }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "test-app.serviceAccountName" . }} + serviceAccountName: {{ include "cgen-api.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: diff --git a/deploy/k8s/charts/test-app/templates/hpa.yaml b/deploy/release-deploy/helm_charts/cgen-api/templates/hpa.yaml similarity index 84% rename from deploy/k8s/charts/test-app/templates/hpa.yaml rename to deploy/release-deploy/helm_charts/cgen-api/templates/hpa.yaml index 7350552f..85a83a7d 100644 --- a/deploy/k8s/charts/test-app/templates/hpa.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/hpa.yaml @@ -2,14 +2,14 @@ apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: - name: {{ include "test-app.fullname" . }} + name: {{ include "cgen-api.fullname" . }} labels: - {{- include "test-app.labels" . | nindent 4 }} + {{- include "cgen-api.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ include "test-app.fullname" . }} + name: {{ include "cgen-api.fullname" . }} minReplicas: {{ .Values.autoscaling.minReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: diff --git a/deploy/k8s/charts/test-app/templates/ingress.yaml b/deploy/release-deploy/helm_charts/cgen-api/templates/ingress.yaml similarity index 95% rename from deploy/k8s/charts/test-app/templates/ingress.yaml rename to deploy/release-deploy/helm_charts/cgen-api/templates/ingress.yaml index 4538b070..5d3be969 100644 --- a/deploy/k8s/charts/test-app/templates/ingress.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/ingress.yaml @@ -1,5 +1,5 @@ {{- if .Values.ingress.enabled -}} -{{- $fullName := include "test-app.fullname" . -}} +{{- $fullName := include "cgen-api.fullname" . -}} {{- $svcPort := .Values.service.port -}} {{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} @@ -17,7 +17,7 @@ kind: Ingress metadata: name: {{ $fullName }} labels: - {{- include "test-app.labels" . | nindent 4 }} + {{- include "cgen-api.labels" . | nindent 4 }} {{- with .Values.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/deploy/k8s/charts/test-app/templates/service.yaml b/deploy/release-deploy/helm_charts/cgen-api/templates/service.yaml similarity index 57% rename from deploy/k8s/charts/test-app/templates/service.yaml rename to deploy/release-deploy/helm_charts/cgen-api/templates/service.yaml index fc4e49fe..a99e0ae9 100644 --- a/deploy/k8s/charts/test-app/templates/service.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/service.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "test-app.fullname" . }} + name: {{ include "cgen-api.fullname" . }} labels: - {{- include "test-app.labels" . | nindent 4 }} + {{- include "cgen-api.labels" . | nindent 4 }} spec: type: {{ .Values.service.type }} ports: @@ -12,4 +12,4 @@ spec: protocol: TCP name: http selector: - {{- include "test-app.selectorLabels" . | nindent 4 }} + {{- include "cgen-api.selectorLabels" . | nindent 4 }} diff --git a/deploy/k8s/charts/test-app/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/cgen-api/templates/serviceaccount.yaml similarity index 67% rename from deploy/k8s/charts/test-app/templates/serviceaccount.yaml rename to deploy/release-deploy/helm_charts/cgen-api/templates/serviceaccount.yaml index 8dcb158f..d719c3ae 100644 --- a/deploy/k8s/charts/test-app/templates/serviceaccount.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/serviceaccount.yaml @@ -2,9 +2,9 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ include "test-app.serviceAccountName" . }} + name: {{ include "cgen-api.serviceAccountName" . }} labels: - {{- include "test-app.labels" . | nindent 4 }} + {{- include "cgen-api.labels" . | nindent 4 }} {{- with .Values.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/deploy/k8s/charts/test-app/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/cgen-api/templates/tests/test-connection.yaml similarity index 53% rename from deploy/k8s/charts/test-app/templates/tests/test-connection.yaml rename to deploy/release-deploy/helm_charts/cgen-api/templates/tests/test-connection.yaml index f7bc8d10..1c855093 100644 --- a/deploy/k8s/charts/test-app/templates/tests/test-connection.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/templates/tests/test-connection.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Pod metadata: - name: "{{ include "test-app.fullname" . }}-test-connection" + name: "{{ include "cgen-api.fullname" . }}-test-connection" labels: - {{- include "test-app.labels" . | nindent 4 }} + {{- include "cgen-api.labels" . | nindent 4 }} annotations: "helm.sh/hook": test spec: @@ -11,5 +11,5 @@ spec: - name: wget image: busybox command: ['wget'] - args: ['{{ include "test-app.fullname" . }}:{{ .Values.service.port }}'] + args: ['{{ include "cgen-api.fullname" . }}:{{ .Values.service.port }}'] restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/cgen-api/values copy.yaml b/deploy/release-deploy/helm_charts/cgen-api/values copy.yaml new file mode 100644 index 00000000..3796ada3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/cgen-api/values copy.yaml @@ -0,0 +1,83 @@ +# Default values for esender-api. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: cgen-api.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus-cgen-api + hosts: + - cgen-api.o2bus.com + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/k8s/charts/test-app/values.yaml b/deploy/release-deploy/helm_charts/cgen-api/values.yaml similarity index 98% rename from deploy/k8s/charts/test-app/values.yaml rename to deploy/release-deploy/helm_charts/cgen-api/values.yaml index faf2089c..f9466f22 100644 --- a/deploy/k8s/charts/test-app/values.yaml +++ b/deploy/release-deploy/helm_charts/cgen-api/values.yaml @@ -1,4 +1,4 @@ -# Default values for test-app. +# Default values for cgen-api. # This is a YAML-formatted file. # Declare variables to be passed into your templates. diff --git a/deploy/k8s/charts/test-app/.helmignore b/deploy/release-deploy/helm_charts/cgen-webapp/.helmignore similarity index 100% rename from deploy/k8s/charts/test-app/.helmignore rename to deploy/release-deploy/helm_charts/cgen-webapp/.helmignore diff --git a/deploy/k8s/charts/o2bionics-webapp/Chart.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/Chart.yaml similarity index 98% rename from deploy/k8s/charts/o2bionics-webapp/Chart.yaml rename to deploy/release-deploy/helm_charts/cgen-webapp/Chart.yaml index 6d00c107..af145d4c 100644 --- a/deploy/k8s/charts/o2bionics-webapp/Chart.yaml +++ b/deploy/release-deploy/helm_charts/cgen-webapp/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -name: o2bionics-webapp +name: cgen-webapp description: A Helm chart for Kubernetes # A chart can be either an 'application' or a 'library' chart. diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/NOTES.txt b/deploy/release-deploy/helm_charts/cgen-webapp/templates/NOTES.txt similarity index 75% rename from deploy/k8s/charts/o2bionics-webapp/templates/NOTES.txt rename to deploy/release-deploy/helm_charts/cgen-webapp/templates/NOTES.txt index 85e67098..1d7fe29f 100644 --- a/deploy/k8s/charts/o2bionics-webapp/templates/NOTES.txt +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/NOTES.txt @@ -6,16 +6,16 @@ {{- end }} {{- end }} {{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "o2bionics-webapp.fullname" . }}) + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "cgen-webapp.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT {{- else if contains "LoadBalancer" .Values.service.type }} NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "o2bionics-webapp.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "o2bionics-webapp.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "cgen-webapp.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "cgen-webapp.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") echo http://$SERVICE_IP:{{ .Values.service.port }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "o2bionics-webapp.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "cgen-webapp.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/cgen-webapp/templates/_helpers.tpl similarity index 72% rename from deploy/k8s/charts/o2bionics-webapp/templates/_helpers.tpl rename to deploy/release-deploy/helm_charts/cgen-webapp/templates/_helpers.tpl index 0937933e..6eec401e 100644 --- a/deploy/k8s/charts/o2bionics-webapp/templates/_helpers.tpl +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/_helpers.tpl @@ -1,7 +1,7 @@ {{/* Expand the name of the chart. */}} -{{- define "o2bionics-webapp.name" -}} +{{- define "cgen-webapp.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} @@ -10,7 +10,7 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "o2bionics-webapp.fullname" -}} +{{- define "cgen-webapp.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} @@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name. {{/* Create chart name and version as used by the chart label. */}} -{{- define "o2bionics-webapp.chart" -}} +{{- define "cgen-webapp.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Common labels */}} -{{- define "o2bionics-webapp.labels" -}} -helm.sh/chart: {{ include "o2bionics-webapp.chart" . }} -{{ include "o2bionics-webapp.selectorLabels" . }} +{{- define "cgen-webapp.labels" -}} +helm.sh/chart: {{ include "cgen-webapp.chart" . }} +{{ include "cgen-webapp.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{/* Selector labels */}} -{{- define "o2bionics-webapp.selectorLabels" -}} -app.kubernetes.io/name: {{ include "o2bionics-webapp.name" . }} +{{- define "cgen-webapp.selectorLabels" -}} +app.kubernetes.io/name: {{ include "cgen-webapp.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{/* Create the name of the service account to use */}} -{{- define "o2bionics-webapp.serviceAccountName" -}} +{{- define "cgen-webapp.serviceAccountName" -}} {{- if .Values.serviceAccount.create }} -{{- default (include "o2bionics-webapp.fullname" .) .Values.serviceAccount.name }} +{{- default (include "cgen-webapp.fullname" .) .Values.serviceAccount.name }} {{- else }} {{- default "default" .Values.serviceAccount.name }} {{- end }} diff --git a/deploy/release-deploy/helm_charts/cgen-webapp/templates/deployment.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/templates/deployment.yaml new file mode 100644 index 00000000..0c3f58e6 --- /dev/null +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "cgen-webapp.fullname" . }} + labels: + {{- include "cgen-webapp.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "cgen-webapp.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "cgen-webapp.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "cgen-webapp.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + {{- if .Values.env.values -}} + {{- range .Values.env.values }} + - name: {{ .name }} + value: {{ .value | quote }} + {{- end }} + {{- end }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/hpa.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/templates/hpa.yaml similarity index 82% rename from deploy/k8s/charts/o2bionics-webapp/templates/hpa.yaml rename to deploy/release-deploy/helm_charts/cgen-webapp/templates/hpa.yaml index c7c20b61..1d830f63 100644 --- a/deploy/k8s/charts/o2bionics-webapp/templates/hpa.yaml +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/hpa.yaml @@ -2,14 +2,14 @@ apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: - name: {{ include "o2bionics-webapp.fullname" . }} + name: {{ include "cgen-webapp.fullname" . }} labels: - {{- include "o2bionics-webapp.labels" . | nindent 4 }} + {{- include "cgen-webapp.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ include "o2bionics-webapp.fullname" . }} + name: {{ include "cgen-webapp.fullname" . }} minReplicas: {{ .Values.autoscaling.minReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/ingress.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/templates/ingress.yaml similarity index 94% rename from deploy/k8s/charts/o2bionics-webapp/templates/ingress.yaml rename to deploy/release-deploy/helm_charts/cgen-webapp/templates/ingress.yaml index 1b74c0c8..291f03c8 100644 --- a/deploy/k8s/charts/o2bionics-webapp/templates/ingress.yaml +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/ingress.yaml @@ -1,5 +1,5 @@ {{- if .Values.ingress.enabled -}} -{{- $fullName := include "o2bionics-webapp.fullname" . -}} +{{- $fullName := include "cgen-webapp.fullname" . -}} {{- $svcPort := .Values.service.port -}} {{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} @@ -17,7 +17,7 @@ kind: Ingress metadata: name: {{ $fullName }} labels: - {{- include "o2bionics-webapp.labels" . | nindent 4 }} + {{- include "cgen-webapp.labels" . | nindent 4 }} {{- with .Values.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/service.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/templates/service.yaml similarity index 54% rename from deploy/k8s/charts/o2bionics-webapp/templates/service.yaml rename to deploy/release-deploy/helm_charts/cgen-webapp/templates/service.yaml index 4d986541..a9cbe875 100644 --- a/deploy/k8s/charts/o2bionics-webapp/templates/service.yaml +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/service.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "o2bionics-webapp.fullname" . }} + name: {{ include "cgen-webapp.fullname" . }} labels: - {{- include "o2bionics-webapp.labels" . | nindent 4 }} + {{- include "cgen-webapp.labels" . | nindent 4 }} spec: type: {{ .Values.service.type }} ports: @@ -12,4 +12,4 @@ spec: protocol: TCP name: http selector: - {{- include "o2bionics-webapp.selectorLabels" . | nindent 4 }} + {{- include "cgen-webapp.selectorLabels" . | nindent 4 }} diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/templates/serviceaccount.yaml similarity index 64% rename from deploy/k8s/charts/o2bionics-webapp/templates/serviceaccount.yaml rename to deploy/release-deploy/helm_charts/cgen-webapp/templates/serviceaccount.yaml index 1afa2cf7..5d5bd7f6 100644 --- a/deploy/k8s/charts/o2bionics-webapp/templates/serviceaccount.yaml +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/serviceaccount.yaml @@ -2,9 +2,9 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ include "o2bionics-webapp.serviceAccountName" . }} + name: {{ include "cgen-webapp.serviceAccountName" . }} labels: - {{- include "o2bionics-webapp.labels" . | nindent 4 }} + {{- include "cgen-webapp.labels" . | nindent 4 }} {{- with .Values.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/cgen-webapp/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/templates/tests/test-connection.yaml new file mode 100644 index 00000000..8d60c646 --- /dev/null +++ b/deploy/release-deploy/helm_charts/cgen-webapp/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "cgen-webapp.fullname" . }}-test-connection" + labels: + {{- include "cgen-webapp.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "cgen-webapp.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/cgen-webapp/values.yaml b/deploy/release-deploy/helm_charts/cgen-webapp/values.yaml new file mode 100644 index 00000000..c356bf24 --- /dev/null +++ b/deploy/release-deploy/helm_charts/cgen-webapp/values.yaml @@ -0,0 +1,92 @@ +# Default values for cgen-webapp. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: o2nextgen.azurecr.io/cgen-webapp + pullPolicy: IfNotPresent + + # Overrides the image tag whose default is the chart appVersion. + tag: "1.0.138-dev" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: cgen.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus-cgen + hosts: + - cgen.o2bus.com +env: + values: + - name: CHOKIDAR_USEPOLLING + value: true + - name: REACT_APP_NAME + value: dockerEnv + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/esender-api/.helmignore b/deploy/release-deploy/helm_charts/esender-api/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/esender-api/Chart.yaml b/deploy/release-deploy/helm_charts/esender-api/Chart.yaml new file mode 100644 index 00000000..18eb477a --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: esender-api +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/esender-api/templates/NOTES.txt b/deploy/release-deploy/helm_charts/esender-api/templates/NOTES.txt new file mode 100644 index 00000000..e67e2813 --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "esender-api.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "esender-api.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "esender-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "esender-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/esender-api/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/esender-api/templates/_helpers.tpl new file mode 100644 index 00000000..584e8e20 --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "esender-api.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "esender-api.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "esender-api.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "esender-api.labels" -}} +helm.sh/chart: {{ include "esender-api.chart" . }} +{{ include "esender-api.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "esender-api.selectorLabels" -}} +app.kubernetes.io/name: {{ include "esender-api.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "esender-api.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "esender-api.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/k8s/charts/o2bionics-webapp/templates/deployment.yaml b/deploy/release-deploy/helm_charts/esender-api/templates/deployment.yaml similarity index 82% rename from deploy/k8s/charts/o2bionics-webapp/templates/deployment.yaml rename to deploy/release-deploy/helm_charts/esender-api/templates/deployment.yaml index 05a1a3db..fbf062bd 100644 --- a/deploy/k8s/charts/o2bionics-webapp/templates/deployment.yaml +++ b/deploy/release-deploy/helm_charts/esender-api/templates/deployment.yaml @@ -1,16 +1,16 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "o2bionics-webapp.fullname" . }} + name: {{ include "esender-api.fullname" . }} labels: - {{- include "o2bionics-webapp.labels" . | nindent 4 }} + {{- include "esender-api.labels" . | nindent 4 }} spec: {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} {{- end }} selector: matchLabels: - {{- include "o2bionics-webapp.selectorLabels" . | nindent 6 }} + {{- include "esender-api.selectorLabels" . | nindent 6 }} template: metadata: {{- with .Values.podAnnotations }} @@ -18,13 +18,13 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} labels: - {{- include "o2bionics-webapp.selectorLabels" . | nindent 8 }} + {{- include "esender-api.selectorLabels" . | nindent 8 }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "o2bionics-webapp.serviceAccountName" . }} + serviceAccountName: {{ include "esender-api.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: diff --git a/deploy/release-deploy/helm_charts/esender-api/templates/hpa.yaml b/deploy/release-deploy/helm_charts/esender-api/templates/hpa.yaml new file mode 100644 index 00000000..5b508fac --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "esender-api.fullname" . }} + labels: + {{- include "esender-api.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "esender-api.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/esender-api/templates/ingress.yaml b/deploy/release-deploy/helm_charts/esender-api/templates/ingress.yaml new file mode 100644 index 00000000..10cc9266 --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "esender-api.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "esender-api.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/esender-api/templates/service.yaml b/deploy/release-deploy/helm_charts/esender-api/templates/service.yaml new file mode 100644 index 00000000..055bff95 --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "esender-api.fullname" . }} + labels: + {{- include "esender-api.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "esender-api.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/esender-api/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/esender-api/templates/serviceaccount.yaml new file mode 100644 index 00000000..9d24c7ef --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "esender-api.serviceAccountName" . }} + labels: + {{- include "esender-api.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/esender-api/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/esender-api/templates/tests/test-connection.yaml new file mode 100644 index 00000000..01606509 --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "esender-api.fullname" . }}-test-connection" + labels: + {{- include "esender-api.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "esender-api.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/esender-api/values.yaml b/deploy/release-deploy/helm_charts/esender-api/values.yaml new file mode 100644 index 00000000..009da3a5 --- /dev/null +++ b/deploy/release-deploy/helm_charts/esender-api/values.yaml @@ -0,0 +1,83 @@ +# Default values for esender-api. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: esender.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus-esender + hosts: + - esender.o2bus.com + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/goevent-api/.helmignore b/deploy/release-deploy/helm_charts/goevent-api/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/goevent-api/Chart.yaml b/deploy/release-deploy/helm_charts/goevent-api/Chart.yaml new file mode 100644 index 00000000..125ad507 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: goevent-api +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/NOTES.txt b/deploy/release-deploy/helm_charts/goevent-api/templates/NOTES.txt new file mode 100644 index 00000000..b87bd851 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "goevent-api.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "goevent-api.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "goevent-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "goevent-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/goevent-api/templates/_helpers.tpl new file mode 100644 index 00000000..1f2ea48f --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "goevent-api.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "goevent-api.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "goevent-api.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "goevent-api.labels" -}} +helm.sh/chart: {{ include "goevent-api.chart" . }} +{{ include "goevent-api.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "goevent-api.selectorLabels" -}} +app.kubernetes.io/name: {{ include "goevent-api.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "goevent-api.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "goevent-api.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/deployment.yaml b/deploy/release-deploy/helm_charts/goevent-api/templates/deployment.yaml new file mode 100644 index 00000000..58c42e85 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "goevent-api.fullname" . }} + labels: + {{- include "goevent-api.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "goevent-api.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "goevent-api.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "goevent-api.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/hpa.yaml b/deploy/release-deploy/helm_charts/goevent-api/templates/hpa.yaml new file mode 100644 index 00000000..8344d4d1 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "goevent-api.fullname" . }} + labels: + {{- include "goevent-api.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "goevent-api.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/ingress.yaml b/deploy/release-deploy/helm_charts/goevent-api/templates/ingress.yaml new file mode 100644 index 00000000..6857e4fa --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "goevent-api.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "goevent-api.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/service.yaml b/deploy/release-deploy/helm_charts/goevent-api/templates/service.yaml new file mode 100644 index 00000000..fbf9e342 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "goevent-api.fullname" . }} + labels: + {{- include "goevent-api.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "goevent-api.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/goevent-api/templates/serviceaccount.yaml new file mode 100644 index 00000000..c6a2a652 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "goevent-api.serviceAccountName" . }} + labels: + {{- include "goevent-api.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/goevent-api/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/goevent-api/templates/tests/test-connection.yaml new file mode 100644 index 00000000..b952cdd5 --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "goevent-api.fullname" . }}-test-connection" + labels: + {{- include "goevent-api.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "goevent-api.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/goevent-api/values.yaml b/deploy/release-deploy/helm_charts/goevent-api/values.yaml new file mode 100644 index 00000000..ae16d71e --- /dev/null +++ b/deploy/release-deploy/helm_charts/goevent-api/values.yaml @@ -0,0 +1,83 @@ +# Default values for goevent-api. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: goevent-api.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus-goevent-api + hosts: + - goevent-api.o2bus.com + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/.helmignore b/deploy/release-deploy/helm_charts/o2bus-webapp/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/Chart.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/Chart.yaml new file mode 100644 index 00000000..0cbdbb0d --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: o2bus-webapp +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/NOTES.txt b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/NOTES.txt new file mode 100644 index 00000000..aed5fcb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "o2bus-webapp.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "o2bus-webapp.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "o2bus-webapp.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "o2bus-webapp.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/_helpers.tpl new file mode 100644 index 00000000..cc6f8599 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "o2bus-webapp.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "o2bus-webapp.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "o2bus-webapp.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "o2bus-webapp.labels" -}} +helm.sh/chart: {{ include "o2bus-webapp.chart" . }} +{{ include "o2bus-webapp.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "o2bus-webapp.selectorLabels" -}} +app.kubernetes.io/name: {{ include "o2bus-webapp.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "o2bus-webapp.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "o2bus-webapp.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/deployment.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/deployment.yaml new file mode 100644 index 00000000..8451c3e8 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "o2bus-webapp.fullname" . }} + labels: + {{- include "o2bus-webapp.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "o2bus-webapp.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "o2bus-webapp.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "o2bus-webapp.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/hpa.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/hpa.yaml new file mode 100644 index 00000000..7108cde0 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "o2bus-webapp.fullname" . }} + labels: + {{- include "o2bus-webapp.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "o2bus-webapp.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/ingress.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/ingress.yaml new file mode 100644 index 00000000..17f0ddcf --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "o2bus-webapp.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "o2bus-webapp.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/service.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/service.yaml new file mode 100644 index 00000000..421b41ad --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "o2bus-webapp.fullname" . }} + labels: + {{- include "o2bus-webapp.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "o2bus-webapp.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/serviceaccount.yaml new file mode 100644 index 00000000..2ae3dac0 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "o2bus-webapp.serviceAccountName" . }} + labels: + {{- include "o2bus-webapp.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/tests/test-connection.yaml new file mode 100644 index 00000000..c109ebc0 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "o2bus-webapp.fullname" . }}-test-connection" + labels: + {{- include "o2bus-webapp.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "o2bus-webapp.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/o2bus-webapp/values.yaml b/deploy/release-deploy/helm_charts/o2bus-webapp/values.yaml new file mode 100644 index 00000000..65a47277 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2bus-webapp/values.yaml @@ -0,0 +1,83 @@ +# Default values for o2bus-webapp. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus + hosts: + - o2bus.com + +resources: #{} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/.helmignore b/deploy/release-deploy/helm_charts/o2nextgen-auth/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/Chart.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/Chart.yaml new file mode 100644 index 00000000..215c9707 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: o2nextgen-auth +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/NOTES.txt b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/NOTES.txt new file mode 100644 index 00000000..91837f5b --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "o2nextgen-auth.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "o2nextgen-auth.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "o2nextgen-auth.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "o2nextgen-auth.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/_helpers.tpl new file mode 100644 index 00000000..f682c4ef --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "o2nextgen-auth.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "o2nextgen-auth.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "o2nextgen-auth.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "o2nextgen-auth.labels" -}} +helm.sh/chart: {{ include "o2nextgen-auth.chart" . }} +{{ include "o2nextgen-auth.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "o2nextgen-auth.selectorLabels" -}} +app.kubernetes.io/name: {{ include "o2nextgen-auth.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "o2nextgen-auth.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "o2nextgen-auth.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/deployment.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/deployment.yaml new file mode 100644 index 00000000..95383dc9 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "o2nextgen-auth.fullname" . }} + labels: + {{- include "o2nextgen-auth.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "o2nextgen-auth.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "o2nextgen-auth.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "o2nextgen-auth.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/hpa.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/hpa.yaml new file mode 100644 index 00000000..fadc2938 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "o2nextgen-auth.fullname" . }} + labels: + {{- include "o2nextgen-auth.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "o2nextgen-auth.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/ingress.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/ingress.yaml new file mode 100644 index 00000000..342ae592 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "o2nextgen-auth.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "o2nextgen-auth.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/service.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/service.yaml new file mode 100644 index 00000000..1063ec9e --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "o2nextgen-auth.fullname" . }} + labels: + {{- include "o2nextgen-auth.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "o2nextgen-auth.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/serviceaccount.yaml new file mode 100644 index 00000000..5a01dc72 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "o2nextgen-auth.serviceAccountName" . }} + labels: + {{- include "o2nextgen-auth.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/tests/test-connection.yaml new file mode 100644 index 00000000..94158418 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "o2nextgen-auth.fullname" . }}-test-connection" + labels: + {{- include "o2nextgen-auth.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "o2nextgen-auth.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/o2nextgen-auth/values.yaml b/deploy/release-deploy/helm_charts/o2nextgen-auth/values.yaml new file mode 100644 index 00000000..142783f5 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-auth/values.yaml @@ -0,0 +1,86 @@ +# Default values for o2nextgen-auth. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: auth.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-identity-o2bus + hosts: + - auth.o2bus.com + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: #{} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/.helmignore b/deploy/release-deploy/helm_charts/o2nextgen-webportal/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/Chart.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/Chart.yaml new file mode 100644 index 00000000..ace5eba3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: o2nextgen-webportal +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/NOTES.txt b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/NOTES.txt new file mode 100644 index 00000000..108ae9eb --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "o2nextgen-webportal.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "o2nextgen-webportal.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "o2nextgen-webportal.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "o2nextgen-webportal.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/_helpers.tpl new file mode 100644 index 00000000..ed85c49e --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "o2nextgen-webportal.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "o2nextgen-webportal.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "o2nextgen-webportal.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "o2nextgen-webportal.labels" -}} +helm.sh/chart: {{ include "o2nextgen-webportal.chart" . }} +{{ include "o2nextgen-webportal.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "o2nextgen-webportal.selectorLabels" -}} +app.kubernetes.io/name: {{ include "o2nextgen-webportal.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "o2nextgen-webportal.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "o2nextgen-webportal.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/deployment.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/deployment.yaml new file mode 100644 index 00000000..4dcdff13 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "o2nextgen-webportal.fullname" . }} + labels: + {{- include "o2nextgen-webportal.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "o2nextgen-webportal.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "o2nextgen-webportal.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "o2nextgen-webportal.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/hpa.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/hpa.yaml new file mode 100644 index 00000000..bca9ed16 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "o2nextgen-webportal.fullname" . }} + labels: + {{- include "o2nextgen-webportal.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "o2nextgen-webportal.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/ingress.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/ingress.yaml new file mode 100644 index 00000000..aa093531 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "o2nextgen-webportal.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "o2nextgen-webportal.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/service.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/service.yaml new file mode 100644 index 00000000..fb6a69f2 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "o2nextgen-webportal.fullname" . }} + labels: + {{- include "o2nextgen-webportal.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "o2nextgen-webportal.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/serviceaccount.yaml new file mode 100644 index 00000000..b9f21f7b --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "o2nextgen-webportal.serviceAccountName" . }} + labels: + {{- include "o2nextgen-webportal.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/tests/test-connection.yaml new file mode 100644 index 00000000..65a04d68 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "o2nextgen-webportal.fullname" . }}-test-connection" + labels: + {{- include "o2nextgen-webportal.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "o2nextgen-webportal.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/o2nextgen-webportal/values.yaml b/deploy/release-deploy/helm_charts/o2nextgen-webportal/values.yaml new file mode 100644 index 00000000..4a5ae476 --- /dev/null +++ b/deploy/release-deploy/helm_charts/o2nextgen-webportal/values.yaml @@ -0,0 +1,82 @@ +# Default values for o2nextgen-webportal. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/.helmignore b/deploy/release-deploy/helm_charts/ontracker-api/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/ontracker-api/Chart.yaml b/deploy/release-deploy/helm_charts/ontracker-api/Chart.yaml new file mode 100644 index 00000000..e1d0d734 --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: ontracker-api +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/NOTES.txt b/deploy/release-deploy/helm_charts/ontracker-api/templates/NOTES.txt new file mode 100644 index 00000000..b19f0d4e --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "ontracker-api.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "ontracker-api.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "ontracker-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "ontracker-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/ontracker-api/templates/_helpers.tpl new file mode 100644 index 00000000..0427191a --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "ontracker-api.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "ontracker-api.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "ontracker-api.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "ontracker-api.labels" -}} +helm.sh/chart: {{ include "ontracker-api.chart" . }} +{{ include "ontracker-api.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "ontracker-api.selectorLabels" -}} +app.kubernetes.io/name: {{ include "ontracker-api.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "ontracker-api.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "ontracker-api.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/deployment.yaml b/deploy/release-deploy/helm_charts/ontracker-api/templates/deployment.yaml new file mode 100644 index 00000000..ca136ee7 --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "ontracker-api.fullname" . }} + labels: + {{- include "ontracker-api.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "ontracker-api.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "ontracker-api.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "ontracker-api.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/hpa.yaml b/deploy/release-deploy/helm_charts/ontracker-api/templates/hpa.yaml new file mode 100644 index 00000000..e7e4bbff --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "ontracker-api.fullname" . }} + labels: + {{- include "ontracker-api.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "ontracker-api.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/ingress.yaml b/deploy/release-deploy/helm_charts/ontracker-api/templates/ingress.yaml new file mode 100644 index 00000000..93c19a67 --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "ontracker-api.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "ontracker-api.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/service.yaml b/deploy/release-deploy/helm_charts/ontracker-api/templates/service.yaml new file mode 100644 index 00000000..a59c7c1c --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "ontracker-api.fullname" . }} + labels: + {{- include "ontracker-api.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "ontracker-api.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/ontracker-api/templates/serviceaccount.yaml new file mode 100644 index 00000000..f3dcab6f --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "ontracker-api.serviceAccountName" . }} + labels: + {{- include "ontracker-api.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/ontracker-api/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/ontracker-api/templates/tests/test-connection.yaml new file mode 100644 index 00000000..71dd34a7 --- /dev/null +++ b/deploy/release-deploy/helm_charts/ontracker-api/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "ontracker-api.fullname" . }}-test-connection" + labels: + {{- include "ontracker-api.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "ontracker-api.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/k8s/charts/o2bionics-webapp/values.yaml b/deploy/release-deploy/helm_charts/ontracker-api/values.yaml similarity index 97% rename from deploy/k8s/charts/o2bionics-webapp/values.yaml rename to deploy/release-deploy/helm_charts/ontracker-api/values.yaml index c78095ac..2832b152 100644 --- a/deploy/k8s/charts/o2bionics-webapp/values.yaml +++ b/deploy/release-deploy/helm_charts/ontracker-api/values.yaml @@ -1,4 +1,4 @@ -# Default values for o2bionics-webapp. +# Default values for ontracker-api. # This is a YAML-formatted file. # Declare variables to be passed into your templates. diff --git a/deploy/release-deploy/helm_charts/slink-api/.helmignore b/deploy/release-deploy/helm_charts/slink-api/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/slink-api/Chart.yaml b/deploy/release-deploy/helm_charts/slink-api/Chart.yaml new file mode 100644 index 00000000..ef62fa4f --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: slink-api +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/NOTES.txt b/deploy/release-deploy/helm_charts/slink-api/templates/NOTES.txt new file mode 100644 index 00000000..300ddceb --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "slink-api.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "slink-api.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "slink-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "slink-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/slink-api/templates/_helpers.tpl new file mode 100644 index 00000000..2650515d --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "slink-api.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "slink-api.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "slink-api.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "slink-api.labels" -}} +helm.sh/chart: {{ include "slink-api.chart" . }} +{{ include "slink-api.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "slink-api.selectorLabels" -}} +app.kubernetes.io/name: {{ include "slink-api.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "slink-api.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "slink-api.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/deployment.yaml b/deploy/release-deploy/helm_charts/slink-api/templates/deployment.yaml new file mode 100644 index 00000000..73de54d6 --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "slink-api.fullname" . }} + labels: + {{- include "slink-api.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "slink-api.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "slink-api.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "slink-api.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/hpa.yaml b/deploy/release-deploy/helm_charts/slink-api/templates/hpa.yaml new file mode 100644 index 00000000..46af6676 --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "slink-api.fullname" . }} + labels: + {{- include "slink-api.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "slink-api.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/ingress.yaml b/deploy/release-deploy/helm_charts/slink-api/templates/ingress.yaml new file mode 100644 index 00000000..cf416ad9 --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "slink-api.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "slink-api.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/service.yaml b/deploy/release-deploy/helm_charts/slink-api/templates/service.yaml new file mode 100644 index 00000000..a7ee0fbd --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "slink-api.fullname" . }} + labels: + {{- include "slink-api.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "slink-api.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/slink-api/templates/serviceaccount.yaml new file mode 100644 index 00000000..fd7d70e3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "slink-api.serviceAccountName" . }} + labels: + {{- include "slink-api.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/slink-api/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/slink-api/templates/tests/test-connection.yaml new file mode 100644 index 00000000..3981c6fa --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "slink-api.fullname" . }}-test-connection" + labels: + {{- include "slink-api.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "slink-api.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/slink-api/values.yaml b/deploy/release-deploy/helm_charts/slink-api/values.yaml new file mode 100644 index 00000000..30f13676 --- /dev/null +++ b/deploy/release-deploy/helm_charts/slink-api/values.yaml @@ -0,0 +1,83 @@ +# Default values for slink-api. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: slink-api.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus-slink-api + hosts: + - slink-api.o2bus.com + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/.helmignore b/deploy/release-deploy/helm_charts/smalltalk-api/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/Chart.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/Chart.yaml new file mode 100644 index 00000000..1eebe79a --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: smalltalk-api +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/NOTES.txt b/deploy/release-deploy/helm_charts/smalltalk-api/templates/NOTES.txt new file mode 100644 index 00000000..b928f7b0 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "smalltalk-api.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "smalltalk-api.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "smalltalk-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "smalltalk-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/smalltalk-api/templates/_helpers.tpl new file mode 100644 index 00000000..e0d6e4c3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "smalltalk-api.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "smalltalk-api.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "smalltalk-api.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "smalltalk-api.labels" -}} +helm.sh/chart: {{ include "smalltalk-api.chart" . }} +{{ include "smalltalk-api.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "smalltalk-api.selectorLabels" -}} +app.kubernetes.io/name: {{ include "smalltalk-api.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "smalltalk-api.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "smalltalk-api.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/deployment.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/templates/deployment.yaml new file mode 100644 index 00000000..3cdf2d1a --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smalltalk-api.fullname" . }} + labels: + {{- include "smalltalk-api.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "smalltalk-api.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "smalltalk-api.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "smalltalk-api.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/hpa.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/templates/hpa.yaml new file mode 100644 index 00000000..8eed6d5d --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "smalltalk-api.fullname" . }} + labels: + {{- include "smalltalk-api.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "smalltalk-api.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/ingress.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/templates/ingress.yaml new file mode 100644 index 00000000..2b9f25bd --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "smalltalk-api.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "smalltalk-api.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/service.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/templates/service.yaml new file mode 100644 index 00000000..bfc13202 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "smalltalk-api.fullname" . }} + labels: + {{- include "smalltalk-api.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "smalltalk-api.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/templates/serviceaccount.yaml new file mode 100644 index 00000000..a6070132 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "smalltalk-api.serviceAccountName" . }} + labels: + {{- include "smalltalk-api.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/templates/tests/test-connection.yaml new file mode 100644 index 00000000..ab09fef1 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "smalltalk-api.fullname" . }}-test-connection" + labels: + {{- include "smalltalk-api.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "smalltalk-api.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/smalltalk-api/values.yaml b/deploy/release-deploy/helm_charts/smalltalk-api/values.yaml new file mode 100644 index 00000000..6f7d1156 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smalltalk-api/values.yaml @@ -0,0 +1,82 @@ +# Default values for smalltalk-api. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: smalltalk-api.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus-smalltalk-api + hosts: + - smalltalk-api.o2bus.com +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/.helmignore b/deploy/release-deploy/helm_charts/smartsubscriber-api/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/Chart.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/Chart.yaml new file mode 100644 index 00000000..bba28427 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: smartsubscriber-api +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/NOTES.txt b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/NOTES.txt new file mode 100644 index 00000000..65c65452 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "smartsubscriber-api.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "smartsubscriber-api.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "smartsubscriber-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "smartsubscriber-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/_helpers.tpl b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/_helpers.tpl new file mode 100644 index 00000000..01ba4f6b --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "smartsubscriber-api.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "smartsubscriber-api.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "smartsubscriber-api.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "smartsubscriber-api.labels" -}} +helm.sh/chart: {{ include "smartsubscriber-api.chart" . }} +{{ include "smartsubscriber-api.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "smartsubscriber-api.selectorLabels" -}} +app.kubernetes.io/name: {{ include "smartsubscriber-api.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "smartsubscriber-api.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "smartsubscriber-api.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/deployment.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/deployment.yaml new file mode 100644 index 00000000..10b87160 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smartsubscriber-api.fullname" . }} + labels: + {{- include "smartsubscriber-api.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "smartsubscriber-api.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "smartsubscriber-api.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "smartsubscriber-api.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/hpa.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/hpa.yaml new file mode 100644 index 00000000..8703f5f8 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "smartsubscriber-api.fullname" . }} + labels: + {{- include "smartsubscriber-api.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "smartsubscriber-api.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/ingress.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/ingress.yaml new file mode 100644 index 00000000..c2f74b5c --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "smartsubscriber-api.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "smartsubscriber-api.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/service.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/service.yaml new file mode 100644 index 00000000..e62522f5 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "smartsubscriber-api.fullname" . }} + labels: + {{- include "smartsubscriber-api.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "smartsubscriber-api.selectorLabels" . | nindent 4 }} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/serviceaccount.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/serviceaccount.yaml new file mode 100644 index 00000000..6eb77225 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "smartsubscriber-api.serviceAccountName" . }} + labels: + {{- include "smartsubscriber-api.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/tests/test-connection.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/tests/test-connection.yaml new file mode 100644 index 00000000..916f5997 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "smartsubscriber-api.fullname" . }}-test-connection" + labels: + {{- include "smartsubscriber-api.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "smartsubscriber-api.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/release-deploy/helm_charts/smartsubscriber-api/values.yaml b/deploy/release-deploy/helm_charts/smartsubscriber-api/values.yaml new file mode 100644 index 00000000..da510902 --- /dev/null +++ b/deploy/release-deploy/helm_charts/smartsubscriber-api/values.yaml @@ -0,0 +1,82 @@ +# Default values for smartsubscriber-api. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: smartsubscriber-api.o2bus.com + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: tls-secret-o2bus-smartsubscriber-api + hosts: + - smartsubscriber-api.o2bus.com +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {}