You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
4.1 KiB

3 years ago
  1. REGISTRY_NAME=heigoo
  2. CONTROLLER_REGISTRY=k8s.gcr.io
  3. CONTROLLER_IMAGE=ingress-nginx/controller
  4. CONTROLLER_TAG=v0.48.1
  5. PATCH_REGISTRY=docker.io
  6. PATCH_IMAGE=jettech/kube-webhook-certgen
  7. PATCH_TAG=v1.5.1
  8. DEFAULTBACKEND_REGISTRY=k8s.gcr.io
  9. DEFAULTBACKEND_IMAGE=defaultbackend-amd64
  10. DEFAULTBACKEND_TAG=1.5
  11. CERT_MANAGER_REGISTRY=quay.io
  12. CERT_MANAGER_TAG=v1.3.1
  13. CERT_MANAGER_IMAGE_CONTROLLER=jetstack/cert-manager-controller
  14. CERT_MANAGER_IMAGE_WEBHOOK=jetstack/cert-manager-webhook
  15. CERT_MANAGER_IMAGE_CAINJECTOR=jetstack/cert-manager-cainjector
  16. az acr import --name $REGISTRY_NAME --source $CONTROLLER_REGISTRY/$CONTROLLER_IMAGE:$CONTROLLER_TAG --image $CONTROLLER_IMAGE:$CONTROLLER_TAG
  17. az acr import --name $REGISTRY_NAME --source $PATCH_REGISTRY/$PATCH_IMAGE:$PATCH_TAG --image $PATCH_IMAGE:$PATCH_TAG
  18. az acr import --name $REGISTRY_NAME --source $DEFAULTBACKEND_REGISTRY/$DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG --image $DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG
  19. 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
  20. 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
  21. 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
  22. --------
  23. # Create a namespace for your ingress resources
  24. kubectl create namespace ingress-basic
  25. # Add the ingress-nginx repository
  26. helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
  27. # Set variable for ACR location to use for pulling images
  28. ACR_URL=heigoo.azurecr.io
  29. # Use Helm to deploy an NGINX ingress controller
  30. helm install nginx-ingress ingress-nginx/ingress-nginx \
  31. --namespace ingress-basic \
  32. --set controller.replicaCount=2 \
  33. --set controller.nodeSelector."kubernetes\.io/os"=linux \
  34. --set controller.image.registry=$ACR_URL \
  35. --set controller.image.image=$CONTROLLER_IMAGE \
  36. --set controller.image.tag=$CONTROLLER_TAG \
  37. --set controller.image.digest="" \
  38. --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \
  39. --set controller.admissionWebhooks.patch.image.registry=$ACR_URL \
  40. --set controller.admissionWebhooks.patch.image.image=$PATCH_IMAGE \
  41. --set controller.admissionWebhooks.patch.image.tag=$PATCH_TAG \
  42. --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \
  43. --set defaultBackend.image.registry=$ACR_URL \
  44. --set defaultBackend.image.image=$DEFAULTBACKEND_IMAGE \
  45. --set defaultBackend.image.tag=$DEFAULTBACKEND_TAG
  46. # -----
  47. kubectl --namespace ingress-basic get services -o wide
  48. # ---- add a A reacord(and eshop.* subdomain cname) in Azure or DNS register(eg. GoDaddy) with load balancer ip
  49. az network dns record-set a add-record \
  50. --resource-group myResourceGroup \
  51. --zone-name MY_CUSTOM_DOMAIN \
  52. --record-set-name "*" \
  53. --ipv4-address MY_EXTERNAL_IP
  54. # ----
  55. # install cert manager
  56. # ------
  57. # Label the ingress-basic namespace to disable resource validation
  58. kubectl label namespace ingress-basic cert-manager.io/disable-validation=true
  59. # Add the Jetstack Helm repository
  60. helm repo add jetstack https://charts.jetstack.io
  61. # Update your local Helm chart repository cache
  62. helm repo update
  63. # Install the cert-manager Helm chart
  64. helm install cert-manager jetstack/cert-manager \
  65. --namespace ingress-basic \
  66. --version $CERT_MANAGER_TAG \
  67. --set installCRDs=true \
  68. --set nodeSelector."kubernetes\.io/os"=linux \
  69. --set image.repository=$ACR_URL/$CERT_MANAGER_IMAGE_CONTROLLER \
  70. --set image.tag=$CERT_MANAGER_TAG \
  71. --set webhook.image.repository=$ACR_URL/$CERT_MANAGER_IMAGE_WEBHOOK \
  72. --set webhook.image.tag=$CERT_MANAGER_TAG \
  73. --set cainjector.image.repository=$ACR_URL/$CERT_MANAGER_IMAGE_CAINJECTOR \
  74. --set cainjector.image.tag=$CERT_MANAGER_TAG
  75. # ----
  76. # create ca issuer
  77. # run demo https://docs.microsoft.com/en-us/azure/aks/ingress-tls
  78. # https://docs.microsoft.com/en-us/azure/aks/static-ip