local update
This commit is contained in:
		
							parent
							
								
									9e5cd835b4
								
							
						
					
					
						commit
						4bb7a854a2
					
				@ -16,5 +16,5 @@ if ($aksName -and $aksRg) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Write-Host "Installing cert-manager on current cluster"
 | 
			
		||||
 | 
			
		||||
#1.5.4
 | 
			
		||||
kubectl apply  --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.11.0/cert-manager.yaml --validate=false
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										212
									
								
								deploy/k8s/helm/allrelated.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								deploy/k8s/helm/allrelated.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,212 @@
 | 
			
		||||
# login in Ubuntu
 | 
			
		||||
az login az login --use-device-code /
 | 
			
		||||
az login --tenant 429950a6-2916-4b6f-8bd1-09b5071951d4
 | 
			
		||||
#Create a resource group
 | 
			
		||||
resourceGroup=DL-LEARNING-RG
 | 
			
		||||
az group create --name $resourceGroup --location southeastasia  #/////canadacentral
 | 
			
		||||
 | 
			
		||||
#delete resouce group 
 | 
			
		||||
az group delete --name $resourceGroup
 | 
			
		||||
 | 
			
		||||
# Vnet 
 | 
			
		||||
#resourceGroup='DL-LEARNING-RG'
 | 
			
		||||
subscription='909efc0a-aa87-4bd2-884c-c93b75692357'
 | 
			
		||||
vnetName='aks-vnet-eshop'
 | 
			
		||||
 | 
			
		||||
az network vnet create -g $resourceGroup --subscription $subscription -n $vnetName  -l southeastasia --address-prefix 10.10.0.0/17 --subnet-name eshopsubnet --subnet-prefix 10.10.0.0/18
 | 
			
		||||
 | 
			
		||||
subnetId=$(az network vnet subnet show --resource-group $resourceGroup --subscription $subscription --vnet-name $vnetName --name eshopsubnet --query id -o tsv)
 | 
			
		||||
 | 
			
		||||
# Create a private container registry
 | 
			
		||||
#######################################################################################
 | 
			
		||||
# Create a resource group for acr
 | 
			
		||||
acrrg=DL-PRIVATE-RG 
 | 
			
		||||
az group create --name $acrrg --location southeastasia ///eastus 
 | 
			
		||||
# Create a container registry
 | 
			
		||||
az acr create --resource-group $acrrg \
 | 
			
		||||
  --name heigoo --sku Basic                     ###// Standard Premium
 | 
			
		||||
 | 
			
		||||
#Log in to registry
 | 
			
		||||
 az acr login --name heigoo #geCqSifODg7Zs8KCni//P/f295oI8uUr
 | 
			
		||||
 | 
			
		||||
 #Push image to registry
 | 
			
		||||
 docker pull mcr.microsoft.com/hello-world
 | 
			
		||||
 docker tag mcr.microsoft.com/hello-world heigoo.azurecr.io/hello-world:v1
 | 
			
		||||
 docker push heigoo.azurecr.io/hello-world:v1
 | 
			
		||||
 docker rmi heigoo.azurecr.io/hello-world:v1
 | 
			
		||||
 | 
			
		||||
 #List container images
 | 
			
		||||
 az acr repository list --name heigoo --output table
 | 
			
		||||
 az acr repository show-tags --name heigoo --repository hello-world --output table
 | 
			
		||||
 | 
			
		||||
 #Run image from registry
 | 
			
		||||
 docker run heigoo.azurecr.io/hello-world:v1
 | 
			
		||||
#Clean up resources
 | 
			
		||||
 az group delete --name DL-PRIVATE-RG
 | 
			
		||||
 | 
			
		||||
# crete aks Cluster
 | 
			
		||||
clusterName='eShop'
 | 
			
		||||
acr=$(az acr show --name heigoo --resource-group $acrrg --query "id" --output tsv)
 | 
			
		||||
 | 
			
		||||
az aks create -n $clusterName --resource-group $resourceGroup --subscription $subscription --kubernetes-version 1.21.1 --network-plugin azure --enable-managed-identity  --generate-ssh-keys --attach-acr $acr --node-count 2  --vnet-subnet-id $subnetId
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## if acr already created
 | 
			
		||||
az aks update --name myAKSCluster --resource-group myResourceGroup --subscription mySubscription --attach-acr <acr-resource-id>
 | 
			
		||||
az acr show --name acrName --resource-group myResourceGroup --subscription mySubscription --query "id"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## deploy
 | 
			
		||||
az account set --subscription 909efc0a-aa87-4bd2-884c-c93b75692357
 | 
			
		||||
az aks get-credentials --resource-group DL-LEARNING-RG --name eShop
 | 
			
		||||
kubectl get all -n cert-manager -o wide
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# install ingress-nginx
 | 
			
		||||
#cd D:\temp\microservice\eShopOnContainers\deploy\k8s\nginx-ingress
 | 
			
		||||
kubectl apply -f mandatory.yaml
 | 
			
		||||
kubectl apply -f local-cm.yaml #(add large-client-header-buffers: "4 16k")
 | 
			
		||||
kubectl apply -f local-svc.yaml
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#cd D:\temp\microservice\eShopOnContainers\deploy\k8s\helm
 | 
			
		||||
 | 
			
		||||
#.\deploy-all.ps1 -externalDns aks -aksName eShop -aksRg DL-LEARNING-RG -imageTag linux-latest -registry heigoo.azurecr.io -dockerUser heigoo -dockerPassword tuQbbDDaFxYPV6NMBpEylhw -useMesh $false
 | 
			
		||||
 | 
			
		||||
.\deploy-all.ps1 -externalDns eshop.anniedesign.xyz -imageTag linux-latest -registry heigoo.azurecr.io -dockerUser heigoo -dockerPassword geCqSifODg7Zs8KCni//P/f295oI8uUr -useMesh $false -sslSupport staging
 | 
			
		||||
