diff --git a/etc/azure/scripts/cluster-issuer.yaml b/etc/azure/scripts/cluster-issuer.yaml new file mode 100644 index 00000000..c3445a09 --- /dev/null +++ b/etc/azure/scripts/cluster-issuer.yaml @@ -0,0 +1,18 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: letsencrypt +spec: + acme: + server: https://acme-v02.api.letsencrypt.org/directory + email: info@volosoft.com + privateKeySecretRef: + name: letsencrypt + solvers: + - http01: + ingress: + class: nginx + podTemplate: + spec: + nodeSelector: + "kubernetes.io/os": linux \ No newline at end of file diff --git a/etc/azure/scripts/corednsms.yaml b/etc/azure/scripts/corednsms.yaml new file mode 100644 index 00000000..e8909107 --- /dev/null +++ b/etc/azure/scripts/corednsms.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: coredns-custom + namespace: kube-system +data: + Corefile.override: | + rewrite name substring account.eshoponabp.io es-az-account \ No newline at end of file diff --git a/etc/azure/scripts/install-ingress.ps1 b/etc/azure/scripts/install-ingress.ps1 new file mode 100644 index 00000000..153ed91d --- /dev/null +++ b/etc/azure/scripts/install-ingress.ps1 @@ -0,0 +1,69 @@ +$REGISTRY_NAME="volocr.azurecr.io" +$ACR_URL="volocr.azurecr.io" +$CONTROLLER_REGISTRY="k8s.gcr.io" +$CONTROLLER_IMAGE="ingress-nginx/controller" +$CONTROLLER_TAG="v0.48.1" +$PATCH_REGISTRY="docker.io" +$PATCH_IMAGE="jettech/kube-webhook-certgen" +$PATCH_TAG="v1.5.1" +$DEFAULTBACKEND_REGISTRY="k8s.gcr.io" +$DEFAULTBACKEND_IMAGE="defaultbackend-amd64" +$DEFAULTBACKEND_TAG="1.5" +$CERT_MANAGER_REGISTRY="quay.io" +$CERT_MANAGER_TAG="v1.3.1" +$CERT_MANAGER_IMAGE_CONTROLLER="jetstack/cert-manager-controller" +$CERT_MANAGER_IMAGE_WEBHOOK="jetstack/cert-manager-webhook" +$CERT_MANAGER_IMAGE_CAINJECTOR="jetstack/cert-manager-cainjector" + +az acr import --name $REGISTRY_NAME --source ${CONTROLLER_REGISTRY}/${CONTROLLER_IMAGE}:${CONTROLLER_TAG} --image ${CONTROLLER_IMAGE}:${CONTROLLER_TAG} +az acr import --name $REGISTRY_NAME --source ${PATCH_REGISTRY}/${PATCH_IMAGE}:${PATCH_TAG} --image ${PATCH_IMAGE}:${PATCH_TAG} +az acr import --name $REGISTRY_NAME --source ${DEFAULTBACKEND_REGISTRY}/${DEFAULTBACKEND_IMAGE}:${DEFAULTBACKEND_TAG} --image ${DEFAULTBACKEND_IMAGE}:${DEFAULTBACKEND_TAG} +az acr import --name $REGISTRY_NAME --source ${CERT_MANAGER_REGISTRY}/${CERT_MANAGER_IMAGE_CONTROLLER}:${CERT_MANAGER_TAG} --image ${CERT_MANAGER_IMAGE_CONTROLLER}:${CERT_MANAGER_TAG} +az acr import --name $REGISTRY_NAME --source ${CERT_MANAGER_REGISTRY}/${CERT_MANAGER_IMAGE_WEBHOOK}:${CERT_MANAGER_TAG} --image ${CERT_MANAGER_IMAGE_WEBHOOK}:${CERT_MANAGER_TAG} +az acr import --name $REGISTRY_NAME --source ${CERT_MANAGER_REGISTRY}/${CERT_MANAGER_IMAGE_CAINJECTOR}:${CERT_MANAGER_TAG} --image ${CERT_MANAGER_IMAGE_CAINJECTOR}:${CERT_MANAGER_TAG} + +# Create a namespace for your ingress resources +kubectl create namespace ingress-basic + +# Add the ingress-nginx repository +helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx + +# Use Helm to deploy an NGINX ingress controller +helm install nginx-ingress ingress-nginx/ingress-nginx ` + --namespace ingress-basic ` + --set controller.replicaCount=1 ` + --set controller.nodeSelector."kubernetes\.io/os"=linux ` + --set controller.image.registry=$ACR_URL ` + --set controller.image.image=$CONTROLLER_IMAGE ` + --set controller.image.tag=$CONTROLLER_TAG ` + --set controller.image.digest="" ` + --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux ` + --set controller.admissionWebhooks.patch.image.registry=$ACR_URL ` + --set controller.admissionWebhooks.patch.image.image=$PATCH_IMAGE ` + --set controller.admissionWebhooks.patch.image.tag=$PATCH_TAG ` + --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux ` + --set defaultBackend.image.registry=$ACR_URL ` + --set defaultBackend.image.image=$DEFAULTBACKEND_IMAGE ` + --set defaultBackend.image.tag=$DEFAULTBACKEND_TAG + +# Label the ingress-basic namespace to disable resource validation +kubectl label namespace ingress-basic cert-manager.io/disable-validation=true + +# Add the Jetstack Helm repository +helm repo add jetstack https://charts.jetstack.io + +# Update your local Helm chart repository cache +helm repo update + +# Install the cert-manager Helm chart +helm install cert-manager jetstack/cert-manager ` + --namespace ingress-basic ` + --version ${CERT_MANAGER_TAG} ` + --set installCRDs=true ` + --set nodeSelector."kubernetes\.io/os"=linux ` + --set image.repository=${ACR_URL}/${CERT_MANAGER_IMAGE_CONTROLLER} ` + --set image.tag=${CERT_MANAGER_TAG} ` + --set webhook.image.repository=${ACR_URL}/${CERT_MANAGER_IMAGE_WEBHOOK} ` + --set webhook.image.tag=${CERT_MANAGER_TAG} ` + --set cainjector.image.repository=${ACR_URL}/${CERT_MANAGER_IMAGE_CAINJECTOR} ` + --set cainjector.image.tag=${CERT_MANAGER_TAG} \ No newline at end of file diff --git a/etc/azure/scripts/push-images.ps1 b/etc/azure/scripts/push-images.ps1 new file mode 100644 index 00000000..c9668c9c --- /dev/null +++ b/etc/azure/scripts/push-images.ps1 @@ -0,0 +1,36 @@ +param ($version='latest') + +az acr login --name volocr + +docker tag eshoponabp.app-web:$version volocr.azurecr.io/eshoponabp.app-web:$version +docker push volocr.azurecr.io/eshoponabp.app-web:$version + +docker tag eshoponabp.app-authserver:$version volocr.azurecr.io/eshoponabp.app-authserver:$version +docker push volocr.azurecr.io/eshoponabp.app-authserver:$version + +docker tag eshoponabp.apppublicweb:$version volocr.azurecr.io/eshoponabp.apppublicweb:$version +docker push volocr.azurecr.io/eshoponabp.apppublicweb:$version + +docker tag eshoponabp.gateway-web:$version volocr.azurecr.io/eshoponabp.gateway-web:$version +docker push volocr.azurecr.io/c:$version + +docker tag eshoponabp.gateway-web-public:$version volocr.azurecr.io/eshoponabp.gateway-web-public:$version +docker push volocr.azurecr.io/eshoponabp.gateway-web-public:$version + +docker tag eshoponabp.service-identity:$version volocr.azurecr.io/eshoponabp.service-identity:$version +docker push volocr.azurecr.io/eshoponabp.service-identity:$version + +docker tag eshoponabp.service-administration:$version volocr.azurecr.io/eshoponabp.service-administration:$version +docker push volocr.azurecr.io/eshoponabp.service-administration:$version + +docker tag eshoponabp.service-basket:$version volocr.azurecr.io/eshoponabp.service-basket:$version +docker push volocr.azurecr.io/eshoponabp.service-basket:$version + +docker tag eshoponabp.service-catalog:$version volocr.azurecr.io/eshoponabp.service-catalog:$version +docker push volocr.azurecr.io/eshoponabp.service-catalog:$version + +docker tag eshoponabp.service-ordering:$version volocr.azurecr.io/eshoponabp.service-ordering:$version +docker push volocr.azurecr.io/eshoponabp.service-ordering:$version + +docker tag eshoponabp.service-payment:$version volocr.azurecr.io/eshoponabp.service-payment:$version +docker push volocr.azurecr.io/eshoponabp.service-payment:$version \ No newline at end of file