run 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #!/command/with-contenv /bin/bash
  2. # shellcheck shell=bash
  3. # shellcheck disable=SC1091,SC1090,SC2035
  4. SCRIPT_ROOT=/etc/s6-overlay/scripts
  5. source "$SCRIPT_ROOT/base.sh"
  6. source "$GPUSTACK_GATEWAY_CONFIG"
  7. source "$SCRIPT_ROOT/default-variables.sh"
  8. export REVISION="default"
  9. export JWT_POLICY="none"
  10. export POD_NAME="higress-pilot"
  11. export POD_NAMESPACE="higress-system"
  12. export ROOT_CA_DIR="/etc/certs"
  13. export PILOT_CERT_PROVIDER="istiod"
  14. export PILOT_ENABLE_LDS_CACHE="false"
  15. export PILOT_ENABLE_CROSS_CLUSTER_WORKLOAD_ENTRY="false"
  16. export PILOT_ENABLE_METADATA_EXCHANGE="false"
  17. export PILOT_SCOPE_GATEWAY_TO_NAMESPACE="true"
  18. export VALIDATION_ENABLED="false"
  19. export PILOT_TRACE_SAMPLING="1"
  20. export PILOT_ENABLE_PROTOCOL_SNIFFING_FOR_OUTBOUND="true"
  21. export PILOT_ENABLE_PROTOCOL_SNIFFING_FOR_INBOUND="true"
  22. export PILOT_ENABLE_ANALYSIS="false"
  23. export PILOT_ENABLE_GATEWAY_API="false"
  24. export PILOT_ENABLE_ALPHA_GATEWAY_API="false"
  25. export PILOT_ENABLE_GATEWAY_API_STATUS="false"
  26. export PILOT_ENABLE_GATEWAY_API_DEPLOYMENT_CONTROLLER="false"
  27. export PILOT_ENABLE_ALPN_FILTER="true"
  28. export VALIDATION_WEBHOOK_CONFIG_NAME=""
  29. export ISTIO_DUAL_STACK="false"
  30. export ENABLE_OPTIMIZED_CONFIG_REBUILD="false"
  31. export PILOT_ENABLE_K8S_SELECT_WORKLOAD_ENTRIES="false"
  32. export DEFAULT_UPSTREAM_CONCURRENCY_THRESHOLD="10000"
  33. export ISTIO_GPRC_MAXRECVMSGSIZE="104857600"
  34. export ENBALE_SCOPED_RDS="true"
  35. export ON_DEMAND_RDS="false"
  36. export HOST_RDS_MERGE_SUBSET="false"
  37. export ENABLE_LEADER_ELECTION="false"
  38. export PRIORITIZED_LEADER_ELECTION="false"
  39. export INJECT_ENABLED="false"
  40. export CLUSTER_ID="Kubernetes"
  41. export CUSTOM_CA_CERT_NAME="higress-ca-root-cert"
  42. export DEBUG_AUTH="false"
  43. function initCerts() {
  44. RSA_KEY_LENGTH=4096
  45. createDir /etc/certs
  46. cd /etc/certs
  47. openssl req -newkey rsa:$RSA_KEY_LENGTH -nodes -keyout root-key.pem -x509 -days 36500 -out root-cert.pem >/dev/null 2>&1 <<EOF
  48. CN
  49. Shanghai
  50. Shanghai
  51. Higress
  52. Gateway
  53. Root CA
  54. rootca@higress.io
  55. EOF
  56. cat <<EOF >ca.cfg
  57. [req]
  58. distinguished_name = req_distinguished_name
  59. req_extensions = v3_req
  60. prompt = no
  61. [req_distinguished_name]
  62. C = CN
  63. ST = Shanghai
  64. L = Shanghai
  65. O = Higress
  66. CN = Higress CA
  67. [v3_req]
  68. keyUsage = keyCertSign
  69. basicConstraints = CA:TRUE
  70. subjectAltName = @alt_names
  71. [alt_names]
  72. DNS.1 = ca.higress.io
  73. EOF
  74. openssl genrsa -out ca-key.pem $RSA_KEY_LENGTH >/dev/null &&
  75. openssl req -new -key ca-key.pem -out ca-cert.csr -config ca.cfg -batch -sha256 >/dev/null 2>&1 &&
  76. openssl x509 -req -days 36500 -in ca-cert.csr -sha256 -CA root-cert.pem -CAkey root-key.pem -CAcreateserial -out ca-cert.pem -extensions v3_req -extfile ca.cfg >/dev/null 2>&1
  77. cp ca-cert.pem cert-chain.pem >/dev/null
  78. chmod a+r ca-key.pem
  79. cat <<EOF >gateway.cfg
  80. [req]
  81. distinguished_name = req_distinguished_name
  82. req_extensions = v3_req
  83. prompt = no
  84. [req_distinguished_name]
  85. C = CN
  86. ST = Shanghai
  87. L = Shanghai
  88. O = Higress
  89. CN = Higress Gateway
  90. [v3_req]
  91. keyUsage = digitalSignature, keyEncipherment
  92. subjectAltName = URI:spiffe://cluster.local/ns/higress-system/sa/higress-gateway
  93. EOF
  94. openssl genrsa -out gateway-key.pem $RSA_KEY_LENGTH > /dev/null \
  95. && openssl req -new -key gateway-key.pem -out gateway-cert.csr -config gateway.cfg -batch -sha256 > /dev/null 2>&1 \
  96. && openssl x509 -req -days 36500 -in gateway-cert.csr -sha256 -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out gateway-cert.pem -extensions v3_req -extfile gateway.cfg > /dev/null 2>&1
  97. chmod a+r gateway-key.pem
  98. cat ca-cert.pem >> gateway-cert.pem
  99. mv gateway-cert.pem cert-chain.pem
  100. mv gateway-key.pem key.pem
  101. rm *.csr >/dev/null
  102. rm *.cfg >/dev/null
  103. cd -
  104. }
  105. set -e
  106. exec 2>&1
  107. initCerts
  108. export PILOT_FILTER_GATEWAY_CLUSTER_CONFIG="true"
  109. exec s6-notifyoncheck \
  110. -d -w 5000 -n 10 -s 3000 \
  111. -- \
  112. /usr/local/bin/pilot-discovery \
  113. discovery \
  114. --kubeconfig="${EMBEDDED_KUBECONFIG_PATH}" \
  115. --grpcAddr= \
  116. --secureGRPCAddr=localhost:15012 \
  117. --httpAddr=localhost:15010 \
  118. --httpsAddr= \
  119. --monitoringAddr= \
  120. --log_output_level=default:info \
  121. --domain=cluster.local \
  122. --keepaliveMaxServerConnectionAge=30m \
  123. --caCertFile=/etc/certs/ca-cert.pem \
  124. --meshConfig=/etc/istio/config/mesh \
  125. --networksConfig=/etc/istio/config/meshNetworks