.\deploy-all.ps1 -externalDns eshop.anniedesign.xyz -imageTag linux-latest -registry heigoo.azurecr.io -dockerUser heigoo -dockerPassword geCqSifODg7Zs8KCni//P/f295oI8uUr -useMesh $false -sslSupport prod
 | 
			
		||||
#.\deploy-all.ps1 -externalDns eshop.anniedesign.xyz -aksName eShop -aksRg DL-LEARNING-RG -imageTag linux-dev -useMesh $false
 | 
			
		||||
 | 
			
		||||
# enable tls-support 
 | 
			
		||||
# cd D:\temp\microservice\eShopOnContainers\deploy\k8s
 | 
			
		||||
#run .\enable-tls.ps1
 | 
			
		||||
# rename values-staging.yaml(values-prod.yaml) to values.yaml() and ingressClass to nginx
 | 
			
		||||
# cd D:\temp\microservice\eShopOnContainers\deploy\k8s\helm
 | 
			
		||||
 | 
			
		||||
#kubectl apply -f cert-manager.yaml(if no running .\enable-tls.ps1)
 | 
			
		||||
helm install eshop-tls-support tls-support
 | 
			
		||||
kubectl get issuer
 | 
			
		||||
kubectl get cert -o wide
 | 
			
		||||
helm uninstall eshop-tls-support #(change server and environment to pord server ) redeploy
 | 
			
		||||
 | 
			
		||||
# check deploy status
 | 
			
		||||
kubectl get deployment
 | 
			
		||||
kubectl get ingress #check external IP to bind it on Godaddy (or other DNS provider) with the DNS name
 | 
			
		||||
kubectl get cert # check certificate
 | 
			
		||||
 | 
			
		||||
kubectl get certificaterequest
 | 
			
		||||
kubectl get order 
 | 
			
		||||
kubectl get challenges
 | 
			
		||||
 | 
			
		||||
kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces
 | 
			
		||||
 | 
			
		||||
# CD D:\temp\microservice\eShopOnContainers\deploy\k8s\nodeports to change sql-service.yaml from NodePort to LoadBalancer
 | 
			
		||||
kubectl apply -f sql-service1.yaml
 | 
			
		||||
#get db external IP(lb) to connect to DB to change all http to https (eg.  20.44.192.98:1433 sa/Pass@word)
 | 
			
		||||
 | 
			
		||||
# update clients set ClientUri= replace(clientUri,'http://eshop.','https://eshop.')
 | 
			
		||||
# update ClientRedirectUris set RedirectUri = replace(RedirectUri,'http://eshop.','https://eshop.') where clientid <>3
 | 
			
		||||
# update ClientPostLogoutRedirectUris set PostLogoutRedirectUri = replace(PostLogoutRedirectUri,'http://eshop.','https://eshop.') where clientid <>3
 | 
			
		||||
# webmvc unauthorized client issue (change back RedirectUri to http for temporary usage)
 | 
			
		||||
##uninstall
 | 
			
		||||
 | 
			
		||||
helm uninstall $(helm ls --filter eshop -q) --dry-run
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#############################################################################################
 | 
			
		||||
 ## This creates a working single node Azure Kubernetes Cluster
 | 
			
		||||
## and with an Azure Container Registry. Note, the ACR is in 
 | 
			
		||||
## the same resource group as the AKS for demo purposes. For
 | 
			
		||||
## dev you should have ACR in separate resource group.
 | 
			
		||||
 | 
			
		||||
echo "Beginning AKS Setup for Demo"
 | 
			
		||||
date
 | 
			
		||||
 | 
			
		||||
AKS_RESOURCE_GROUP=aks-rg1
 | 
			
		||||
AKS_CLUSTER_NAME=aks-c1
 | 
			
		||||
ACR_RESOURCE_GROUP=MC_aks-rg1_aks-c1_centralus 
 | 
			
		||||
ACR_NAME=aksacr122
 | 
			
		||||
SERVICE_PRINCIPAL_NAME=aks-sp-user
 | 
			
		||||
RG_LOCATION=CentralUS
 | 
			
		||||
DOCKER_USERNAME=$ACR_NAME
 | 
			
		||||
DOCKER_EMAIL={provide email address here}  #does not have to be an account with docker hub
 | 
			
		||||
#DOCKER_PASSWORD is applied a value later
 | 
			
		||||
 | 
			
		||||
az group create --location $RG_LOCATION --name $AKS_RESOURCE_GROUP
 | 
			
		||||
 | 
			
		||||
az aks create -g $AKS_RESOURCE_GROUP -n $AKS_CLUSTER_NAME --generate-ssh-keys --node-count 1 --node-vm-size Standard_F1s
 | 
			
		||||
 | 
			
		||||
az acr create --resource-group $ACR_RESOURCE_GROUP --name $ACR_NAME --sku Basic --admin-enabled true
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CLIENT_ID=$(az aks show --resource-group $AKS_RESOURCE_GROUP --name $AKS_CLUSTER_NAME --query "servicePrincipalProfile.clientId" --output tsv)
 | 
			
		||||
 | 
			
		||||
# Get the ACR registry resource id
 | 
			
		||||
ACR_ID=$(az acr show --name $ACR_NAME --resource-group $ACR_RESOURCE_GROUP --query "id" --output tsv)
 | 
			
		||||
 | 
			
		||||
# Create role assignment
 | 
			
		||||
az role assignment create --assignee $CLIENT_ID --role Reader --scope $ACR_ID
 | 
			
		||||
 | 
			
		||||
# Populate the ACR login server and resource id.
 | 
			
		||||
ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --query loginServer --output tsv)
 | 
			
		||||
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
 | 
			
		||||
 | 
			
		||||
# Create a contributor role assignment with a scope of the ACR resource.
 | 
			
		||||
SP_PASSWD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --role Reader --scopes $ACR_REGISTRY_ID --query password --output tsv)
 | 
			
		||||
 | 
			
		||||
# Get the service principle client id.
 | 
			
		||||
CLIENT_ID=$(az ad sp show --id http://$SERVICE_PRINCIPAL_NAME --query appId --output tsv)
 | 
			
		||||
 | 
			
		||||
# Output used when creating Kubernetes secret.
 | 
			
		||||
echo "Service principal ID: $CLIENT_ID"
 | 
			
		||||
echo "Service principal password: $SP_PASSWD"
 | 
			
		||||
 | 
			
		||||
#connect to the aks environment
 | 
			
		||||
az aks get-credentials --resource-group $AKS_RESOURCE_GROUP --name $AKS_CLUSTER_NAME
 | 
			
		||||
 | 
			
		||||
ACR_HTTPS_LOGIN_SERVER="https://$ACR_LOGIN_SERVER"
 | 
			
		||||
 | 
			
		||||
### get password from ACR
 | 
			
		||||
DOCKER_PASSWORD=$(az acr credential show -n $ACR_NAME --query passwords[0].value -o tsv)
 | 
			
		||||
kubectl create secret docker-registry acrconnection --docker-server=$ACR_HTTPS_LOGIN_SERVER --docker-username=$DOCKER_USERNAME --docker-password=$DOCKER_PASSWORD --docker-email=$DOCKER_EMAIL
 | 
			
		||||
 | 
			
		||||
az acr login --name $ACR_NAME
 | 
			
		||||
 | 
			
		||||
echo "Completed AKS Setup"
 | 
			
		||||
date
 | 
			
		||||
							
								
								
									
										6361
									
								
								deploy/k8s/helm/cert-manager.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6361
									
								
								deploy/k8s/helm/cert-manager.yaml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										56
									
								
								deploy/k8s/helm/enablelargerheader.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								deploy/k8s/helm/enablelargerheader.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
			
		||||
 | 
			
		||||
# =======================
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webmvc  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webmvc nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webmvc nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webspa nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webspa nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webspa nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webstatus  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webstatus nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webstatus nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwms nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwms nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwms nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwws  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwws nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwws nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-identity-api nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-identity-api nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-identity-api nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-web nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate  --overwrite ingress eshop-webhooks-web nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-web nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-api nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-api nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-api nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-web nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-web nginx.ingress.kubernetes.io/proxy-body-size=8M
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-web nginx.ingress.kubernetes.io/client-body-buffer-size=1M
 | 
			
		||||
 | 
			
		||||
# -------------
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webmvc  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webspa  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webstatus  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwms  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-apigwws  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-identity-api  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-api  nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
kubectl annotate --overwrite ingress eshop-webhooks-web nginx.ingress.kubernetes.io/proxy-buffer-size="16k" 
 | 
			
		||||
 | 
			
		||||
# nginx.ingress.kubernetes.io/proxy-buffer-size: "128k"
 | 
			
		||||
# nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
 | 
			
		||||
# nginx.ingress.kubernetes.io/proxy-body-size: 8M
 | 
			
		||||
# nginx.ingress.kubernetes.io/client-body-buffer-size: 1M
 | 
			
		||||
 | 
			
		||||
# nginx.ingress.kubernetes.io/server-snippet: |
 | 
			
		||||
#   http2_max_header_size 256k;
 | 
			
		||||
#   http2_max_field_size 256k;
 | 
			
		||||
							
								
								
									
										22
									
								
								deploy/k8s/helm/importregistry.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								deploy/k8s/helm/importregistry.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
REGISTRY_NAME=heigoo
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										7
									
								
								deploy/k8s/helm/ingress_class.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								deploy/k8s/helm/ingress_class.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
apiVersion: networking.k8s.io/v1
 | 
			
		||||
kind: IngressClass
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx
 | 
			
		||||
spec:
 | 
			
		||||
  controller: k8s.io/ingress-nginx
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										676
									
								
								deploy/k8s/helm/ingress_nginx_deploy103.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										676
									
								
								deploy/k8s/helm/ingress_nginx_deploy103.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,676 @@
 | 
			
		||||
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Namespace
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-serviceaccount.yaml
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ServiceAccount
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
automountServiceAccountToken: true
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-configmap.yaml
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ConfigMap
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: ingress-nginx-controller
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
data:
 | 
			
		||||
  allow-snippet-annotations: 'true'
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/clusterrole.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRole
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
rules:
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - configmaps
 | 
			
		||||
      - endpoints
 | 
			
		||||
      - nodes
 | 
			
		||||
      - pods
 | 
			
		||||
      - secrets
 | 
			
		||||
    verbs:
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - nodes
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - services
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - networking.k8s.io
 | 
			
		||||
    resources:
 | 
			
		||||
      - ingresses
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - events
 | 
			
		||||
    verbs:
 | 
			
		||||
      - create
 | 
			
		||||
      - patch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - networking.k8s.io
 | 
			
		||||
    resources:
 | 
			
		||||
      - ingresses/status
 | 
			
		||||
    verbs:
 | 
			
		||||
      - update
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - networking.k8s.io
 | 
			
		||||
    resources:
 | 
			
		||||
      - ingressclasses
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/clusterrolebinding.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: ClusterRole
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: ingress-nginx
 | 
			
		||||
    namespace: ingress-nginx
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-role.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: Role
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
rules:
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - namespaces
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - configmaps
 | 
			
		||||
      - pods
 | 
			
		||||
      - secrets
 | 
			
		||||
      - endpoints
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - services
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - networking.k8s.io
 | 
			
		||||
    resources:
 | 
			
		||||
      - ingresses
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - networking.k8s.io
 | 
			
		||||
    resources:
 | 
			
		||||
      - ingresses/status
 | 
			
		||||
    verbs:
 | 
			
		||||
      - update
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - networking.k8s.io
 | 
			
		||||
    resources:
 | 
			
		||||
      - ingressclasses
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - configmaps
 | 
			
		||||
    resourceNames:
 | 
			
		||||
      - ingress-controller-leader
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - update
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - configmaps
 | 
			
		||||
    verbs:
 | 
			
		||||
      - create
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - events
 | 
			
		||||
    verbs:
 | 
			
		||||
      - create
 | 
			
		||||
      - patch
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-rolebinding.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: RoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: Role
 | 
			
		||||
  name: ingress-nginx
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: ingress-nginx
 | 
			
		||||
    namespace: ingress-nginx
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-service-webhook.yaml
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: ingress-nginx-controller-admission
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
spec:
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: https-webhook
 | 
			
		||||
      port: 443
 | 
			
		||||
      targetPort: webhook
 | 
			
		||||
      appProtocol: https
 | 
			
		||||
  selector:
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-service.yaml
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  annotations:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: ingress-nginx-controller
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
spec:
 | 
			
		||||
  type: LoadBalancer
 | 
			
		||||
  externalTrafficPolicy: Local
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: http
 | 
			
		||||
      port: 80
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: http
 | 
			
		||||
      appProtocol: http
 | 
			
		||||
    - name: https
 | 
			
		||||
      port: 443
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: https
 | 
			
		||||
      appProtocol: https
 | 
			
		||||
  selector:
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-deployment.yaml
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: Deployment
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: ingress-nginx-controller
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
spec:
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
      app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
      app.kubernetes.io/component: controller
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  minReadySeconds: 0
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
        app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
        app.kubernetes.io/component: controller
 | 
			
		||||
    spec:
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: controller
 | 
			
		||||
          image: k8s.gcr.io/ingress-nginx/controller:v1.0.3@sha256:4ade87838eb8256b094fbb5272d7dda9b6c7fa8b759e6af5383c1300996a7452
 | 
			
		||||
          imagePullPolicy: IfNotPresent
 | 
			
		||||
          lifecycle:
 | 
			
		||||
            preStop:
 | 
			
		||||
              exec:
 | 
			
		||||
                command:
 | 
			
		||||
                  - /wait-shutdown
 | 
			
		||||
          args:
 | 
			
		||||
            - /nginx-ingress-controller
 | 
			
		||||
            - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
 | 
			
		||||
            - --election-id=ingress-controller-leader
 | 
			
		||||
            - --controller-class=k8s.io/ingress-nginx
 | 
			
		||||
            - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
 | 
			
		||||
            - --validating-webhook=:8443
 | 
			
		||||
            - --validating-webhook-certificate=/usr/local/certificates/cert
 | 
			
		||||
            - --validating-webhook-key=/usr/local/certificates/key
 | 
			
		||||
          securityContext:
 | 
			
		||||
            capabilities:
 | 
			
		||||
              drop:
 | 
			
		||||
                - ALL
 | 
			
		||||
              add:
 | 
			
		||||
                - NET_BIND_SERVICE
 | 
			
		||||
            runAsUser: 101
 | 
			
		||||
            allowPrivilegeEscalation: true
 | 
			
		||||
          env:
 | 
			
		||||
            - name: POD_NAME
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                fieldRef:
 | 
			
		||||
                  fieldPath: metadata.name
 | 
			
		||||
            - name: POD_NAMESPACE
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                fieldRef:
 | 
			
		||||
                  fieldPath: metadata.namespace
 | 
			
		||||
            - name: LD_PRELOAD
 | 
			
		||||
              value: /usr/local/lib/libmimalloc.so
 | 
			
		||||
          livenessProbe:
 | 
			
		||||
            failureThreshold: 5
 | 
			
		||||
            httpGet:
 | 
			
		||||
              path: /healthz
 | 
			
		||||
              port: 10254
 | 
			
		||||
              scheme: HTTP
 | 
			
		||||
            initialDelaySeconds: 10
 | 
			
		||||
            periodSeconds: 10
 | 
			
		||||
            successThreshold: 1
 | 
			
		||||
            timeoutSeconds: 1
 | 
			
		||||
          readinessProbe:
 | 
			
		||||
            failureThreshold: 3
 | 
			
		||||
            httpGet:
 | 
			
		||||
              path: /healthz
 | 
			
		||||
              port: 10254
 | 
			
		||||
              scheme: HTTP
 | 
			
		||||
            initialDelaySeconds: 10
 | 
			
		||||
            periodSeconds: 10
 | 
			
		||||
            successThreshold: 1
 | 
			
		||||
            timeoutSeconds: 1
 | 
			
		||||
          ports:
 | 
			
		||||
            - name: http
 | 
			
		||||
              containerPort: 80
 | 
			
		||||
              protocol: TCP
 | 
			
		||||
            - name: https
 | 
			
		||||
              containerPort: 443
 | 
			
		||||
              protocol: TCP
 | 
			
		||||
            - name: webhook
 | 
			
		||||
              containerPort: 8443
 | 
			
		||||
              protocol: TCP
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - name: webhook-cert
 | 
			
		||||
              mountPath: /usr/local/certificates/
 | 
			
		||||
              readOnly: true
 | 
			
		||||
          resources:
 | 
			
		||||
            requests:
 | 
			
		||||
              cpu: 100m
 | 
			
		||||
              memory: 90Mi
 | 
			
		||||
      nodeSelector:
 | 
			
		||||
        kubernetes.io/os: linux
 | 
			
		||||
      serviceAccountName: ingress-nginx
 | 
			
		||||
      terminationGracePeriodSeconds: 300
 | 
			
		||||
      volumes:
 | 
			
		||||
        - name: webhook-cert
 | 
			
		||||
          secret:
 | 
			
		||||
            secretName: ingress-nginx-admission
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/controller-ingressclass.yaml
 | 
			
		||||
# We don't support namespaced ingressClass yet
 | 
			
		||||
# So a ClusterRole and a ClusterRoleBinding is required
 | 
			
		||||
apiVersion: networking.k8s.io/v1
 | 
			
		||||
kind: IngressClass
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: controller
 | 
			
		||||
  name: nginx
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
spec:
 | 
			
		||||
  controller: k8s.io/ingress-nginx
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/validating-webhook.yaml
 | 
			
		||||
# before changing this value, check the required kubernetes version
 | 
			
		||||
# https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites
 | 
			
		||||
apiVersion: admissionregistration.k8s.io/v1
 | 
			
		||||
kind: ValidatingWebhookConfiguration
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
webhooks:
 | 
			
		||||
  - name: validate.nginx.ingress.kubernetes.io
 | 
			
		||||
    matchPolicy: Equivalent
 | 
			
		||||
    rules:
 | 
			
		||||
      - apiGroups:
 | 
			
		||||
          - networking.k8s.io
 | 
			
		||||
        apiVersions:
 | 
			
		||||
          - v1
 | 
			
		||||
        operations:
 | 
			
		||||
          - CREATE
 | 
			
		||||
          - UPDATE
 | 
			
		||||
        resources:
 | 
			
		||||
          - ingresses
 | 
			
		||||
    failurePolicy: Fail
 | 
			
		||||
    sideEffects: None
 | 
			
		||||
    admissionReviewVersions:
 | 
			
		||||
      - v1
 | 
			
		||||
    clientConfig:
 | 
			
		||||
      service:
 | 
			
		||||
        namespace: ingress-nginx
 | 
			
		||||
        name: ingress-nginx-controller-admission
 | 
			
		||||
        path: /networking/v1/ingresses
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ServiceAccount
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
  annotations:
 | 
			
		||||
    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
 | 
			
		||||
    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrole.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRole
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
  annotations:
 | 
			
		||||
    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
 | 
			
		||||
    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
rules:
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - admissionregistration.k8s.io
 | 
			
		||||
    resources:
 | 
			
		||||
      - validatingwebhookconfigurations
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - update
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
  annotations:
 | 
			
		||||
    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
 | 
			
		||||
    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: ClusterRole
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: ingress-nginx-admission
 | 
			
		||||
    namespace: ingress-nginx
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/job-patch/role.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: Role
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
  annotations:
 | 
			
		||||
    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
 | 
			
		||||
    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
rules:
 | 
			
		||||
  - apiGroups:
 | 
			
		||||
      - ''
 | 
			
		||||
    resources:
 | 
			
		||||
      - secrets
 | 
			
		||||
    verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - create
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: RoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
  annotations:
 | 
			
		||||
    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
 | 
			
		||||
    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: Role
 | 
			
		||||
  name: ingress-nginx-admission
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: ingress-nginx-admission
 | 
			
		||||
    namespace: ingress-nginx
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/job-patch/job-createSecret.yaml
 | 
			
		||||
apiVersion: batch/v1
 | 
			
		||||
kind: Job
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx-admission-create
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
  annotations:
 | 
			
		||||
    helm.sh/hook: pre-install,pre-upgrade
 | 
			
		||||
    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
spec:
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      name: ingress-nginx-admission-create
 | 
			
		||||
      labels:
 | 
			
		||||
        helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
        app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
        app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
        app.kubernetes.io/version: 1.0.3
 | 
			
		||||
        app.kubernetes.io/managed-by: Helm
 | 
			
		||||
        app.kubernetes.io/component: admission-webhook
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: create
 | 
			
		||||
          image: k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068
 | 
			
		||||
          imagePullPolicy: IfNotPresent
 | 
			
		||||
          args:
 | 
			
		||||
            - create
 | 
			
		||||
            - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc
 | 
			
		||||
            - --namespace=$(POD_NAMESPACE)
 | 
			
		||||
            - --secret-name=ingress-nginx-admission
 | 
			
		||||
          env:
 | 
			
		||||
            - name: POD_NAMESPACE
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                fieldRef:
 | 
			
		||||
                  fieldPath: metadata.namespace
 | 
			
		||||
      restartPolicy: OnFailure
 | 
			
		||||
      serviceAccountName: ingress-nginx-admission
 | 
			
		||||
      nodeSelector:
 | 
			
		||||
        kubernetes.io/os: linux
 | 
			
		||||
      securityContext:
 | 
			
		||||
        runAsNonRoot: true
 | 
			
		||||
        runAsUser: 2000
 | 
			
		||||
---
 | 
			
		||||
# Source: ingress-nginx/templates/admission-webhooks/job-patch/job-patchWebhook.yaml
 | 
			
		||||
apiVersion: batch/v1
 | 
			
		||||
kind: Job
 | 
			
		||||
metadata:
 | 
			
		||||
  name: ingress-nginx-admission-patch
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
  annotations:
 | 
			
		||||
    helm.sh/hook: post-install,post-upgrade
 | 
			
		||||
    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
 | 
			
		||||
  labels:
 | 
			
		||||
    helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
    app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
    app.kubernetes.io/version: 1.0.3
 | 
			
		||||
    app.kubernetes.io/managed-by: Helm
 | 
			
		||||
    app.kubernetes.io/component: admission-webhook
 | 
			
		||||
spec:
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      name: ingress-nginx-admission-patch
 | 
			
		||||
      labels:
 | 
			
		||||
        helm.sh/chart: ingress-nginx-4.0.4
 | 
			
		||||
        app.kubernetes.io/name: ingress-nginx
 | 
			
		||||
        app.kubernetes.io/instance: ingress-nginx
 | 
			
		||||
        app.kubernetes.io/version: 1.0.3
 | 
			
		||||
        app.kubernetes.io/managed-by: Helm
 | 
			
		||||
        app.kubernetes.io/component: admission-webhook
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: patch
 | 
			
		||||
          image: k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068
 | 
			
		||||
          imagePullPolicy: IfNotPresent
 | 
			
		||||
          args:
 | 
			
		||||
            - patch
 | 
			
		||||
            - --webhook-name=ingress-nginx-admission
 | 
			
		||||
            - --namespace=$(POD_NAMESPACE)
 | 
			
		||||
            - --patch-mutating=false
 | 
			
		||||
            - --secret-name=ingress-nginx-admission
 | 
			
		||||
            - --patch-failure-policy=Fail
 | 
			
		||||
          env:
 | 
			
		||||
            - name: POD_NAMESPACE
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                fieldRef:
 | 
			
		||||
                  fieldPath: metadata.namespace
 | 
			
		||||
      restartPolicy: OnFailure
 | 
			
		||||
      serviceAccountName: ingress-nginx-admission
 | 
			
		||||
      nodeSelector:
 | 
			
		||||
        kubernetes.io/os: linux
 | 
			
		||||
      securityContext:
 | 
			
		||||
        runAsNonRoot: true
 | 
			
		||||
        runAsUser: 2000
 | 
			
		||||
@ -2,7 +2,10 @@
 | 
			
		||||
 | 
			
		||||
ingress:
 | 
			
		||||
  annotations:
 | 
			
		||||
    kubernetes.io/ingress.class: addon-http-application-routing
 | 
			
		||||
    # kubernetes.io/ingress.class: addon-http-application-routing
 | 
			
		||||
    ingress.kubernetes.io/ssl-redirect: "false"
 | 
			
		||||
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
 | 
			
		||||
    #kubernetes.io/ingress.class: nginx
 | 
			
		||||
    #nginx.ingress.kubernetes.io/rewrite-target: /$1
 | 
			
		||||
    #nginx.ingress.kubernetes.io/use-regex: "true"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										92
									
								
								deploy/k8s/helm/ingresscertmanager.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								deploy/k8s/helm/ingresscertmanager.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,92 @@
 | 
			
		||||
REGISTRY_NAME=heigoo
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
# Set variable for ACR location to use for pulling images
 | 
			
		||||
ACR_URL=heigoo.azurecr.io
 | 
			
		||||
 | 
			
		||||
# Use Helm to deploy an NGINX ingress controller
 | 
			
		||||
helm install nginx-ingress ingress-nginx/ingress-nginx \
 | 
			
		||||
    --namespace ingress-basic \
 | 
			
		||||
    --set controller.replicaCount=2 \
 | 
			
		||||
    --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
 | 
			
		||||
 | 
			
		||||
    # -----
 | 
			
		||||
    kubectl --namespace ingress-basic get services -o wide
 | 
			
		||||
 | 
			
		||||
  #  ---- add a A reacord(and eshop.* subdomain cname) in Azure or DNS register(eg. GoDaddy) with load balancer ip
 | 
			
		||||
    az network dns record-set a add-record \
 | 
			
		||||
    --resource-group myResourceGroup \
 | 
			
		||||
    --zone-name MY_CUSTOM_DOMAIN \
 | 
			
		||||
    --record-set-name "*" \
 | 
			
		||||
    --ipv4-address MY_EXTERNAL_IP
 | 
			
		||||
 | 
			
		||||
    # ----
 | 
			
		||||
    # install cert manager
 | 
			
		||||
    # ------
 | 
			
		||||
    # 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
 | 
			
		||||
 | 
			
		||||
  # ----
 | 
			
		||||
  # create ca issuer
 | 
			
		||||
  # run demo   https://docs.microsoft.com/en-us/azure/aks/ingress-tls
 | 
			
		||||
  # https://docs.microsoft.com/en-us/azure/aks/static-ip
 | 
			
		||||
  
 | 
			
		||||
							
								
								
									
										37
									
								
								deploy/k8s/helm/ingressfix.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								deploy/k8s/helm/ingressfix.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRole
 | 
			
		||||
metadata:
 | 
			
		||||
  name: addon-http-app-routing-fix
 | 
			
		||||
rules:
 | 
			
		||||
- apiGroups:
 | 
			
		||||
  - "networking.k8s.io"
 | 
			
		||||
  resources: 
 | 
			
		||||
  - "ingresses/status"
 | 
			
		||||
  verbs:
 | 
			
		||||
  - "update"
 | 
			
		||||
- apiGroups:
 | 
			
		||||
  - "networking.k8s.io"
 | 
			
		||||
  resources:
 | 
			
		||||
    - "ingresses"
 | 
			
		||||
  verbs:
 | 
			
		||||
    - "get"
 | 
			
		||||
    - "watch"
 | 
			
		||||
    - "list"
 | 
			
		||||
---
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  name: addon-http-app-routing-fix-clusterrolebinding
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: ClusterRole
 | 
			
		||||
  name: addon-http-app-routing-fix
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: addon-http-application-routing-nginx-ingress-serviceaccount
 | 
			
		||||
    namespace: kube-system
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: addon-http-application-routing-external-dns
 | 
			
		||||
    namespace: kube-system
 | 
			
		||||
---
 | 
			
		||||
							
								
								
									
										193
									
								
								deploy/k8s/helm/publicipingressaks.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								deploy/k8s/helm/publicipingressaks.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,193 @@
 | 
			
		||||
 | 
			
		||||
# 20.63.171.125
 | 
			
		||||
PUBLIC_IP_ID=$(az network public-ip list --query "[?ipAddress=='20.63.171.125'].id" -o tsv)
 | 
			
		||||
az network dns zone create  --resource-group k8sstudy   --name anniedesign.xyz
 | 
			
		||||
az network dns record-set a add-record   --resource-group k8sstudy  --record-set-name eshop  --zone-name anniedesign.xyz  --ipv4-address 1.1.1.1
 | 
			
		||||
az network dns record-set a update --name eshop  --resource-group k8sstudy  --zone-name anniedesign.xyz   --target-resource /subscriptions/e25379c9-941e-4fe6-81ff-f0e62becf996/resourceGroups/mc_k8sstudy_eshop_japaneast/providers/Microsoft.Network/publicIPAddresses/kubernetes-ae87c596c80514b95839a76c3ed683df
 | 
			
		||||
az network dns zone show  --resource-group k8sstudy  --name anniedesign.xyz  --query nameServers
 | 
			
		||||
# ns1-03.azure-dns.com.
 | 
			
		||||
# ns2-03.azure-dns.net.
 | 
			
		||||
# ns3-03.azure-dns.org.
 | 
			
		||||
# ns4-03.azure-dns.info.
 | 
			
		||||
# ---------------------------
 | 
			
		||||
REGISTRY_NAME=heigoo
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
az aks show --resource-group k8sstudy --name eshop --query nodeResourceGroup -o tsv   --MC_k8sstudy_eShop_japaneast
 | 
			
		||||
 | 
			
		||||
az network public-ip create --resource-group MC_k8sstudy_eShop_japaneast  --name myAKSPublicIP --sku Standard --allocation-method static --query publicIp.ipAddress -o tsv  --20.194.219.173
 | 
			
		||||
-----
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
# Set variable for ACR location to use for pulling images
 | 
			
		||||
ACR_URL=heigoo.azurecr.io
 | 
			
		||||
STATIC_IP=20.194.219.173
 | 
			
		||||
DNS_LABEL=eshop
 | 
			
		||||
 | 
			
		||||
# Use Helm to deploy an NGINX ingress controller
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller
 | 
			
		||||
 | 
			
		||||
az network public-ip list --resource-group MC_myResourceGroup_myAKSCluster_eastus --query "[?name=='myAKSPublicIP'].[dnsSettings.fqdn]" -o tsv
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ===============
 | 
			
		||||
az network public-ip create \
 | 
			
		||||
    --resource-group k8sstudy \
 | 
			
		||||
    --name myAKSPublicIP \
 | 
			
		||||
    --sku Standard \
 | 
			
		||||
    --allocation-method static
 | 
			
		||||
 | 
			
		||||
az network public-ip list
 | 
			
		||||
 | 
			
		||||
az network public-ip show --resource-group k8sstudy --name myAKSPublicIP --query ipAddress --output tsv
 | 
			
		||||
 | 
			
		||||
az role assignment create \
 | 
			
		||||
    --assignee eShop \
 | 
			
		||||
    --role "Network Contributor" \
 | 
			
		||||
    --scope /subscriptions/e25379c9-941e-4fe6-81ff-f0e62becf996/resourceGroups/k8sstudy
 | 
			
		||||
 | 
			
		||||
# ==================
 | 
			
		||||
az aks create --name myAKSCluster --resource-group myResourceGroup
 | 
			
		||||
service principle
 | 
			
		||||
az ad sp create-for-rbac --skip-assignment --name myAKSClusterServicePrincipal
 | 
			
		||||
Specify a service principal for an AKS cluster
 | 
			
		||||
az aks create \
 | 
			
		||||
    --resource-group myResourceGroup \
 | 
			
		||||
    --name myAKSCluster \
 | 
			
		||||
    --service-principal <appId> \
 | 
			
		||||
    --client-secret <password>
 | 
			
		||||
 | 
			
		||||
# Delegate access to other Azure resources
 | 
			
		||||
 | 
			
		||||
az role assignment create --assignee <appId> --scope <resourceScope> --role Contributor
 | 
			
		||||
# ===========================================
 | 
			
		||||
# Create a new AKS cluster with ACR integration
 | 
			
		||||
 | 
			
		||||
# set this to the name of your Azure Container Registry.  It must be globally unique
 | 
			
		||||
MYACR=myContainerRegistry
 | 
			
		||||
 | 
			
		||||
# Run the following line to create an Azure Container Registry if you do not already have one
 | 
			
		||||
az acr create -n $MYACR -g myContainerRegistryResourceGroup --sku basic
 | 
			
		||||
 | 
			
		||||
# Create an AKS cluster with ACR integration
 | 
			
		||||
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr $MYACR
 | 
			
		||||
 | 
			
		||||
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
 | 
			
		||||
 | 
			
		||||
# Configure ACR integration for existing AKS clusters
 | 
			
		||||
# =====
 | 
			
		||||
# =================managed identity==========================
 | 
			
		||||
az account show --query id -o tsv
 | 
			
		||||
az aks show -g k8sstudy -n eShop --query "servicePrincipalProfile"
 | 
			
		||||
# After verifying the cluster is using managed identities, you can find the control plane system-assigned identity's object ID with the following command:
 | 
			
		||||
az aks show -g k8sstudy -n eShop --query "identity"
 | 
			
		||||
 | 
			
		||||
az identity list --query "[].{Name:name, Id:id, Location:location}" -o table
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ==================inital aks==========
 | 
			
		||||
az group delete --name myResourceGroup --yes --no-wait   
 | 
			
		||||
# ======= acr azure registry============
 | 
			
		||||
az aks check-acr --name MyManagedCluster --resource-group MyResourceGroup --acr myacr.azurecr.io
 | 
			
		||||
# set this to the name of your Azure Container Registry.  It must be globally unique
 | 
			
		||||
MYACR=myContainerRegistry
 | 
			
		||||
 | 
			
		||||
# Run the following line to create an Azure Container Registry if you do not already have one
 | 
			
		||||
az acr create -n $MYACR -g myContainerRegistryResourceGroup --sku basic
 | 
			
		||||
 | 
			
		||||
# Create an AKS cluster with ACR integration
 | 
			
		||||
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr $MYACR
 | 
			
		||||
# -----------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
az aks update -n myAKSCluster -g myResourceGroup --attach-acr heigoo
 | 
			
		||||
# If you are using an ACR that is located in a different subscription from your AKS cluster, use the ACR resource ID when attaching or detaching from an AKS cluster.
 | 
			
		||||
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
 | 
			
		||||
 | 
			
		||||
# -----
 | 
			
		||||
 | 
			
		||||
helm upgrade -i nginx-ingress ingress-nginx/ingress-nginx \
 | 
			
		||||
    --version 3.36.0 \
 | 
			
		||||
    --namespace ingress-basic \
 | 
			
		||||
    --set controller.replicaCount=2 \
 | 
			
		||||
    --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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
helm upgrade -i nginx-ingress ingress-nginx/ingress-nginx \
 | 
			
		||||
    --version 3.36.0 \
 | 
			
		||||
    --namespace ingress-basic \
 | 
			
		||||
    --set controller.replicaCount=2 \
 | 
			
		||||
    --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 \
 | 
			
		||||
    --set controller.service.loadBalancerIP=$STATIC_IP \
 | 
			
		||||
    --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"=$DNS_LABEL
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
az network dns record-set a add-record \
 | 
			
		||||
    --resource-group myResourceGroup \
 | 
			
		||||
    --zone-name anniedesign.xyz \
 | 
			
		||||
    --record-set-name "*" \
 | 
			
		||||
    --ipv4-address 20.89.163.19
 | 
			
		||||
# ============clear resources========================
 | 
			
		||||
kubectl delete namespace ingress-basic
 | 
			
		||||
kubectl delete -f certificates.yaml
 | 
			
		||||
kubectl delete -f cluster-issuer.yaml
 | 
			
		||||
helm list --all-namespaces
 | 
			
		||||
helm uninstall nginx-ingress cert-manager -n ingress-basic
 | 
			
		||||
kubectl delete -f aks-helloworld.yaml --namespace ingress-basic
 | 
			
		||||
kubectl delete -f ingress-demo.yaml --namespace ingress-basic
 | 
			
		||||
kubectl delete namespace ingress-basic
 | 
			
		||||
az network public-ip delete --resource-group MC_myResourceGroup_myAKSCluster_japaneast --name myAKSPublicIP
 | 
			
		||||
 | 
			
		||||
az group delete --name myResourceGroup --yes --no-wait
 | 
			
		||||
							
								
								
									
										14
									
								
								deploy/k8s/helm/push.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								deploy/k8s/helm/push.bat
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/webspa:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/webmvc:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/webshoppingagg:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/mobileshoppingagg:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/ordering.signalrhub:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/basket.api:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/identity.api:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/catalog.api:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/ordering.api:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/webhooks.client:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/webhooks.api:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/ordering.backgroundtasks:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/payment.api:linux-latest
 | 
			
		||||
docker push heigoo.azurecr.io/eshop/webstatus:linux-latest
 | 
			
		||||
							
								
								
									
										14
									
								
								deploy/k8s/helm/tag.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								deploy/k8s/helm/tag.bat
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
docker tag eshop/webspa:linux-latest heigoo.azurecr.io/eshop/webspa:linux-latest
 | 
			
		||||
docker tag eshop/webmvc:linux-latest heigoo.azurecr.io/eshop/webmvc:linux-latest
 | 
			
		||||
docker tag eshop/webshoppingagg:linux-latest heigoo.azurecr.io/eshop/webshoppingagg:linux-latest
 | 
			
		||||
docker tag eshop/mobileshoppingagg:linux-latest heigoo.azurecr.io/eshop/mobileshoppingagg:linux-latest
 | 
			
		||||
docker tag eshop/ordering.signalrhub:linux-latest  heigoo.azurecr.io/eshop/ordering.signalrhub:linux-latest
 | 
			
		||||
docker tag eshop/basket.api:linux-latest heigoo.azurecr.io/eshop/basket.api:linux-latest
 | 
			
		||||
docker tag eshop/identity.api:linux-latest heigoo.azurecr.io/eshop/identity.api:linux-latest
 | 
			
		||||
docker tag eshop/catalog.api:linux-latest  heigoo.azurecr.io/eshop/catalog.api:linux-latest
 | 
			
		||||
docker tag eshop/ordering.api:linux-latest heigoo.azurecr.io/eshop/ordering.api:linux-latest
 | 
			
		||||
docker tag eshop/webhooks.client:linux-latest heigoo.azurecr.io/eshop/webhooks.client:linux-latest
 | 
			
		||||
docker tag eshop/webhooks.api:linux-latest  heigoo.azurecr.io/eshop/webhooks.api:linux-latest
 | 
			
		||||
docker tag eshop/ordering.backgroundtasks:linux-latest heigoo.azurecr.io/eshop/ordering.backgroundtasks:linux-latest
 | 
			
		||||
docker tag eshop/eshop/payment.api:linux-latest  heigoo.azurecr.io/eshop/payment.api:linux-latest
 | 
			
		||||
docker tag eshop/webstatus:linux-latest heigoo.azurecr.io/eshop/webstatus:linux-latest
 | 
			
		||||
@ -8,7 +8,7 @@ metadata:
 | 
			
		||||
spec:
 | 
			
		||||
  acme:
 | 
			
		||||
    server: {{ .Values.server }}
 | 
			
		||||
    email: not@used.com
 | 
			
		||||
    email: ernie.liu@outlook.com
 | 
			
		||||
    privateKeySecretRef:
 | 
			
		||||
      name: {{ .Values.issuerSecretName }}
 | 
			
		||||
    solvers:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								deploy/k8s/helm/tls-support/values.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								deploy/k8s/helm/tls-support/values.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
applicationName: eshop
 | 
			
		||||
issuerName: letsencrypt-prod
 | 
			
		||||
certName: eshop-cert-prod
 | 
			
		||||
environment: prod
 | 
			
		||||
server: https://acme-v02.api.letsencrypt.org/directory
 | 
			
		||||
certSecretName: eshop-letsencrypt-prod
 | 
			
		||||
issuerSecretName: letsencrypt-prod
 | 
			
		||||
ingressClass: nginx
 | 
			
		||||
@ -8,4 +8,6 @@ metadata:
 | 
			
		||||
  namespace: ingress-nginx
 | 
			
		||||
data:
 | 
			
		||||
  proxy-buffer-size: "128k"
 | 
			
		||||
  proxy-buffers: "4 256k"
 | 
			
		||||
  proxy-buffers: "4 256k"
 | 
			
		||||
  large-client-header-buffers: "4 16k"
 | 
			
		||||
##https://stackoverflow.com/questions/59274805/kubernetes-nginx-ingress-request-header-or-cookie-too-large  
 | 
			
		||||
							
								
								
									
										12
									
								
								deploy/k8s/nodeports/sql-service1.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								deploy/k8s/nodeports/sql-service1.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
kind: Service
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
metadata:
 | 
			
		||||
  name: sql-service
 | 
			
		||||
spec:
 | 
			
		||||
  type: LoadBalancer
 | 
			
		||||
  selector:
 | 
			
		||||
    app: sql-data
 | 
			
		||||
  ports:
 | 
			
		||||
    - protocol: TCP
 | 
			
		||||
      port: 1433
 | 
			
		||||
      targetPort: 1433
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user