diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6b61eb16d..584af0618 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,7 +9,6 @@ ############################ /build-logic/** @hashgraph/release-engineering @hashgraph/release-engineering-managers @hashgraph/devops-ci -/charts/** @hashgraph/release-engineering @hashgraph/release-engineering-managers @hashgraph/devops-ci /fullstack-core/** @hashgraph/release-engineering /fullstack-examples/** @hashgraph/release-engineering /fullstack-gradle-plugin/** @hashgraph/release-engineering @hashgraph/devops-ci diff --git a/.github/workflows/flow-deploy-release-artifact.yaml b/.github/workflows/flow-deploy-release-artifact.yaml index c99e420e6..f18374728 100644 --- a/.github/workflows/flow-deploy-release-artifact.yaml +++ b/.github/workflows/flow-deploy-release-artifact.yaml @@ -115,50 +115,12 @@ jobs: ossrh-user-name: ${{ secrets.OSSRH_USER_NAME }} ossrh-user-password: ${{ secrets.OSSRH_USER_PASSWORD }} - publish-helm-charts: - name: Publish / Helm Charts - runs-on: solo-linux-medium - needs: - - prepare-release - steps: - - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - - - name: Setup Helm - uses: azure/setup-helm@fe7b79cd5ee1e45176fcad797de68ecaf3ca4814 # v4.2.0 - with: - version: "v3.12.3" # helm version - - - name: Setup Java - uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4.4.0 - with: - distribution: ${{ github.event.inputs.java-distribution || 'temurin' }} - java-version: ${{ github.event.inputs.java-version || '21.0.1' }} - - - name: Setup Gradle - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0 - with: - gradle-version: ${{ github.event.inputs.gradle-version || 'wrapper' }} - - - name: Apply Version Number Update (Explicit) - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0 - with: - gradle-version: ${{ github.event.inputs.gradle-version || 'wrapper' }} - arguments: versionAsSpecified --scan -PnewVersion=${{ needs.prepare-release.outputs.version }} - - - name: Publish Helm Charts - uses: step-security/helm-gh-pages@6a390e89293c1ec8bc5120f6692f3b8a313a9a3d #v1.7.0 - if: ${{ github.event.inputs.dry-run-enabled != 'true' && !cancelled() && !failure() }} - with: - token: ${{ secrets.GITHUB_TOKEN }} - target_dir: charts create-github-release: name: Github / Release runs-on: solo-linux-medium needs: - publish-maven-central - - publish-helm-charts steps: - name: Checkout Code uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 diff --git a/.github/workflows/flow-pull-request-checks.yaml b/.github/workflows/flow-pull-request-checks.yaml index d8fff8618..6b5d7d114 100644 --- a/.github/workflows/flow-pull-request-checks.yaml +++ b/.github/workflows/flow-pull-request-checks.yaml @@ -59,12 +59,6 @@ jobs: gradle-cache-username: ${{ secrets.GRADLE_CACHE_USERNAME }} gradle-cache-password: ${{ secrets.GRADLE_CACHE_PASSWORD }} - chart-tests: - name: FS Helm Chart Tests - uses: ./.github/workflows/zxc-helm-chart-tests.yaml - with: - custom-job-label: Standard - codecov: name: CodeCov uses: ./.github/workflows/zxc-code-analysis.yaml diff --git a/.github/workflows/support/ci/ci-values.yaml b/.github/workflows/support/ci/ci-values.yaml deleted file mode 100644 index c53b2ff05..000000000 --- a/.github/workflows/support/ci/ci-values.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# helm test container -tester: - image: - registry: "ghcr.io" - repository: "hashgraph/solo-containers/kubectl-bats" - tag: "0.33.0" - pullPolicy: "IfNotPresent" - resources: {} \ No newline at end of file diff --git a/.github/workflows/support/ci_test.sh b/.github/workflows/support/ci_test.sh deleted file mode 100755 index 37acbb56b..000000000 --- a/.github/workflows/support/ci_test.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env bash - -echo "-----------------------------------------------------------------------------------------------------" -echo "Setting up environment variables" -echo "SCRIPT_NAME: ${SCRIPT_NAME}" - -CUR_DIR="scripts" - -source "${CUR_DIR}/env.sh" - - -CHART_VALUES_FILES=ci/ci-values.yaml -SCRIPTS_DIR=scripts - -echo "-----------------------------------------------------------------------------------------------------" -echo "Creating cluster and namespace" -kind create cluster -n "${CLUSTER_NAME}" --config=dev-cluster.yaml - -kubectl create ns "${NAMESPACE}" -kubectl get ns -kubectl config use-context "kind-${CLUSTER_NAME}" -kubectl config set-context --current --namespace="${NAMESPACE}" -kubectl config get-contexts - -echo "-----------------------------------------------------------------------------------------------------" -echo "Helm dependency update" - -echo "cloud:" > "${CLUSTER_SETUP_VALUES_FILE}" -echo " prometheusStack:" >> "${CLUSTER_SETUP_VALUES_FILE}"; \ -echo " enabled: true" >> "${CLUSTER_SETUP_VALUES_FILE}"; -echo " minio:" >> "${CLUSTER_SETUP_VALUES_FILE}"; \ -echo " enabled: true" >> "${CLUSTER_SETUP_VALUES_FILE}"; - -helm dependency update ../../../charts/fullstack-deployment -helm dependency update ../../../charts/fullstack-cluster-setup - -echo "-----------------------------------------------------------------------------------------------------" -echo "Helm cluster setup" - -helm install -n "${NAMESPACE}" "fullstack-cluster-setup" "${SETUP_CHART_DIR}" --values "${CLUSTER_SETUP_VALUES_FILE}" -echo "-----------------------Shared Resources------------------------------------------------------------------------------" -kubectl get clusterrole "${POD_MONITOR_ROLE}" -o wide - - -echo "" -echo "Installing helm chart... " -echo "SCRIPT_NAME: ${SCRIPT_NAME}" -echo "Additional values: ${CHART_VALUES_FILES}" -echo "-----------------------------------------------------------------------------------------------------" -if [ "${SCRIPT_NAME}" = "nmt-install.sh" ]; then -if [[ -z "${CHART_VALUES_FILES}" ]]; then - helm install "${RELEASE_NAME}" -n "${NAMESPACE}" "${CHART_DIR}" --set defaults.root.image.repository=hashgraph/solo-containers/ubi8-init-dind -else - helm install "${RELEASE_NAME}" -n "${NAMESPACE}" "${CHART_DIR}" -f "${CHART_DIR}/values.yaml" --values "${CHART_VALUES_FILES}" --set defaults.root.image.repository=hashgraph/solo-containers/ubi8-init-dind -fi -else -if [[ -z "${CHART_VALUES_FILES}" ]]; then - helm install "${RELEASE_NAME}" -n "${NAMESPACE}" "${CHART_DIR}" -else - helm install "${RELEASE_NAME}" -n "${NAMESPACE}" "${CHART_DIR}" -f "${CHART_DIR}/values.yaml" --values "${CHART_VALUES_FILES}" -fi -fi - -echo "-----------------------------------------------------------------------------------------------------" -echo "Get service and pod information" - -kubectl get svc -o wide && \ -kubectl get pods -o wide && \ - -echo "Waiting for network-node pods to be phase=running (first deployment takes ~10m)...." -kubectl wait --for=jsonpath='{.status.phase}'=Running pod -l fullstack.hedera.com/type=network-node --timeout=900s - -echo "Waiting for network-node pods to be condition=ready (first deployment takes ~10m)...." -kubectl wait --for=condition=ready pod -l fullstack.hedera.com/type=network-node --timeout=900s - -echo "Service Information...." -kubectl get svc -o wide - -echo "Waiting for pods to be up (timeout 600s)" -kubectl wait --for=jsonpath='{.status.phase}'=Running pod -l fullstack.hedera.com/type=network-node --timeout=600s - - -echo "Running helm chart tests (takes ~5m, timeout 15m)... " -echo "-----------------------------------------------------------------------------------------------------" -sleep 10 -helm test "${RELEASE_NAME}" --filter name=network-test --timeout 15m -kubectl logs network-test - -echo "-----------------------------------------------------------------------------------------------------" -echo "Setup and start nodes" -if [ "${SCRIPT_NAME}" = "nmt-install.sh" ]; then - echo "Ignore error from nmt install due to error of removing symlink" - source "${SCRIPTS_DIR}/${SCRIPT_NAME}" && setup_node_all || true - source "${SCRIPTS_DIR}/${SCRIPT_NAME}" && start_node_all || true -else - source "${SCRIPTS_DIR}/${SCRIPT_NAME}" && setup_node_all - source "${SCRIPTS_DIR}/${SCRIPT_NAME}" && start_node_all -fi - -echo "-----------------------------------------------------------------------------------------------------" -echo "Tear down cluster" - -kubectl delete pod network-test -n "${NAMESPACE}" || true - -echo "Uninstalling helm chart ${RELEASE_NAME} in namespace ${NAMESPACE}... " -echo "-----------------------------------------------------------------------------------------------------" -helm uninstall -n "${NAMESPACE}" "${RELEASE_NAME}" -sleep 10 -echo "Uninstalled helm chart ${RELEASE_NAME} in namespace ${NAMESPACE}" - -echo "Removing postgres pvc" -has_postgres_pvc=$(kubectl get pvc --no-headers -l app.kubernetes.io/component=postgresql,app.kubernetes.io/name=postgres,app.kubernetes.io/instance="${RELEASE_NAME}" | wc -l) -if [[ $has_postgres_pvc ]]; then -kubectl delete pvc -l app.kubernetes.io/component=postgresql,app.kubernetes.io/name=postgres,app.kubernetes.io/instance="${RELEASE_NAME}" -fi - -echo "Workflow finished successfully" -echo "-----------------------------------------------------------------------------------------------------" diff --git a/.github/workflows/support/local-node/config.template b/.github/workflows/support/local-node/config.template deleted file mode 100644 index 142933e96..000000000 --- a/.github/workflows/support/local-node/config.template +++ /dev/null @@ -1,62 +0,0 @@ -# ====================================================================================================================== -# Address book Format Description -# ====================================================================================================================== -# Address book format varies across versions since it evolved over time. As of July 27, 2023 the below formats were -# relevant for recent versions. Latest version is available in the file: hedera-services/hedera-node/config.txt -# -# - v.0.39.* (or before) format: -# Fields: address, , , , , , , , -# Example: address, 0, node0, 1, 10.128.0.27, 50111, 35.223.93.31, 30124, 0.0.3 -# -# - v.0.4* format: -# Fields: address, , , , , , , , , -# Example: address, 0, n0, node0, 1, 10.128.0.27, 50111, 35.223.93.31, 30124, 0.0.3 -# -# - v.0.41* (onward) we need to append the below formatted line with next node ID after the list of "address" lines -#
-# nextNodeId, -# -# Field descriptions: -# =========================== -# NODE_ID: This increments for each node and starts from 0. -# NEXT_NODE_ID: The id for the next node (i.e. last node ID + 1) -# NODE_NICK_NAME: This is a string (alphanumeric). e.g. node0 -# NODE_NAME: This is a string (alphanumeric). e.g. node0 or n0 -# NODE_STAKE_AMOUNT: A long value. e.g. 1 or a larger number -# INTERNAL_IP: This is the pod IP -# INTERNAL_GOSSIP_PORT: Default gossip port is 50111. So use the exposed port that is mapped to 50111 in container. -# EXTERNAL_IP: This is the service IP -# EXTERNAL_GOSSIP_PORT: Default gossip port is 50111. This is usually same as INTERNAL_GOSSIP_PORT unless mapped differently. -# ACCOUNT_ID: Must start from 0.0.3 -# - -# Account restrictions: -# =========================== -# All ACCOUNT_ID should start from 0.0.3 because of restricted accounts as below: -# - 0.0.0 restricted and not usable -# - 0.0.1 minting account and not usable -# - 0.0.2 treasury account -# -# Default Ports -# =========================== -# We only need to specify the gossip port (INTERNAL_GOSSIP_PORT, EXTERNAL_GOSSIP_PORT). Below are some details on other -# ports that a node may expose: -# - 50111: gossip port -# - 50211: grpc non-tls (for platform services) -# - 50212: grpc tls (for platform services) -# -# IP Address -# =========================== -# When deploying in a kubernetes cluster, we need to use the following IP mapping: -# - INTERNAL_IP: This should be the Pod IP exposing gossip port (i.e. 50111) -# - EXTERNAL_IP: This should be the cluster IP of the service exposing gossip port (i.e. 50111) -# -# -# Example config.txt (for v0.4* onward) -# =========================== -# swirld, 123 -# app, HederaNode.jar -# address, 0, node0, node0, 1, 10.244.0.197, 56789, 10.96.61.84, 50111, 0.0.0 -# address, 1, node1, node1, 1, 10.244.0.198, 56789, 10.96.163.93, 50111, 0.0.1 -# nextNodeId, 2 -# ====================================================================================================================== diff --git a/.github/workflows/support/local-node/data/config/api-permission.properties b/.github/workflows/support/local-node/data/config/api-permission.properties deleted file mode 100644 index 8a33c31d4..000000000 --- a/.github/workflows/support/local-node/data/config/api-permission.properties +++ /dev/null @@ -1,70 +0,0 @@ -# Crypto -createAccount=0-* -cryptoTransfer=0-* -updateAccount=0-* -cryptoGetBalance=0-* -getAccountInfo=0-* -cryptoDelete=0-* -getAccountRecords=0-* -getTxRecordByTxID=0-* -getTransactionReceipts=0-* -approveAllowances=0-* -deleteAllowances=0-* -# File -createFile=0-* -updateFile=0-* -deleteFile=0-* -appendContent=0-* -getFileContent=0-* -getFileInfo=0-* -# Contract -createContract=0-* -updateContract=0-* -contractCallMethod=0-* -getContractInfo=0-* -contractCallLocalMethod=0-* -contractGetBytecode=0-* -getTxRecordByContractID=0-* -deleteContract=0-* -# Consensus -createTopic=0-* -updateTopic=0-* -deleteTopic=0-* -submitMessage=0-* -getTopicInfo=0-* -# Ethereum -ethereumTransaction=0-* -# Scheduling -scheduleCreate=0-* -scheduleSign=0-* -scheduleDelete=0-* -scheduleGetInfo=0-* -# Token -tokenCreate=0-* -tokenFreezeAccount=0-* -tokenUnfreezeAccount=0-* -tokenGrantKycToAccount=0-* -tokenRevokeKycFromAccount=0-* -tokenDelete=0-* -tokenMint=0-* -tokenBurn=0-* -tokenAccountWipe=0-* -tokenUpdate=0-* -tokenGetInfo=0-* -tokenGetNftInfo=0-* -tokenGetNftInfos=0-* -tokenGetAccountNftInfos=0-* -tokenAssociateToAccount=0-* -tokenDissociateFromAccount=0-* -tokenFeeScheduleUpdate=0-* -tokenPause=0-* -tokenUnpause=0-* -# Network -getVersionInfo=0-* -networkGetExecutionTime=2-50 -systemDelete=2-59 -systemUndelete=2-60 -freeze=2-58 -getAccountDetails=2-50 -# Util -utilPrng=0-* diff --git a/.github/workflows/support/local-node/data/config/application.properties b/.github/workflows/support/local-node/data/config/application.properties deleted file mode 100644 index 4994eb276..000000000 --- a/.github/workflows/support/local-node/data/config/application.properties +++ /dev/null @@ -1 +0,0 @@ -autoRenew.targetTypes= diff --git a/.github/workflows/support/local-node/data/config/bootstrap.properties b/.github/workflows/support/local-node/data/config/bootstrap.properties deleted file mode 100644 index 74d317b61..000000000 --- a/.github/workflows/support/local-node/data/config/bootstrap.properties +++ /dev/null @@ -1,9 +0,0 @@ -ledger.id=0x01 -netty.mode=DEV -contracts.chainId=298 -hedera.recordStream.logPeriod=1 -balances.exportPeriodSecs=400 -files.maxSizeKb=2048 -hedera.recordStream.compressFilesOnCreation=true -balances.compressOnCreation=true -contracts.maxNumWithHapiSigsAccess=0 diff --git a/.github/workflows/support/local-node/data/keys/private-node0.pfx b/.github/workflows/support/local-node/data/keys/private-node0.pfx deleted file mode 100644 index 47587c9f1..000000000 Binary files a/.github/workflows/support/local-node/data/keys/private-node0.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys/private-node1.pfx b/.github/workflows/support/local-node/data/keys/private-node1.pfx deleted file mode 100644 index 9ff147fee..000000000 Binary files a/.github/workflows/support/local-node/data/keys/private-node1.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys/private-node2.pfx b/.github/workflows/support/local-node/data/keys/private-node2.pfx deleted file mode 100644 index 0281ee680..000000000 Binary files a/.github/workflows/support/local-node/data/keys/private-node2.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys/private-node3.pfx b/.github/workflows/support/local-node/data/keys/private-node3.pfx deleted file mode 100644 index a9347851e..000000000 Binary files a/.github/workflows/support/local-node/data/keys/private-node3.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys/public.pfx b/.github/workflows/support/local-node/data/keys/public.pfx deleted file mode 100644 index 1add38152..000000000 Binary files a/.github/workflows/support/local-node/data/keys/public.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/gen.sh b/.github/workflows/support/local-node/data/keys2/gen.sh deleted file mode 100755 index cc302c5ef..000000000 --- a/.github/workflows/support/local-node/data/keys2/gen.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash -KEYS_DIR="$1" -[[ ! "${KEYS_DIR}" ]] && echo "ERROR: KEYS_DIR is required" && exit 1 - -shift 1 -nodes=("$@") -[[ ! "${nodes}" ]] && echo "ERROR: Node list is required" && exit 1 - - -EX_OK=0 -EX_ERR=1 -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -function clean() { - echo "Removing old file: ${SCRIPT_DIR}/public.pfx" - rm -f "${SCRIPT_DIR}/public.pfx" -} - -# combines the public key of the node with the existing public.pfx file -# if public.pfx file does not exist, it creates a new one -function combine_node_public_key() { - node="$1" - [[ ! "${node}" ]] && echo "ERROR: Node name is missing" && return "$EX_ERR" - echo "Combining public key for node: ${node}" - docker run --rm -v "${SCRIPT_DIR}":/keys --workdir /keys eclipse-temurin:17.0.2_8-jre bash ./merge_pfx.sh "${KEYS_DIR}" "${node}" || return "${EX_ERR}" - return "${EX_OK}" -} - -# generates public.pfx files by combing public key of the nodes -function gen_public_pfx() { - clean - - echo "Running from: ${SCRIPT_DIR}" - for node in "${nodes[@]}";do - combine_node_public_key "${node}" - status="$?" - - if [ "${status}" != "${EX_OK}" ]; then - echo "ERROR: Error occurred while combining public key for node: ${node}" - clean - exit 1 - fi - done -} - -gen_public_pfx diff --git a/.github/workflows/support/local-node/data/keys2/merge_pfx.sh b/.github/workflows/support/local-node/data/keys2/merge_pfx.sh deleted file mode 100755 index 49551076f..000000000 --- a/.github/workflows/support/local-node/data/keys2/merge_pfx.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright 2016-2023 Hedera Hashgraph, LLC -# -# This software is the confidential and proprietary information of -# Hedera Hashgraph, LLC. ("Confidential Information"). You shall not -# disclose such Confidential Information and shall use it only in -# accordance with the terms of the license agreement you entered into -# with Hedera Hashgraph. -# -# HEDERA HASHGRAPH MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF -# THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -# TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -# PARTICULAR PURPOSE, OR NON-INFRINGEMENT. HEDERA HASHGRAPH SHALL NOT BE LIABLE FOR -# ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR -# DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. -# - -dir=${1} -n=${2} - -# signing cert of $n -keytool -exportcert -alias "s-${n}" -keystore "${dir}/public-${n}.pfx" -storetype "pkcs12" -storepass "password" | - keytool -importcert -alias "s-${n}" -keystore "${dir}/public.pfx" -storetype "pkcs12" -storepass "password" -noprompt || exit 1 - -echo "-----------------------------" -echo "public.pfx" -echo "-----------------------------" -keytool -list -keystore "${dir}/public.pfx" -storetype "pkcs12" -storepass "password" - -# agreement cert of $n -keytool -exportcert -alias "a-${n}" -keystore "${dir}/public-${n}.pfx" -storetype "pkcs12" -storepass "password" | - keytool -importcert -alias "a-${n}" -keystore "${dir}/public.pfx" -storetype "pkcs12" -storepass "password" -noprompt || exit 1 - -echo "-----------------------------" -echo "public.pfx" -echo "-----------------------------" -keytool -list -keystore "${dir}/public.pfx" -storetype "pkcs12" -storepass "password" - -# encryption cert of ${n} -keytool -exportcert -alias "e-${n}" -keystore "${dir}/public-${n}.pfx" -storetype "pkcs12" -storepass "password" | - keytool -importcert -alias "e-${n}" -keystore "${dir}/public.pfx" -storetype "pkcs12" -storepass "password" -noprompt || exit 1 - - -echo "-----------------------------" -echo "public.pfx" -echo "-----------------------------" -keytool -list -keystore "${dir}/public.pfx" -storetype "pkcs12" -storepass "password" \ No newline at end of file diff --git a/.github/workflows/support/local-node/data/keys2/private-node0.pfx b/.github/workflows/support/local-node/data/keys2/private-node0.pfx deleted file mode 100644 index be6115e69..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/private-node0.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/private-node1.pfx b/.github/workflows/support/local-node/data/keys2/private-node1.pfx deleted file mode 100644 index 74ed02213..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/private-node1.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/private-node2.pfx b/.github/workflows/support/local-node/data/keys2/private-node2.pfx deleted file mode 100644 index 419704e88..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/private-node2.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/private-node3.pfx b/.github/workflows/support/local-node/data/keys2/private-node3.pfx deleted file mode 100644 index af4be7943..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/private-node3.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/public-node0.pfx b/.github/workflows/support/local-node/data/keys2/public-node0.pfx deleted file mode 100644 index 3408a4a2a..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/public-node0.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/public-node1.pfx b/.github/workflows/support/local-node/data/keys2/public-node1.pfx deleted file mode 100644 index 373cc1677..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/public-node1.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/public-node2.pfx b/.github/workflows/support/local-node/data/keys2/public-node2.pfx deleted file mode 100644 index a1804f882..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/public-node2.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/public-node3.pfx b/.github/workflows/support/local-node/data/keys2/public-node3.pfx deleted file mode 100644 index f37d0bc08..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/public-node3.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/data/keys2/public.pfx b/.github/workflows/support/local-node/data/keys2/public.pfx deleted file mode 100644 index 1a4430673..000000000 Binary files a/.github/workflows/support/local-node/data/keys2/public.pfx and /dev/null differ diff --git a/.github/workflows/support/local-node/hedera.crt b/.github/workflows/support/local-node/hedera.crt deleted file mode 100755 index 8d075ec78..000000000 --- a/.github/workflows/support/local-node/hedera.crt +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFpjCCA46gAwIBAgIUdLOB7iQa9RUTU+SBcrJyiCqdJrMwDQYJKoZIhvcNAQEL -BQAwQjESMBAGA1UEAwwJbG9jYWxob3N0MQswCQYDVQQGEwJVUzEQMA4GA1UECwwH -TXkgVW5pdDENMAsGA1UECgwEQUNNRTAgFw0yMjAyMTkwMDA4NDFaGA8yMTIyMDUw -NjAwMDg0MVowQjESMBAGA1UEAwwJbG9jYWxob3N0MQswCQYDVQQGEwJVUzEQMA4G -A1UECwwHTXkgVW5pdDENMAsGA1UECgwEQUNNRTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAN3w4d7c6Zw9VMg6VIOAFpzbJGcP1uvY76OEINU8pHALz/w8 -WSjzXqpcu2L9jgKy67w4FALooXFTyYobTlFgmm4KxbvyHyZJRJvs/UcyZLw7j7tV -JIsziL3EloaLMfzag45CmN1sYnBl1422FIKGRH/8DgGnIWvWOKlkHm9zxWToYVXb -42tsEriig7GatUUhmIjr3S4L17EqZNtCcN4UTXPelwLDD4lsUUwEYXvumnPrscVo -GcskEZPKBHKDySaQCQ3bd30I5NPNkIfLv1rw79t6JFsJvzdchsHfUlVPx3fwpbwS -iPHNFFJgMtRH3gEd0IFQv5fC2Z8x/trCNL/jFhK+2SdRB8t1uS7OYTIdp8RCVJwS -zHzVi3qLN393tv0Biqfsk+R1tS3ono9gzDkuH0A5MoLKPd0w0bJsT6pgSYeqQ4mC -Bf8dEQDnipC5oG0vbLMPNCuObnLxZo2Y0Yui1YhjX7Om9GKeEdSCiSG2eidGrBY6 -zJanM58st8ix3MYUkeZO74Q4DZbK5Z7690ZdDPsJlCHjVBxw8ir47o3Ln9HBKzKS -lxgfWBI63loAr5ZGUNadZNlsXjxtaDAUf294CtAXdFDH7tLCa3eFOnOAd6spz2i9 -S1tIgXpe5djMgeXk39BWHI5m0TeDICPReGIF9LgvhXLHayvkI+WmOwlWxQFpAgMB -AAGjgZEwgY4wHQYDVR0OBBYEFPUngvCftXZ3TfIiUaA2iqHpwTQNMB8GA1UdIwQY -MBaAFPUngvCftXZ3TfIiUaA2iqHpwTQNMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P -BAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHREECDAG -hwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQBTp8DJOcD4w7fZDyz79f6W0b2S4PKF -q6bvHPRtn8XaH/avM9u9VgNdBZjT3x87907xJEf73YCCvBV8/r6Dt+p+Y1qLbLdf -x0vm6djuzN3GPLLQOlC48lO7Qr6x9hrkCnFo1nL6EoqdPd6STEZpNlCCaEHoe5M9 -pQNmrI3Q5pkXtC9+tkV5Y3bw3o69CfHOZfgN368HmHehkMhxki2NknourJ3X54D9 -rYsCfjNng23xt86WSLCBqZPzPHPwDBVNubhbnd2o0H6C1paR7JN7I9jb6taLJcnY -xJ7BCnOHacfZFa1gEhVCyCy5ng8XNbcpaCw2rXKgIOzHUJDDFHkC5HAVKslweA4M -UkZu7/yUA91Mx6AziQ+/XBhPZPn809vWpZ2uDYnCaNFzwUmcWVLP+Id86jrT6T7E -fJCJGLit3CtY/IxoxmCgDoXspqap7DyvrnJ9hNGBjCIWjqqmVhhl55nEb7Op6eqG -CheG8xAxMsj4yc4ydzAQ1O6uv3h5JgrehBRiB0xKgPC4Jj8u5suQbjdcjTHU3/bH -Vcvg9MzR/3Eu53R8SfhIJXTlKQhmNOso4+CSPNR8R8ahmSG55nlNq0KkcICubPl8 -BtqUtJniUjhDJlWB+swbspWSyXTaQiavWnYQ/tTMvtv91o1Q8Cc7xrek/nJ4qPfE -qxD6cDDvXHUriw== ------END CERTIFICATE----- diff --git a/.github/workflows/support/local-node/hedera.key b/.github/workflows/support/local-node/hedera.key deleted file mode 100755 index 5ec7333d0..000000000 --- a/.github/workflows/support/local-node/hedera.key +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDd8OHe3OmcPVTI -OlSDgBac2yRnD9br2O+jhCDVPKRwC8/8PFko816qXLti/Y4Csuu8OBQC6KFxU8mK -G05RYJpuCsW78h8mSUSb7P1HMmS8O4+7VSSLM4i9xJaGizH82oOOQpjdbGJwZdeN -thSChkR//A4BpyFr1jipZB5vc8Vk6GFV2+NrbBK4ooOxmrVFIZiI690uC9exKmTb -QnDeFE1z3pcCww+JbFFMBGF77ppz67HFaBnLJBGTygRyg8kmkAkN23d9COTTzZCH -y79a8O/beiRbCb83XIbB31JVT8d38KW8EojxzRRSYDLUR94BHdCBUL+XwtmfMf7a -wjS/4xYSvtknUQfLdbkuzmEyHafEQlScEsx81Yt6izd/d7b9AYqn7JPkdbUt6J6P -YMw5Lh9AOTKCyj3dMNGybE+qYEmHqkOJggX/HREA54qQuaBtL2yzDzQrjm5y8WaN -mNGLotWIY1+zpvRinhHUgokhtnonRqwWOsyWpzOfLLfIsdzGFJHmTu+EOA2WyuWe -+vdGXQz7CZQh41QccPIq+O6Ny5/RwSsykpcYH1gSOt5aAK+WRlDWnWTZbF48bWgw -FH9veArQF3RQx+7Swmt3hTpzgHerKc9ovUtbSIF6XuXYzIHl5N/QVhyOZtE3gyAj -0XhiBfS4L4Vyx2sr5CPlpjsJVsUBaQIDAQABAoICABkN+Uupy/AEvvJTHmkRb8wR -k56UW854aRYgI347CDOza611iRmtvq80BH3wcoSEuwa+nGi3JwmGfEscWccnRQu8 -6NVWqBRQA2AoXO/ZhSR4Q1myKwvRW6OToqwJ4PDi4KTRyRS/CG5YmuC/MDnLa0Z4 -94JRghz8vB0IRcTOcJdbgeh5yCa/dq4T/5KwTLwjBqeXW9rXwKfaCbR0X848Q8Gb -vFe2GkYI3bUbjf86AILrVcBbqATGG7tfvAiK7s1tB26ias7pTv7HlyQzWLTtG+C+ -nUXPOABJkFdozPA/TzzvpGASxhWo8X06qaZL/iiJW3lLurNIzn0xnUwIDkEmwz4Q -zHmoeSC3UipRutpaGCcXMnM2xv186splkujnyrOHrygdRLFHw6DPnhLAR3681PYo -JjUPzXkN4W9S6fKA7rwBeBfknQ+GaI/BidSZBEaWyD4TR1D3Ww9oJw3yINDgGX4l -/DZsbpndUjATpPb2kbNdCB5zeB+Bar3e0fhx2aoUS2CSHAYeco04ddDTjybdj3pM -eRUoIgr9U1b4BFfHgeOkXHmacqL7dxmyxDvHFeWiRl/aZU3WNmq5Npl374yJ+y+0 -i0e2N/XAtXW+ZgK0fzwhXVGT9qwdO+dNMlvPYtP935WSEevwtFgPwmQ4eS/rIL5V -fUX1L+elAQvi1SEjAXaBAoIBAQD/zmGLhy2Q6hBXyHQh24op+bDlHZ6CmTYFFwT2 -rr+Cdhtl1R9Tf/5yWLzxJhRxg7mbNyIFmcAsFvlp3i+ntA6m4ZLqkkw/4qiwOrzu -escFh5VHTzb/7WF8qNTAI7h1sxlsWOHwi6IWgemP2bStwgUoOMbQeiIIXW8L1hGW -m5jgtn7ZBcFX1IYiGXp8jjidDVIJeqZ/S0+A5/9U8KEjJpYdf3zvOKrLyGiv6+pA -p8JHQix0NZ/hYG9oH22MDJK6w4U/Au+wOz/52mY7rhvHIh767h74f8h5N7VkmRnv -gvGL1LbsB70rKvVxUk/xC8Z48f1/K9a1tLc0HHUJHOTSkMWBAoIBAQDeG+6x18F/ -NC2yOSaWfJi4VA2fE3gvlPk/Sja8wHs/e88Qi+T9outZBUWXzy5d0Qr4kz+Vk5mf -KMs5ZA1gwD4/UIdMqkzsNDv388SOexdZiPnCXJwf8wIpw4lA39wLyXDmK+lcyeVn -uw2NOdKDMUB+9xfgMSA4UbHlwr3QAQfnH7WO5rre6199zHLJG812+eZBskj9UctA -Qx2RGNJcfW6VGEeKfX93qDT1qIDKEEE6wAba6cdeO7yWuBK8P2AE4CdxnCkM0Cj8 -WaLuzcayf3xBB9h7/xs+vcAc1xfyYS5t5a7qnaJP+QRvZVsM6+mvRRbEEc/aTVPD -MA/2BfGcpr/pAoIBAQDVI9Lm/RUcX8qKOf15kIFIhEG+RbWjP6FhEFMUb3oma95c -NP3LBySthf64N3BlPMpT59YzMG6Mzf+3FGhEpaRnrCBLzuY1fNftLqPpWOenVdct -+XTsPZAy3EGYbqrtdvNB8bUgRlghxNElCNKgzL6bSuNtJbZhneg+xnkVMkRpR+Xd -UgxM8Elq9Cu4yI+nXEf0mftMqSVvVN7MmUrKDQabQXSJpn+5GB0SJ9GhWaZo1VxQ -37V9hmqNKVKPlJJVhz/oxruL7XJa7nysUV/XxjhmAC5SA7a4OZCsZ1zS0hoM1oor -lC8sXrjvWRQ+1f7jG06Kva5C7HaRtvxVQXvvbq0BAoIBABiZ6W9jYXhQdDtIX0DN -3jCUhsm241oJ2y2qb7OqcjxO31mK1TtOv1il39Z3yT/09o0f6iwMJDjf0NqzfVPZ -F0v2BHZ2anzDMF0/b+cENUrihB+GGHjldrjfgqVf5kSb9FhaRsfTSQibTF33KJ0F -aIpnngpkBpiWW+kCD/opExIDjh2c6tfkJDiP26rw3GowNdPTBoigda3RgUXgBPTf -o8752Hq7edHsHKmVF2bKNB9ow5mdyUpjvXjIPLMDJgSEO3o2/MkBiXiiCQ0AV+DP -hBjD4LOjRwZFCDFplapwHy9nAF/WQ/MtttML2/DrdH/IXEQtYONiK0P0X+A1OlTK -l3kCggEBAKlCEipr/Pi8Agjle0ZkbyTCejJHkBoQhHiUCjysi6tZK51kunrYELAp -bHR8Iowi4lSx0AOtPPkxfyt3kbQY7rDZZXdUdRwPv5Pz4hmjeqEPVFw5MOvLi7rj -w0zc90EtzRtlz5XhJZdDQLlI9wzVI0aYsZybFYe7eEAkSRh+xRCf+0ohQLlWIAMX -HCGxaY6WsUv1Gl5tMtVOJ5XFAnw5vto1ezn3l81DIjNPCFcE/7r2PPWQijVICBz1 -h8SXewmOWysM67KtSXMoW08RxXU0fqjouLWMyPX+aPGky40EafV8c4IKtnib6lSB -TJ2llEjO54rp2QqDlW1mxbmZwuj3ppQ= ------END PRIVATE KEY----- diff --git a/.github/workflows/support/local-node/log4j2-jrs.xml b/.github/workflows/support/local-node/log4j2-jrs.xml deleted file mode 100644 index fd9706109..000000000 --- a/.github/workflows/support/local-node/log4j2-jrs.xml +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %-4L %c{1} - %m{nolookups}%n - - - - - - - - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %-4L %c{1} - %m{nolookups}%n - - - - - - - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} %-8sn %-5p %-16marker <%t> %c{1}: %msg{nolookups}%n - - - - - - - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} %-8sn %-5p %-16marker <%t> %c{1}: %msg{nolookups}%n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.github/workflows/support/local-node/settings.txt b/.github/workflows/support/local-node/settings.txt deleted file mode 100644 index 462e60ab5..000000000 --- a/.github/workflows/support/local-node/settings.txt +++ /dev/null @@ -1,22 +0,0 @@ -checkSignedStateFromDisk, 1 -csvFileName, MainNetStats -csvOutputFolder, data/stats -doUpnp, false -enableEventStreaming, false -eventsLogDir, /opt/hgcapp/eventsStreams -eventsLogPeriod, 5 -maxEventQueueForCons, 1000 -maxOutgoingSyncs, 8 -numConnections, 1000 -reconnect.active, 1 -reconnect.asyncStreamTimeoutMilliseconds, 60000 -reconnect.reconnectWindowSeconds, -1 -showInternalStats, 1 -state.saveStatePeriod, 900 -state.signedStateDisk, 5 -throttle7extra, 0.5 -useLoopbackIp, false -waitAtStartup, false -jasperDb.iteratorInputBufferBytes, 16777216 -prometheusEndpointEnabled, true -transactionMaxBytes, 6144 diff --git a/.github/workflows/support/scripts/direct-install.sh b/.github/workflows/support/scripts/direct-install.sh deleted file mode 100644 index 4836c1175..000000000 --- a/.github/workflows/support/scripts/direct-install.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -readonly SCRIPT_DIR - -# shellcheck source=./helper.sh -source "${SCRIPT_DIR}/helper.sh" - -function create_hapi_directories() { - local pod="${1}" - - if [ -z "${pod}" ]; then - echo "ERROR: 'mkdirs' - pod name is required" - return "${EX_ERR}" - fi - - "${KCTL}" exec "${pod}" -c root-container -- bash -c "mkdir -p $HAPI_PATH" || true - "${KCTL}" exec "${pod}" -c root-container -- bash -c "mkdir -p $HAPI_PATH/data/keys" || true - "${KCTL}" exec "${pod}" -c root-container -- bash -c "mkdir -p $HAPI_PATH/data/config" || true -} - -function unzip_build() { - local pod="${1}" - "${KCTL}" exec "${pod}" -c root-container -- bash -c "cd ${HAPI_PATH} && jar xvf /home/hedera/build-*" || true -} - -function start_service() { - local pod="${1}" - "${KCTL}" exec "${pod}" -c root-container -- bash -c "systemctl restart network-node" || true -} - -function stop_service() { - local pod="${1}" - "${KCTL}" exec "${pod}" -c root-container -- bash -c "systemctl stop network-node" || true -} - -function setup_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - fetch_platform_build || return "${EX_ERR}" - prep_address_book || return "${EX_ERR}" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - - create_hapi_directories "${pod}" || return "${EX_ERR}" - copy_platform "${pod}" || return "${EX_ERR}" - ls_path "${pod}" "${HEDERA_HOME_DIR}" || return "${EX_ERR}" - - # hedera.crt, hedera.keys - copy_hedera_keys "${pod}" || return "${EX_ERR}" - - # config.txt,settings.txt - # log4j2.xml, api-permission.properties, application.properties, bootstrap.properties - copy_config_files "${node_name}" "${pod}" || return "${EX_ERR}" - ls_path "${pod}" "${HAPI_PATH}/" - - # private-${node}.pfx, public.pfx - copy_node_keys "${node_name}" "${pod}" || return "${EX_ERR}" - ls_path "${pod}" "${HAPI_PATH}/data/keys/" - set_permission "${pod}" "${HAPI_PATH}" - - unzip_build "${pod}" - done -} - - -function start_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - start_service "${pod}" || return "${EX_ERR}" - log_time "start_node" - done - - verify_node_all || return "${EX_ERR}" - - sleep 2 - - verify_haproxy || return "${EX_ERR}" - - return "${EX_OK}" -} - -function stop_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - stop_service "${pod}" || return "${EX_ERR}" - log_time "stop_node" - done - - return "${EX_OK}" -} diff --git a/.github/workflows/support/scripts/env.sh b/.github/workflows/support/scripts/env.sh deleted file mode 100644 index 85acd706b..000000000 --- a/.github/workflows/support/scripts/env.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env bash -start_time=$(date +%s) - -# -------------------- Helper Functions -------------------------------------------------- -function setup_kubectl_context() { - load_env_file - [[ -z "${CLUSTER_NAME}" ]] && echo "ERROR: Cluster name is required" && return 1 - [[ -z "${NAMESPACE}" ]] && echo "ERROR: Namespace name is required" && return 1 - - kubectl get ns "${NAMESPACE}" &>/dev/null - if [[ $? -ne 0 ]]; then - kubectl create ns "${NAMESPACE}" - fi - - echo "List of namespaces:" - kubectl get ns - - echo "Setting kubectl context..." - local count - count=$(kubectl config get-contexts --no-headers | grep -c "kind-${CLUSTER_NAME}") - if [[ $count -ne 0 ]]; then - kubectl config use-context "kind-${CLUSTER_NAME}" - fi - kubectl config set-context --current --namespace="${NAMESPACE}" - kubectl config get-contexts -} - -function log_time() { - local end_time duration execution_time - - local func_name=$1 - - end_time=$(date +%s) - duration=$((end_time - start_time)) - execution_time=$(printf "%.2f seconds" "${duration}") - echo "-----------------------------------------------------------------------------------------------------" - echo "<<< ${func_name} execution took: ${execution_time} >>>" - echo "-----------------------------------------------------------------------------------------------------" -} - -function show_env_vars() { - echo "--------------------------Env Setup: fullstack-testing ------------------------------------------------" - echo "CLUSTER_NAME: ${CLUSTER_NAME}" - echo "RELEASE_NAME: ${RELEASE_NAME}" - echo "USER: ${USER}" - echo "NAMESPACE: ${NAMESPACE}" - echo "SCRIPT_DIR: ${SCRIPT_DIR}" - echo "TMP_DIR: ${TMP_DIR}" - echo "NODE_NAMES: ${NODE_NAMES[*]}" - echo "-----------------------------------------------------------------------------------------------------" - echo "" -} - -function parse_minor_version() { - local platform_version="$1" - IFS=. read -a VERSION_PARTS <<< "$platform_version" - local minor_version=${VERSION_PARTS[1]} - echo "${minor_version}" -} - -function parse_release_dir() { - local platform_version="$1" - IFS=. read -a VERSION_PARTS <<< "$platform_version" - local release_dir="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}" - echo "${release_dir}" -} - -function prepare_platform_software_URL() { - local platform_version="$1" - local release_dir=$(parse_release_dir "${platform_version}") - - # https://builds.hedera.com/node/software/v0.40/build-v0.40.0.zip - local platform_url="https://builds.hedera.com/node/software/${release_dir}/build-${platform_version}.zip" - echo "${platform_url}" -} - - -# ----------------------------- Setup ENV Variables ------------------------------------------------------------- -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -readonly TMP_DIR="${SCRIPT_DIR}/../temp" -readonly CLUSTER_SETUP_VALUES_FILE="${TMP_DIR}/cluster-values.yaml" -mkdir -p "$TMP_DIR" - -USER="${USER:-changeme}" -CLUSTER_NAME="${CLUSTER_NAME:-fst}" -NAMESPACE="${NAMESPACE:-fst-${USER}}" -RELEASE_NAME="${RELEASE_NAME:-fst}" -NMT_VERSION=v1.2.4 -PLATFORM_VERSION=v0.49.0-alpha.2 - -POD_MONITOR_ROLE="${POD_MONITOR_ROLE:-pod-monitor-role}" -GATEWAY_CLASS_NAME="${GATEWAY_CLASS_NAME:-fst-gateway-class}" - -#NODE_NAMES=(node0 node1 node2 node3) -NODE_NAMES=(node0 node1 node2) - -POD_MONITOR_ROLE="${POD_MONITOR_ROLE:-pod-monitor-role}" -GATEWAY_CLASS_NAME="${GATEWAY_CLASS_NAME:-fst-gateway-class}" - -readonly SETUP_CHART_DIR="../../../charts/fullstack-cluster-setup" -readonly CHART_DIR="../../../charts/fullstack-deployment" - -# telemetry related env variables -readonly TELEMETRY_DIR="${SCRIPT_DIR}/../telemetry" - -show_env_vars \ No newline at end of file diff --git a/.github/workflows/support/scripts/helper.sh b/.github/workflows/support/scripts/helper.sh deleted file mode 100755 index 98fe63f84..000000000 --- a/.github/workflows/support/scripts/helper.sh +++ /dev/null @@ -1,752 +0,0 @@ -#!/usr/bin/env bash -CUR_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -source "${CUR_DIR}/env.sh" - -# load .env file -set -a -# shellcheck source=./../temp/.env -source "${TMP_DIR}/.env" -set +a - -KCTL="$(command -v kubectl)" -readonly KCTL - -readonly EX_OK=0 -readonly EX_ERR=1 -readonly MAX_ATTEMPTS=60 -readonly HGCAPP_DIR="/opt/hgcapp" -readonly NMT_DIR="${HGCAPP_DIR}/node-mgmt-tools" -readonly HAPI_PATH="${HGCAPP_DIR}/services-hedera/HapiApp2.0" -readonly HEDERA_HOME_DIR="/home/hedera" -readonly RELEASE_NAME="${RELEASE_NAME:-fst}" - -readonly NMT_VERSION="${NMT_VERSION:-v2.0.0-alpha.0}" -readonly NMT_RELEASE_URL="https://api.github.com/repos/swirlds/swirlds-docker/releases/tags/${NMT_VERSION}" -readonly NMT_INSTALLER="node-mgmt-tools-installer-${NMT_VERSION}.run" -readonly NMT_INSTALLER_DIR="${SCRIPT_DIR}/../resources/nmt" -readonly NMT_INSTALLER_PATH="${NMT_INSTALLER_DIR}/${NMT_INSTALLER}" -readonly NMT_PROFILE="jrs" # we only allow jrs profile - -readonly PLATFORM_VERSION="${PLATFORM_VERSION:-v0.39.1}" -readonly MINOR_VERSION=$(parse_minor_version "${PLATFORM_VERSION}") -readonly PLATFORM_INSTALLER="build-${PLATFORM_VERSION}.zip" -readonly PLATFORM_INSTALLER_DIR="${SCRIPT_DIR}/../resources/platform" -readonly PLATFORM_INSTALLER_PATH="${PLATFORM_INSTALLER_DIR}/${PLATFORM_INSTALLER}" -readonly PLATFORM_INSTALLER_URL=$(prepare_platform_software_URL "${PLATFORM_VERSION}") - -readonly OPENJDK_VERSION="${OPENJDK_VERSION:-21.0.1}" - -function log_time() { - local end_time duration execution_time - - local func_name=$1 - - end_time=$(date +%s) - duration=$((end_time - start_time)) - execution_time=$(printf "%.2f seconds" "${duration}") - echo "-----------------------------------------------------------------------------------------------------" - echo "<<< ${func_name} execution took: ${execution_time} >>>" - echo "-----------------------------------------------------------------------------------------------------" -} - -# Fetch NMT release -function fetch_nmt() { - echo "" - echo "Fetching NMT ${NMT_VERSION}" - echo "-----------------------------------------------------------------------------------------------------" - - if [[ -f "${NMT_INSTALLER_PATH}" ]]; then - echo "Found NMT installer: ${NMT_INSTALLER_PATH}" - return "${EX_OK}" - fi - - mkdir -p "${NMT_INSTALLER_DIR}" - - # fetch nmt version.properties file to find the actual release file name - local release_dir=$(parse_release_dir "${NMT_VERSION}") - local nmt_version_url="https://builds.hedera.com/node/mgmt-tools/${release_dir}/version.properties" - echo "NMT version.properties URL: ${nmt_version_url}" - curl -L "${nmt_version_url}" -o "${NMT_INSTALLER_DIR}/version.properties" || return "${EX_ERR}" - cat "${NMT_INSTALLER_DIR}/version.properties" - - # parse version.properties file to determine the actual URL - local nmt_release_file=$(grep "^${NMT_VERSION}" "${NMT_INSTALLER_DIR}/version.properties"|cut -d'=' -f2) - local nmt_release_url="https://builds.hedera.com/node/mgmt-tools/${release_dir}/${nmt_release_file}" - echo "NMT release URL: ${nmt_release_url}" - curl -L "${nmt_release_url}" -o "${NMT_INSTALLER_PATH}" || return "${EX_ERR}" - ls -la "${NMT_INSTALLER_DIR}" - - return "${EX_OK}" -} - -# Fetch platform build.zip file -function fetch_platform_build() { - echo "" - echo "Fetching Platform ${PLATFORM_VERSION}: ${PLATFORM_INSTALLER_URL}" - echo "Local path: ${PLATFORM_INSTALLER_PATH}" - echo "-----------------------------------------------------------------------------------------------------" - - if [[ -f "${PLATFORM_INSTALLER_PATH}" ]]; then - echo "Found Platform installer: ${PLATFORM_INSTALLER_PATH}" - return "${EX_OK}" - fi - - mkdir -p "${PLATFORM_INSTALLER_DIR}" - curl -L "${PLATFORM_INSTALLER_URL}" -o "${PLATFORM_INSTALLER_PATH}" || return "${EX_ERR}" - return "${EX_OK}" -} - -function reset_node() { - local pod="${1}" - - echo "" - echo "Resetting node ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'reset_nmt' - pod name is required" - return "${EX_ERR}" - fi - - # best effort clean up of docker env - "${KCTL}" exec "${pod}" -c root-container -- bash -c "docker stop \$(docker ps -aq)" || true - "${KCTL}" exec "${pod}" -c root-container -- bash -c "docker rm -f \$(docker ps -aq)" || true - "${KCTL}" exec "${pod}" -c root-container -- bash -c "docker rmi -f \$(docker images -aq)" || true - - "${KCTL}" exec "${pod}" -c root-container -- rm -rf "${NMT_DIR}" || true - "${KCTL}" exec "${pod}" -c root-container -- rm -rf "${HAPI_PATH}" || true - - ls_path "${pod}" "${HGCAPP_DIR}" - set_permission "${pod}" "${HGCAPP_DIR}" - - return "${EX_OK}" -} - -# Copy NMT into root-container -function copy_nmt() { - local pod="${1}" - - echo "" - echo "Copying NMT to ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'copy_nmt' - pod name is required" - return "${EX_ERR}" - fi - - echo "Copying ${NMT_INSTALLER_PATH} -> ${pod}:${HEDERA_HOME_DIR}" - "${KCTL}" cp "${NMT_INSTALLER_PATH}" "${pod}":"${HEDERA_HOME_DIR}" -c root-container || return "${EX_ERR}" - - return "${EX_OK}" -} - -function set_permission() { - local pod="${1}" - local path="${2}" - - if [ -z "${pod}" ]; then - echo "ERROR: 'set_permission' - pod name is required" - return "${EX_ERR}" - fi - - if [ -z "${path}" ]; then - echo "ERROR: 'set_permission' - path is required" - return "${EX_ERR}" - fi - - local mode=0755 - - echo "Changing ownership of ${pod}:${path}" - "${KCTL}" exec "${pod}" -c root-container -- chown -R hedera:hedera "${path}" || return "${EX_ERR}" - - echo "Changing permission to ${mode} of ${pod}:${path}" - "${KCTL}" exec "${pod}" -c root-container -- chmod -R "${mode}" "${path}" || return "${EX_ERR}" - - echo "" - ls_path "${pod}" "${path}" - - return "${EX_OK}" -} - -# Copy platform installer into root-container -function copy_platform() { - local pod="${1}" - - echo "" - echo "Copying Platform to ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'copy_platform' - pod name is required" - return "${EX_ERR}" - fi - - echo "Copying ${PLATFORM_INSTALLER_PATH} -> ${pod}:${HEDERA_HOME_DIR}" - "${KCTL}" cp "${PLATFORM_INSTALLER_PATH}" "${pod}":"${HEDERA_HOME_DIR}" -c root-container || return "${EX_ERR}" - - return "${EX_OK}" -} - -# copy files and set ownership to hedera:hedera -function copy_files() { - local pod="${1}" - local srcDir="${2}" - local file="${3}" - local dstDir="${4}" - - if [ -z "${pod}" ]; then - echo "ERROR: 'copy_files' - pod name is required" - return "${EX_ERR}" - fi - if [ -z "${srcDir}" ]; then - echo "ERROR: 'copy_files' - src path is required" - return "${EX_ERR}" - fi - - if [ -z "${file}" ]; then - echo "ERROR: 'copy_files' - file path is required" - return "${EX_ERR}" - fi - - if [ -z "${dstDir}" ]; then - echo "ERROR: 'copy_files' - dstDir path is required" - return "${EX_ERR}" - fi - - echo "" - echo "Copying ${srcDir}/${file} -> ${pod}:${dstDir}/" - "${KCTL}" cp "$srcDir/${file}" "${pod}:${dstDir}/" -c root-container || return "${EX_ERR}" - - set_permission "${pod}" "${dstDir}/${file}" - - return "${EX_OK}" -} - -# Copy hedera keys -function copy_hedera_keys() { - local pod="${1}" - - echo "" - echo "Copy hedera TLS keys to ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'copy_hedera_keys' - pod name is required" - return "${EX_ERR}" - fi - - local srcDir="${SCRIPT_DIR}/../local-node" - local dstDir="${HAPI_PATH}" - local files=( - "hedera.key" - "hedera.crt" - ) - - for file in "${files[@]}"; do - copy_files "${pod}" "${srcDir}" "${file}" "${dstDir}" || return "${EX_ERR}" - done - - return "${EX_OK}" -} - -# Copy node keys -function copy_node_keys() { - local node="${1}" - - echo "" - echo "Copy node gossip keys to ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${node}" ]; then - echo "ERROR: 'copy_node_keys' - node name is required" - return "${EX_ERR}" - fi - - local pod="$2" - if [ -z "${pod}" ]; then - echo "ERROR: 'copy_node_keys' - pod name is required" - return "${EX_ERR}" - fi - - local srcDir="${SCRIPT_DIR}/../local-node/data/keys" - local dstDir="${HAPI_PATH}/data/keys" - local files=( - "private-${node}.pfx" - "public.pfx" - ) - - for file in "${files[@]}"; do - copy_files "${pod}" "${srcDir}" "${file}" "${dstDir}" || return "${EX_ERR}" - done - - return "${EX_OK}" -} - -# prepare address book using all nodes pod IP and store as config.txt -function prep_address_book() { - echo "" - echo "Preparing address book" - echo "Platform version: ${PLATFORM_VERSION}" - echo "Minor version: ${MINOR_VERSION}" - echo "-----------------------------------------------------------------------------------------------------" - - local config_file="${TMP_DIR}/config.txt" - local node_IP="" - local node_seq="${NODE_SEQ:-0}" # this also used as the account ID suffix - local account_id_prefix="${ACCOUNT_ID_PREFIX:-0.0}" - local account_id_seq="${ACCOUNT_ID_SEQ:-3}" - local internal_port="${INTERNAL_GOSSIP_PORT:-50111}" - local external_port="${EXTERNAL_GOSSIP_PORT:-50111}" - local ledger_name="${LEDGER_NAME:-123}" - local app_jar_file="${APP_NAME:-HederaNode.jar}" - local node_stake="${NODE_DEFAULT_STAKE:-1}" - - # prepare config lines - local config_lines=() - config_lines+=("swirld, ${ledger_name}") - config_lines+=("app, ${app_jar_file}") - - # prepare address book lines - local addresses=() - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - local max_attempts=$MAX_ATTEMPTS - local attempts=0 - local status=$(kubectl get pod "${pod}" -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') - - while [[ "${attempts}" -lt "${max_attempts}" && "${status}" != "True" ]]; do - kubectl get pod "${pod}" -o 'jsonpath={..status.conditions[?(@.type=="Ready")]}' - - echo "" - echo "Waiting for the pod to be ready - ${pod}: Attempt# ${attempts}/${max_attempts} ..." - sleep 5 - - status=$(kubectl get pod "${pod}" -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') - attempts=$((attempts + 1)) - done - - echo "${KCTL} get pod ${pod} -o jsonpath='{.status.podIP}' | xargs" - local POD_IP=$("${KCTL}" get pod "${pod}" -o jsonpath='{.status.podIP}' | xargs) - if [ -z "${POD_IP}" ]; then - echo "Could not detect pod IP for ${pod}" - return "${EX_ERR}" - fi - - echo "${KCTL} get svc network-${node_name}-svc -o jsonpath='{.spec.clusterIP}' | xargs" - local SVC_IP=$("${KCTL}" get svc "network-${node_name}-svc" -o jsonpath='{.spec.clusterIP}' | xargs) - if [ -z "${SVC_IP}" ]; then - echo "Could not detect service IP for ${pod}" - return "${EX_ERR}" - fi - - echo "pod IP: ${POD_IP}, svc IP: ${SVC_IP}" - - local account="${account_id_prefix}.${account_id_seq}" - local internal_ip="${POD_IP}" - local external_ip="${SVC_IP}" - - # for v.40.* onward - if [[ "${MINOR_VERSION}" -ge "40" ]]; then - local node_nick_name="${node_name}" - config_lines+=("address, ${node_seq}, ${node_nick_name}, ${node_name}, ${node_stake}, ${internal_ip}, ${internal_port}, ${external_ip}, ${external_port}, ${account}") - else - config_lines+=("address, ${node_seq}, ${node_name}, ${node_stake}, ${internal_ip}, ${internal_port}, ${external_ip}, ${external_port}, ${account}") - fi - - # increment node id - node_seq=$((node_seq + 1)) - account_id_seq=$((account_id_seq + 1)) - done - - # for v.41.* onward - if [[ "${MINOR_VERSION}" -ge "41" ]]; then - config_lines+=("nextNodeId, ${node_seq}") - fi - - # write contents to config file - cp "${SCRIPT_DIR}/../local-node/config.template" "${config_file}" || return "${EX_ERR}" - for line in "${config_lines[@]}"; do - echo "${line}" >>"${config_file}" || return "${EX_ERR}" - done - - # display config file contents - echo "" - cat "${TMP_DIR}/config.txt" || return "${EX_ERR}" - - return "${EX_OK}" -} - -# Copy config files -function copy_config_files() { - local node="${1}" - local pod="${2}" - - echo "" - echo "Copy config to ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${node}" ]; then - echo "ERROR: 'copy_config_files' - node name is required" - return "${EX_ERR}" - fi - - if [ -z "${pod}" ]; then - echo "ERROR: 'copy_config_files' - pod name is required" - return "${EX_ERR}" - fi - - # copy the correct log42j file locally before copying into the container - local srcDir="${TMP_DIR}" - local dstDir="${HAPI_PATH}" - cp -f "${SCRIPT_DIR}/../local-node/log4j2-${NMT_PROFILE}.xml" "${TMP_DIR}/log4j2.xml" || return "${EX_ERR}" - local files=( - "config.txt" - "log4j2.xml" - ) - for file in "${files[@]}"; do - copy_files "${pod}" "${srcDir}" "${file}" "${dstDir}" || return "${EX_ERR}" - done - - # copy files into the containers - local srcDir="${SCRIPT_DIR}/../local-node" - local files=( - "settings.txt" - ) - for file in "${files[@]}"; do - copy_files "${pod}" "${srcDir}" "${file}" "${dstDir}" || return "${EX_ERR}" - done - - # copy config properties files - local srcDir="${SCRIPT_DIR}/../local-node/data/config" - local dstDir="${HAPI_PATH}/data/config" - local files=( - "api-permission.properties" - "application.properties" - "bootstrap.properties" - ) - - for file in "${files[@]}"; do - copy_files "${pod}" "${srcDir}" "${file}" "${dstDir}" || return "${EX_ERR}" - done - - # create gc.log file since otherwise node doesn't start when using older NMT releases (e.g. v1.2.2) - "${KCTL}" exec "${pod}" -c root-container -- touch "${HAPI_PATH}/gc.log" || return "${EX_ERR}" - set_permission "${pod}" "${HAPI_PATH}/gc.log" - - - - return "${EX_OK}" -} - -function ls_path() { - local pod="${1}" - local path="${2}" - - if [ -z "${pod}" ]; then - echo "ERROR: 'ls_path' - pod name is required" - return "${EX_ERR}" - fi - - if [ -z "${path}" ]; then - echo "ERROR: 'ls_path' - path is required" - return "${EX_ERR}" - fi - - echo "" - echo "Displaying contents of ${path} from ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - echo "Running: "${KCTL}" exec ${pod} -c root-container -- ls -al ${path}" - "${KCTL}" exec "${pod}" -c root-container -- ls -al "${path}" -} - -function cleanup_path() { - local pod="${1}" - local path="${2}" - - echo "" - echo "Cleanup pod directory ${HGCAPP_DIR} in ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'cleanup_path' - pod name is required" - return "${EX_ERR}" - fi - - if [ -z "${path}" ]; then - echo "ERROR: 'ls_path' - path is required" - return "${EX_ERR}" - fi - - "${KCTL}" exec "${pod}" -c root-container -- bash -c "rm -rf ${path}" || return "${EX_ERR}" - return "${EX_OK}" -} - -function install_nmt() { - local pod="${1}" - - echo "" - echo "Install NMT to ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'install_nmt' - pod name is required" - return "${EX_ERR}" - fi - - # do not call rm directoires for nmt install - # cleanup_path "${pod}" "${HGCAPP_DIR}/*" || return "${EX_ERR}" - "${KCTL}" exec "${pod}" -c root-container -- chmod +x "${HEDERA_HOME_DIR}/${NMT_INSTALLER}" || return "${EX_ERR}" - "${KCTL}" exec "${pod}" -c root-container -- sudo "${HEDERA_HOME_DIR}/${NMT_INSTALLER}" --accept -- -fg || return "${EX_ERR}" - - return "${EX_OK}" -} - -function nmt_preflight() { - local pod="${1}" - - echo "" - echo "Run Preflight in ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'nmt_preflight' - pod name is required" - return "${EX_ERR}" - fi - - "${KCTL}" exec "${pod}" -c root-container -- \ - node-mgmt-tool -VV preflight -j "${OPENJDK_VERSION}" -df -i "${NMT_PROFILE}" -k 256m -m 512m || return "${EX_ERR}" - - return "${EX_OK}" -} - -function nmt_install() { - local pod="${1}" - - echo "" - echo "Run Install in ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'nmt_install' - pod name is required" - return "${EX_ERR}" - fi - - "${KCTL}" exec "${pod}" -c root-container -- \ - node-mgmt-tool -VV install \ - -p "${HEDERA_HOME_DIR}/${PLATFORM_INSTALLER}" \ - -n "${node_name}" \ - -x "${PLATFORM_VERSION}" || - return "${EX_ERR}" - - "${KCTL}" exec "${pod}" -c root-container -- \ - docker images && docker ps -a - - return "${EX_OK}" -} - -function nmt_start() { - local pod="${1}" - - echo "" - echo "Starting platform node in ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'nmt_start' - pod name is required" - return "${EX_ERR}" - fi - - # remove old logs - "${KCTL}" exec "${pod}" -c root-container -- bash -c "rm -f ${HAPI_PATH}/logs/*" || true - - "${KCTL}" exec "${pod}" -c root-container -- node-mgmt-tool -VV start || return "${EX_ERR}" - - local attempts=0 - local max_attempts=$MAX_ATTEMPTS - local status=$("${KCTL}" exec "${pod}" -c root-container -- docker ps -q) - while [[ "${attempts}" -lt "${max_attempts}" && "${status}" = "" ]]; do - echo ">> Waiting 5s to let the containers start ${pod}: Attempt# ${attempts}/${max_attempts} ..." - sleep 5 - - "${KCTL}" exec "${pod}" -c root-container -- docker ps || return "${EX_ERR}" - - status=$("${KCTL}" exec "${pod}" -c root-container -- docker ps -q) - attempts=$((attempts + 1)) - done - - if [[ -z "${status}" ]]; then - echo "ERROR: Containers didn't start" - return "${EX_ERR}" - fi - - sleep 20 - echo "Containers started..." - "${KCTL}" exec "${pod}" -c root-container -- docker ps -a || return "${EX_ERR}" - sleep 10 - - local podState podStateErr - podState="$("${KCTL}" exec "${pod}" -c root-container -- docker ps -a -f 'name=swirlds-node' --format '{{.State}}')" - podStateErr="${?}" - - if [[ "${podStateErr}" -ne 0 || -z "${podState}" || "${podState}" != "running" ]]; then - echo "ERROR: 'nmt_start' - swirlds-node container is not running" - return "${EX_ERR}" - fi - - echo "Fetching logs from swirlds-haveged..." - - "${KCTL}" exec "${pod}" -c root-container -- docker logs --tail 10 swirlds-haveged || return "${EX_ERR}" - - echo "Fetching logs from swirlds-node..." - "${KCTL}" exec "${pod}" -c root-container -- docker logs --tail 10 swirlds-node || return "${EX_ERR}" - - return "${EX_OK}" -} - -function nmt_stop() { - local pod="${1}" - - echo "" - echo "Stopping platform node in ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - if [ -z "${pod}" ]; then - echo "ERROR: 'nmt_stop' - pod name is required" - return "${EX_ERR}" - fi - - "${KCTL}" exec "${pod}" -c root-container -- node-mgmt-tool -VV stop || return "${EX_ERR}" - - # cleanup - echo "Waiting 15s to let the containers stop..." - sleep 15 - "${KCTL}" exec "${pod}" -c root-container -- docker ps -a || return "${EX_ERR}" - echo "Removing containers..." - # "${KCTL}" exec "${pod}" -c root-container -- bash -c "docker stop \$(docker ps -aq)" || true - "${KCTL}" exec "${pod}" -c root-container -- bash -c "docker rm -f \$(docker ps -aq)" || true - "${KCTL}" exec "${pod}" -c root-container -- docker ps -a || return "${EX_ERR}" - - return "${EX_OK}" -} - -function verify_network_state() { - local pod="${1}" - local max_attempts="${2}" - - echo "" - echo "Checking network status in ${pod}" - echo "-----------------------------------------------------------------------------------------------------" - - local attempts=0 - local status="" - - local LOG_PATH="${HAPI_PATH}/logs/hgcaa.log" - local status_pattern="ACTIVE" - - while [[ "${attempts}" -lt "${max_attempts}" && "${status}" != *"${status_pattern}"* ]]; do - sleep 5 - - attempts=$((attempts + 1)) - - echo "====================== ${pod}: Attempt# ${attempts}/${max_attempts} ===================================" - - set +e - status="$("${KCTL}" exec "${pod}" -c root-container -- cat "${LOG_PATH}" | grep "${status_pattern}")" - set -e - - if [[ "${status}" != *"${status_pattern}"* ]]; then - "${KCTL}" exec "${pod}" -c root-container -- ls -la "${HAPI_PATH}/logs" - - # show swirlds.log to see what node is doing - "${KCTL}" exec "${pod}" -c root-container -- tail -n 5 "${HAPI_PATH}/logs/swirlds.log" - else - echo "${status}" - fi - done - - if [[ "${status}" != *"${status_pattern}"* ]]; then - # capture the docker log in a local file for investigation - "${KCTL}" exec "${pod}" -c root-container -- docker logs swirlds-node >"${TMP_DIR}/${pod}-swirlds-node.log" - - echo "ERROR: <<< The network is not operational in ${pod}. >>>" - return "${EX_ERR}" - fi - - echo "====================== ${pod}: Status check complete ===================================" - return "$EX_OK" -} - -function verify_haproxy() { - # iterate over each haprox pod check if READY is 1/1 - local pods=$("${KCTL}" get pods -l fullstack.hedera.com/type=haproxy -o jsonpath='{.items[*].metadata.name}') - for pod in ${pods}; do - local status=$("${KCTL}" get pod "${pod}" -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') - if [[ "${status}" != "True" ]]; then - echo "ERROR: <<< HAProxy pod ${pod} is not ready. >>>" - return "${EX_ERR}" - fi - echo "HAProxy pod ${pod} is ready" - done - return "${EX_OK}" -} - -function verify_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - echo "" - echo "Verifying node status ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - verify_network_state "${pod}" "${MAX_ATTEMPTS}" || return "${EX_ERR}" - log_time "verify_network_state" - done - - return "${EX_OK}" -} - -# copy all node keys -function replace_keys_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - copy_hedera_keys "${pod}" || return "${EX_ERR}" - copy_node_keys "${node_name}" "${pod}" || return "${EX_ERR}" - log_time "replace_keys" - done - - return "${EX_OK}" -} - -function reset_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - reset_node "${pod}" || return "${EX_ERR}" - log_time "reset_node" - done - - return "${EX_OK}" -} diff --git a/.github/workflows/support/scripts/nmt-install.sh b/.github/workflows/support/scripts/nmt-install.sh deleted file mode 100644 index fd236728b..000000000 --- a/.github/workflows/support/scripts/nmt-install.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -readonly SCRIPT_DIR - -# shellcheck source=./helper.sh -source "${SCRIPT_DIR}/helper.sh" - -###################################### Functions To Run For All Nodes ################################################## -function setup_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - fetch_nmt || return "${EX_ERR}" - fetch_platform_build || return "${EX_ERR}" - prep_address_book || return "${EX_ERR}" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - reset_node "${pod}" - copy_nmt "${pod}" || return "${EX_ERR}" - copy_platform "${pod}" || return "${EX_ERR}" - ls_path "${pod}" "${HEDERA_HOME_DIR}" || return "${EX_ERR}" - install_nmt "${pod}" || return "${EX_ERR}" - ls_path "${pod}" "${HGCAPP_DIR}" || return "${EX_ERR}" - nmt_preflight "${pod}" || return "${EX_ERR}" - nmt_install "${pod}" || return "${EX_ERR}" - copy_hedera_keys "${pod}" || return "${EX_ERR}" - copy_config_files "${node_name}" "${pod}" || return "${EX_ERR}" - ls_path "${pod}" "${HAPI_PATH}/" - copy_node_keys "${node_name}" "${pod}" || return "${EX_ERR}" - ls_path "${pod}" "${HAPI_PATH}/data/keys/" - set_permission "${pod}" "${HAPI_PATH}" - log_time "setup_node" - done - - return "${EX_OK}" -} - -function start_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - nmt_start "${pod}" || return "${EX_ERR}" - log_time "start_node" - done - - verify_node_all || return "${EX_ERR}" - - sleep 2 - - verify_haproxy || return "${EX_ERR}" - - return "${EX_OK}" -} - -function stop_node_all() { - if [[ "${#NODE_NAMES[*]}" -le 0 ]]; then - echo "ERROR: Node list is empty. Set NODE_NAMES env variable with a list of nodes" - return "${EX_ERR}" - fi - echo "" - echo "Processing nodes ${NODE_NAMES[*]} ${#NODE_NAMES[@]}" - echo "-----------------------------------------------------------------------------------------------------" - - local node_name - for node_name in "${NODE_NAMES[@]}"; do - local pod="network-${node_name}-0" # pod name - nmt_stop "${pod}" || return "${EX_ERR}" - log_time "stop_node" - done - - return "${EX_OK}" -} - diff --git a/.github/workflows/zxc-helm-chart-tests.yaml b/.github/workflows/zxc-helm-chart-tests.yaml index b962f648f..edcfa7a04 100644 --- a/.github/workflows/zxc-helm-chart-tests.yaml +++ b/.github/workflows/zxc-helm-chart-tests.yaml @@ -70,9 +70,6 @@ jobs: uses: tj-actions/changed-files@c3a1bb2c992d77180ae65be6ae6c166cf40f857c #v45.0.3 with: files_yaml: | - chart: - - charts/** - - .github/workflows/support/** scripts: - dev/** diff --git a/.releaserc b/.releaserc index 99e97fe85..459558fbe 100644 --- a/.releaserc +++ b/.releaserc @@ -25,9 +25,7 @@ "@semantic-release/git", { "assets": [ - "gradle.properties", - "charts/fullstack-deployment/Chart.yaml", - "charts/fullstack-cluster-setup/Chart.yaml" + "gradle.properties" ] } ] diff --git a/charts/fullstack-cluster-setup/.helmignore b/charts/fullstack-cluster-setup/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/fullstack-cluster-setup/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/fullstack-cluster-setup/Chart.lock b/charts/fullstack-cluster-setup/Chart.lock deleted file mode 100644 index b28237242..000000000 --- a/charts/fullstack-cluster-setup/Chart.lock +++ /dev/null @@ -1,15 +0,0 @@ -dependencies: -- name: operator - repository: https://operator.min.io/ - version: 5.0.7 -- name: kube-prometheus-stack - repository: https://prometheus-community.github.io/helm-charts - version: 52.0.1 -- name: grafana-agent - repository: https://grafana.github.io/helm-charts - version: 0.27.1 -- name: cert-manager - repository: https://charts.jetstack.io - version: v1.13.3 -digest: sha256:cd0eb03b231d5936416078dab1c715e1b6c23412a502d49e261db155096f40f7 -generated: "2024-01-12T17:15:10.149274Z" diff --git a/charts/fullstack-cluster-setup/Chart.yaml b/charts/fullstack-cluster-setup/Chart.yaml deleted file mode 100644 index 0c05792ae..000000000 --- a/charts/fullstack-cluster-setup/Chart.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: v2 -name: fullstack-cluster-setup -description: An umbrella Helm chart to setup shared resources for 1+ deployments of the `fullstack-deployment` chart(s) - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.32.0 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "0.32.0" - -dependencies: - - name: operator - alias: minio-operator - version: 5.0.7 - repository: https://operator.min.io/ - condition: cloud.minio.enabled - - - name: kube-prometheus-stack - alias: prometheus-stack - version: 52.0.1 - repository: https://prometheus-community.github.io/helm-charts - condition: cloud.prometheusStack.enabled - - - name: grafana-agent - version: 0.27.1 - repository: https://grafana.github.io/helm-charts - condition: cloud.grafanaAgent.enabled - - - name: cert-manager - version: v1.13.3 - repository: https://charts.jetstack.io - condition: cloud.certManager.enabled diff --git a/charts/fullstack-cluster-setup/templates/NOTES.txt b/charts/fullstack-cluster-setup/templates/NOTES.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/charts/fullstack-cluster-setup/templates/_helpers.tpl b/charts/fullstack-cluster-setup/templates/_helpers.tpl deleted file mode 100644 index fb8bd8fe3..000000000 --- a/charts/fullstack-cluster-setup/templates/_helpers.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "fullstack-cluster-setup.name" -}} -{{- default .Chart.Name .Values.global.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "fullstack-cluster-setup.fullname" -}} -{{- if .Values.global.fullnameOverride }} -{{- .Values.global.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.global.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "fullstack-cluster-setup.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "fullstack-cluster-setup.labels" -}} -helm.sh/chart: {{ include "fullstack-cluster-setup.chart" . }} -{{ include "fullstack-cluster-setup.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "fullstack-cluster-setup.selectorLabels" -}} -app.kubernetes.io/name: {{ include "fullstack-cluster-setup.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} diff --git a/charts/fullstack-cluster-setup/templates/cert-manager/namespace.yaml b/charts/fullstack-cluster-setup/templates/cert-manager/namespace.yaml deleted file mode 100644 index 8e4b5c618..000000000 --- a/charts/fullstack-cluster-setup/templates/cert-manager/namespace.yaml +++ /dev/null @@ -1,8 +0,0 @@ -{{- if $.Values.cloud.certManager.enabled }} -apiVersion: v1 -kind: Namespace -metadata: - name: cert-manager - labels: - app: cert-manager -{{- end }} diff --git a/charts/fullstack-cluster-setup/templates/rbac/pod-monitor-role.yaml b/charts/fullstack-cluster-setup/templates/rbac/pod-monitor-role.yaml deleted file mode 100644 index 0a99ad63b..000000000 --- a/charts/fullstack-cluster-setup/templates/rbac/pod-monitor-role.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: pod-monitor-role - labels: - fullstack.hedera.com/type: cluster-role -rules: - - apiGroups: [ "" ] - resources: - - pods - - services - - clusterroles - - pods/log - - secrets - verbs: - - get - - list - - apiGroups: [ "" ] - resources: - - pods/exec - verbs: - - create diff --git a/charts/fullstack-cluster-setup/values.yaml b/charts/fullstack-cluster-setup/values.yaml deleted file mode 100644 index 9b8f76840..000000000 --- a/charts/fullstack-cluster-setup/values.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# Default values for fullstack-cluster-setup. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - namespaceOverride: "" - nameOverride: "" - fullnameOverride: "" - -# cloud configuration -cloud: - minio: - enabled: false - prometheusStack: - enabled: false - grafanaAgent: - enabled: false - certManager: - enabled: false - -cert-manager: - namespace: cert-manager - installCRDs: false - -minio-operator: - operator: - replicaCount: 1 - -prometheus-stack: - prometheus: - prometheusSpec: - scrapeInterval: 5s - podMonitorNamespaceSelector: - any: true # fetch metrics from other namespaces - podMonitorSelector: { } - podMonitorSelectorNilUsesHelmValues: false - ruleNamespaceSelector: - any: true # fetch metrics from other namespaces - ruleSelector: { } - ruleSelectorNilUsesHelmValues: false - serviceMonitorNamespaceSelector: - any: true # fetch metrics from other namespaces - serviceMonitorSelector: { } - serviceMonitorSelectorNilUsesHelmValues: false diff --git a/charts/fullstack-deployment/.helmignore b/charts/fullstack-deployment/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/fullstack-deployment/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/fullstack-deployment/Chart.lock b/charts/fullstack-deployment/Chart.lock deleted file mode 100644 index 2378cce9b..000000000 --- a/charts/fullstack-deployment/Chart.lock +++ /dev/null @@ -1,18 +0,0 @@ -dependencies: -- name: hedera-explorer - repository: "" - version: 0.2.0 -- name: hedera-mirror - repository: https://hashgraph.github.io/hedera-mirror-node/charts - version: 0.113.0 -- name: tenant - repository: https://operator.min.io/ - version: 5.0.12 -- name: acme-cluster-issuer - repository: https://swirldslabs.github.io/swirldslabs-helm-charts - version: 0.3.1 -- name: haproxy-ingress - repository: https://haproxy-ingress.github.io/charts - version: 0.14.5 -digest: sha256:cb2c36ef5124512badb4dbf8640905d06b6fdcca1d42a0e30f0136b36baaaec2 -generated: "2024-10-09T12:17:54.672614-05:00" diff --git a/charts/fullstack-deployment/Chart.yaml b/charts/fullstack-deployment/Chart.yaml deleted file mode 100644 index ddb623435..000000000 --- a/charts/fullstack-deployment/Chart.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: v2 -name: fullstack-deployment -description: An umbrella Helm chart for a chart deployment of `fullstack-deployment` - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.32.0 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "0.32.0" - -# This is range of versions of Kubernetes server that is supported by this chart. -# Note we need to use -0 suffix to support GKE version -# Reference: https://github.com/helm/helm/issues/3810#issuecomment-379877753 -kubeVersion: ">=1.25.0-0" - -dependencies: - # hedera-mirror-node-explorer (dependent on hedera-mirror-node) - - name: hedera-explorer - version: 0.2.0 - # TODO use repository once source chart has been updated: https://github.com/hashgraph/full-stack-testing/issues/675 - condition: hedera-explorer.enabled - - # hedera-mirror-node - - name: hedera-mirror - alias: hedera-mirror-node - version: 0.113.0 - repository: https://hashgraph.github.io/hedera-mirror-node/charts - condition: hedera-mirror-node.enabled - - - name: tenant - alias: minio-server - version: 5.0.12 - repository: https://operator.min.io/ - condition: cloud.minio.enabled - - - name: acme-cluster-issuer - version: 0.3.1 - repository: https://swirldslabs.github.io/swirldslabs-helm-charts - condition: cloud.acmeClusterIssuer.enabled - - - name: haproxy-ingress - version: 0.14.5 - repository: https://haproxy-ingress.github.io/charts - condition: cloud.haproxyIngressController.enabled diff --git a/charts/fullstack-deployment/README b/charts/fullstack-deployment/README deleted file mode 100644 index 521a384a0..000000000 --- a/charts/fullstack-deployment/README +++ /dev/null @@ -1,10 +0,0 @@ - -- hedera-explorer: hedera blockchain explorer -- hedera-mirror: hedera mirror node -- tenant: minio-server for storing data -- acme-cluster-issuer: for generating ssl certificates - -Kubernetes cert-manager to get a certificate from an internal ACME server, using cert-manager's ACME issuer. -envoy.yaml : envoy proxy configuration, match ingress traffic to a cluster of pods by using the service name and port. -ofacBlock.acl: a list of IP address to be blocked following US treasury OFAC sanctions. -otel collector: OpenTelemetry Collector is a stand-alone service provided by OpenTelemetry \ No newline at end of file diff --git a/charts/fullstack-deployment/charts/hedera-explorer/.helmignore b/charts/fullstack-deployment/charts/hedera-explorer/.helmignore deleted file mode 100644 index 4eb90c8fc..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# OS -.DS_Store - -# VCS -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ - -# Backup -*.swp -*.bak -*.tmp -*~ - -# IDE -.project -.idea/ -.vscode/ -*.tmproj diff --git a/charts/fullstack-deployment/charts/hedera-explorer/Chart.yaml b/charts/fullstack-deployment/charts/hedera-explorer/Chart.yaml deleted file mode 100644 index 0a81a0864..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -appVersion: 24.4.0 -description: Hedera Mirror Node Explorer for the Hedera Hashgraph DLT -home: https://github.com/hashgraph/hedera-mirror-node-explorer -name: hedera-explorer -sources: - - https://github.com/hashgraph/hedera-mirror-node-explorer -version: 0.2.0 diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/NOTES.txt b/charts/fullstack-deployment/charts/hedera-explorer/templates/NOTES.txt deleted file mode 100644 index 4cd70b2a4..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/NOTES.txt +++ /dev/null @@ -1,20 +0,0 @@ -Get the application URL by running these commands: - -{{- if contains "NodePort" .Values.service.type }} - - export NODE_PORT=$(kubectl get -n {{ include "hedera-explorer.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "hedera-explorer.fullname" . }}) - export NODE_IP=$(kubectl get nodes -n {{ include "hedera-explorer.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") - open http://${NODE_IP}:${NODE_PORT} - -{{- else if contains "LoadBalancer" .Values.service.type }} - - export SERVICE_IP=$(kubectl get svc -n {{ include "hedera-explorer.namespace" . }} {{ include "hedera-explorer.fullname" . }} -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}") - open http://${SERVICE_IP}:{{ .Values.service.port }} - -{{- else if contains "ClusterIP" .Values.service.type }} - - export POD_NAME=$(kubectl get pods -n {{ include "hedera-explorer.namespace" . }} -l "app.kubernetes.io/name={{ include "hedera-explorer.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - open http://127.0.0.1:8080 - kubectl -n {{ include "hedera-explorer.namespace" . }} port-forward $POD_NAME 8080:8080 - -{{- end }} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/_helpers.tpl b/charts/fullstack-deployment/charts/hedera-explorer/templates/_helpers.tpl deleted file mode 100644 index 4f08ccd3f..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/_helpers.tpl +++ /dev/null @@ -1,74 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "hedera-explorer.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "hedera-explorer.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "hedera-explorer.labels" -}} -{{ include "hedera-explorer.selectorLabels" . }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: hedera-explorer -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -helm.sh/chart: {{ include "hedera-explorer.chart" . }} -{{- if .Values.labels }} -{{ toYaml .Values.labels }} -{{- end }} -{{- end -}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "hedera-explorer.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Namespace -*/}} -{{- define "hedera-explorer.namespace" -}} -{{- default .Release.Namespace .Values.global.namespaceOverride -}} -{{- end -}} - -{{/* -Selector labels -*/}} -{{- define "hedera-explorer.selectorLabels" -}} -app.kubernetes.io/component: hedera-explorer -app.kubernetes.io/name: {{ include "hedera-explorer.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Create the name of the service account to use -*/}} -{{- define "hedera-explorer.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} -{{- default (include "hedera-explorer.fullname" .) .Values.serviceAccount.name -}} -{{- else -}} -{{- default "default" .Values.serviceAccount.name -}} -{{- end -}} -{{- end -}} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/configmap.yaml b/charts/fullstack-deployment/charts/hedera-explorer/templates/configmap.yaml deleted file mode 100644 index c8c51ef90..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/configmap.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "hedera-explorer.fullname" . }}-config - annotations: {{ toYaml .Values.annotations | nindent 4 }} - labels: {{ include "hedera-explorer.labels" . | nindent 4 }} - namespace: {{ include "hedera-explorer.namespace" . }} -data: - nginx.conf: | - worker_processes 1; - error_log stderr warn; - pid /var/cache/nginx/nginx.pid; - - events { - worker_connections 1024; - } - - http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /dev/stdout main; - sendfile on; - keepalive_timeout 65; - - server { - listen 8080; - server_name localhost; - - location / { - root /app; - index index.html; - try_files $uri $uri/ /index.html; - } - - location = /index.html { - root /app; - expires 30s; - } - - {{- if .Values.proxyPass }} - - {{- range $path, $backend := .Values.proxyPass }} - location {{ $path }} { - proxy_pass {{ tpl $backend $ }}; - } - {{- end }} - - - {{- end }} - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } - } - } - networks-config.json: {{ .Values.config | toJson }} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/deployment.yaml b/charts/fullstack-deployment/charts/hedera-explorer/templates/deployment.yaml deleted file mode 100644 index 46e09f06d..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/deployment.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: {{ toYaml .Values.annotations | nindent 4 }} - labels: {{ include "hedera-explorer.labels" . | nindent 4 }} - name: {{ include "hedera-explorer.fullname" . }} - namespace: {{ include "hedera-explorer.namespace" . }} -spec: - {{- if not .Values.autoscaling.enabled }} - replicas: {{ .Values.replicas }} - {{- end }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - selector: - matchLabels: {{ include "hedera-explorer.selectorLabels" . | nindent 6 }} - strategy: {{ toYaml .Values.updateStrategy | nindent 4 }} - template: - metadata: - annotations: {{- tpl (.Values.podAnnotations | toYaml) $ | nindent 8 }} - labels: {{ include "hedera-explorer.selectorLabels" . | nindent 8 }} - spec: - affinity: {{ toYaml .Values.affinity | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - env: - {{- range $name, $value := .Values.env }} - - name: {{ $name }} - {{- if kindIs "string" $value }} - value: {{ tpl $value $ | quote }} - {{- else }} - {{- tpl (toYaml $value) $ | nindent 14 }} - {{- end }} - {{- end }} - envFrom: {{ tpl (toYaml .Values.envFrom) . | nindent 12 }} - image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - livenessProbe: {{- toYaml .Values.livenessProbe | nindent 12 }} - ports: - - containerPort: 8080 - name: http - protocol: TCP - readinessProbe: {{ toYaml .Values.readinessProbe | nindent 12 }} - resources: {{ toYaml .Values.resources | nindent 12 }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - {{- with .Values.volumeMounts }} - volumeMounts: - {{- range $name, $config := . }} - - name: {{ $name }} - {{- toYaml $config | nindent 14 }} - {{- end }} - {{- end }} - imagePullSecrets: {{ toYaml .Values.image.pullSecrets | nindent 8 }} - nodeSelector: {{ toYaml .Values.nodeSelector | nindent 8 }} - priorityClassName: {{ .Values.priorityClassName }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - serviceAccountName: {{ include "hedera-explorer.serviceAccountName" . }} - terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} - tolerations: {{ toYaml .Values.tolerations | nindent 8 }} - {{- with .Values.volumes }} - volumes: - {{- range $name, $config := . }} - - name: {{ $name }} - {{- tpl (toYaml $config) $ | nindent 10 }} - {{- end }} - {{- end }} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/hpa.yaml b/charts/fullstack-deployment/charts/hedera-explorer/templates/hpa.yaml deleted file mode 100644 index 7e3ee0e5c..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/hpa.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.autoscaling.enabled -}} -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - labels: {{ include "hedera-explorer.labels" . | nindent 4 }} - name: {{ include "hedera-explorer.fullname" . }} - namespace: {{ include "hedera-explorer.namespace" . }} -spec: - behavior: {{ toYaml .Values.autoscaling.behavior | nindent 4 }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: {{ tpl (toYaml .Values.autoscaling.metrics) . | nindent 4 }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "hedera-explorer.fullname" . }} -{{- end -}} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/ingress.yaml b/charts/fullstack-deployment/charts/hedera-explorer/templates/ingress.yaml deleted file mode 100644 index ca8cbe104..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/ingress.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "hedera-explorer.fullname" $ -}} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - {{- if .Values.ingress.annotations }} - annotations: - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ tpl $value $ | quote }} - {{- end }} - {{- end }} - labels: {{ include "hedera-explorer.labels" . | nindent 4 }} - name: {{ $fullName }} - namespace: {{ include "hedera-explorer.namespace" . }} -spec: - {{- with (coalesce .Values.global.ingressClassName .Values.ingress.className) }} - ingressClassName: {{ . }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | default .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - pathType: {{ .pathType }} - backend: - service: - name: {{ $fullName }} - port: - number: {{ $.Values.service.port }} - {{- end }} - {{- end }} - {{- with .Values.ingress.tls }} - tls: - {{- range . }} - - hosts: - {{- range .hosts }} - - {{ tpl . $ | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/poddisruptionbudget.yaml b/charts/fullstack-deployment/charts/hedera-explorer/templates/poddisruptionbudget.yaml deleted file mode 100644 index 8a07af156..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.podDisruptionBudget.enabled -}} -apiVersion: policy/v1 -kind: PodDisruptionBudget -metadata: - labels: {{ include "hedera-explorer.labels" . | nindent 4 }} - name: {{ include "hedera-explorer.fullname" . }} - namespace: {{ include "hedera-explorer.namespace" . }} -spec: - {{- with .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ . }} - {{- end }} - {{- with .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ . }} - {{- end }} - selector: - matchLabels: {{ include "hedera-explorer.selectorLabels" . | nindent 6 }} -{{- end -}} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/service.yaml b/charts/fullstack-deployment/charts/hedera-explorer/templates/service.yaml deleted file mode 100644 index 0a517d2cd..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: {{ toYaml .Values.service.annotations | nindent 4 }} - labels: {{ include "hedera-explorer.labels" . | nindent 4 }} - name: {{ include "hedera-explorer.fullname" . }} - namespace: {{ include "hedera-explorer.namespace" . }} -spec: - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: {{ include "hedera-explorer.selectorLabels" . | nindent 4 }} - type: {{ .Values.service.type }} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/templates/serviceaccount.yaml b/charts/fullstack-deployment/charts/hedera-explorer/templates/serviceaccount.yaml deleted file mode 100644 index cdf50c179..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/templates/serviceaccount.yaml +++ /dev/null @@ -1,8 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: {{ include "hedera-explorer.labels" . | nindent 4 }} - name: {{ include "hedera-explorer.serviceAccountName" . }} - namespace: {{ include "hedera-explorer.namespace" . }} -{{- end -}} diff --git a/charts/fullstack-deployment/charts/hedera-explorer/values.yaml b/charts/fullstack-deployment/charts/hedera-explorer/values.yaml deleted file mode 100644 index b23db882a..000000000 --- a/charts/fullstack-deployment/charts/hedera-explorer/values.yaml +++ /dev/null @@ -1,190 +0,0 @@ -affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - topologyKey: kubernetes.io/hostname - labelSelector: - matchLabels: - app.kubernetes.io/component: hedera-explorer - -annotations: {} - -autoscaling: - behavior: {} - enabled: false - maxReplicas: 3 - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 80 - minReplicas: 1 - -# Environment variables to add to the container. The value can either be a string or an EnvVarSource. Evaluated as a template. -env: {} - # DOCKER_LOCAL_MIRROR_NODE_URL: "http://localhost:5551" - # BAR: - # valueFrom: - # secretKeyRef: - # name: '{{ .Release.Name }}-custom' - # key: BAZ - -# Add config maps or secrets as environment variables. Evaluated as a template. -envFrom: [] -# - secretRef: -# name: '{{ .Release.Name }}-env' - -fullnameOverride: "" - -global: - namespaceOverride: "" - ingressClassName: "" # if set, takes precedence over the .Values.ingress.className - -image: - pullPolicy: IfNotPresent - pullSecrets: [] - registry: gcr.io - repository: hedera-registry/hedera-mirror-node-explorer - tag: "" # Defaults to the chart's app version - -ingress: - annotations: {} - className: "" - enabled: false - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -labels: {} - -livenessProbe: - httpGet: - path: / - port: http - initialDelaySeconds: 3 - timeoutSeconds: 2 - -nodeSelector: {} - -podAnnotations: {} - -podDisruptionBudget: - enabled: false - # maxUnavailable: 0 - minAvailable: 50% - -podSecurityContext: - fsGroup: 1000 - runAsGroup: 1000 - runAsNonRoot: true - runAsUser: 1000 - seccompProfile: - type: RuntimeDefault - -priorityClassName: "" - -readinessProbe: - httpGet: - path: / - port: http - initialDelaySeconds: 3 - timeoutSeconds: 2 - -replicas: 1 - -resources: - limits: - cpu: 1150m - memory: 250Mi - requests: - cpu: 200m - memory: 100Mi - -revisionHistoryLimit: 3 - -securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: [ALL] - readOnlyRootFilesystem: true - -service: - annotations: {} - port: 80 - type: ClusterIP - -serviceAccount: - create: true - # The name of the service account to use. If not set and create is true, a name is generated using the fullname template - name: - -terminationGracePeriodSeconds: 30 - -tolerations: [] - -updateStrategy: - type: RollingUpdate - rollingUpdate: - maxSurge: 10% - maxUnavailable: 25% - -# Volumes to add to the container. The key is the volume name and the value is the volume mount definition. The same keys should also appear in volumes below. -volumeMounts: - cache: - mountPath: /var/cache/nginx - nginx-config: - mountPath: /etc/nginx/nginx.conf - subPath: nginx.conf - hedera-explorer-config: - mountPath: /app/networks-config.json - subPath: networks-config.json - -# Volume mounts to add to the container. The key is the volume name and the value is the volume definition. Evaluated as a template. -volumes: - cache: - emptyDir: {} - nginx-config: - configMap: - name: '{{ include "hedera-explorer.fullname" . }}-config' - hedera-explorer-config: - configMap: - name: '{{ include "hedera-explorer.fullname" . }}-config' - -# Add custom reverse proxy configuration. -# It is a key-value map where key is the path and value being a URL. -# Primary use case is to allow access to mirror node api via hedera explorer url -# Note that templating is allowed in the values -# Example: -# /api: "http://{{ .Release.Name }}-rest" -proxyPass: {} - -config: | - [ - { - "name": "mainnet", - "displayName": "MAINNET", - "url": "https://mainnet-public.mirrornode.hedera.com/", - "ledgerID": "00" - }, - { - "name": "testnet", - "displayName": "TESTNET", - "url": "https://testnet.mirrornode.hedera.com/", - "ledgerID": "01" - }, - { - "name": "previewnet", - "displayName": "PREVIEWNET", - "url": "https://previewnet.mirrornode.hedera.com/", - "ledgerID": "02" - } - ] diff --git a/charts/fullstack-deployment/config-files/envoy.yaml b/charts/fullstack-deployment/config-files/envoy.yaml deleted file mode 100644 index 596d4890f..000000000 --- a/charts/fullstack-deployment/config-files/envoy.yaml +++ /dev/null @@ -1,97 +0,0 @@ -admin: - address: - socket_address: - address: "0.0.0.0" - port_value: 9901 -static_resources: - listeners: - - name: hedera-grpc-web-listener - address: - socket_address: - address: 0.0.0.0 - port_value: 8080 - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - codec_type: auto - stat_prefix: ingress_http - use_remote_address: true - skip_xff_append: false - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: - prefix: "/" - route: - cluster: hedera-non-tls-grpc-cluster - timeout: 0s - max_stream_duration: - grpc_timeout_header_max: 0s - cors: - allow_origin_string_match: - - prefix: "*" - allow_methods: GET, PUT, DELETE, POST, OPTIONS - allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout - max_age: "1728000" - expose_headers: custom-header-1,grpc-status,grpc-message - http_filters: - - name: envoy.filters.http.grpc_web - - name: envoy.filters.http.cors - - name: envoy.filters.http.router - - name: "prometheus-listener" - address: - socket_address: - address: 0.0.0.0 - port_value: 9090 # custom prometheus metrics port - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - codec_type: auto - stat_prefix: ingress_metrics - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: [ "*" ] - routes: - - match: - prefix: "/metrics" - route: - cluster: envoy-admin - prefix_rewrite: "/stats/prometheus" - http_filters: - - name: envoy.filters.http.router - clusters: - - name: hedera-non-tls-grpc-cluster - connect_timeout: 0.25s - type: logical_dns - http2_protocol_options: {} - lb_policy: round_robin - load_assignment: - cluster_name: cluster_0 - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: network-{{ .nodeConfig.name }} - port_value: 50211 - - name: envoy-admin - connect_timeout: 0.25s - type: STATIC - load_assignment: - cluster_name: envoy-admin - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: 127.0.0.1 - port_value: 9901 diff --git a/charts/fullstack-deployment/config-files/haproxy.cfg b/charts/fullstack-deployment/config-files/haproxy.cfg deleted file mode 100644 index d19da8de9..000000000 --- a/charts/fullstack-deployment/config-files/haproxy.cfg +++ /dev/null @@ -1,120 +0,0 @@ -# haproxy-2.4.25.cfg (Adapted from: haproxy-fix-2.8.cfg ) -# https://docs.haproxy.org/2.4/configuration.html - -# identical to 2.0 except with `option-use-htx` removed -global - log 127.0.0.1 local0 debug - # Uncomment this log statement for e.g. `docker logs --follow --timestamps --since 10m hedera-proxy` - # log stdout format raw local0 info - # TODO: tune maxconn, way too high - maxconn 100000 - ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS - # TLSv1.3 gives error "SSL handshake failure (error:14209102:SSL routines:tls_early_post_process_client_hello:unsupported protocol)" - ssl-default-bind-options ssl-min-ver TLSv1.2 - stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners - - # We use a self-signed certificate, so there is no CA to validate with, options are none and required - ssl-server-verify none - -defaults - log global - # TODO: tune maxconn, way too high - maxconn 100000 - timeout connect 10s - timeout client 30s - timeout server 30s - timeout http-keep-alive 30s - option http-keep-alive - -userlist haproxy-dataplaneapi - user dataplane insecure-password "${HAPROXY_PASSWORD}" - -program api - command /usr/bin/dataplaneapi --host 0.0.0.0 --port 5555 --haproxy-bin /usr/sbin/haproxy --config-file /usr/local/etc/haproxy/haproxy.cfg --reload-cmd "kill -SIGUSR2 1" --reload-delay 5 --restart-cmd "kill -SIGUSR2 1" --userlist haproxy-dataplaneapi - no option start-on-reload - -resolvers k8s_resolver - parse-resolv-conf - hold valid 10s - # How many times to retry a query - resolve_retries 3 - # How long to wait between retries when no valid response has been received - timeout retry 1s - # How long to wait for a successful resolution - timeout resolve 1s - -frontend http_frontend - mode http - option logasap - option httplog - # log example: - # hedera-proxy | 34.27.47.68:47434 [07/Dec/2023:20:37:07.355] http_frontend http_backend/hedera-services-node 0/0/2/1/3 200 123 - - ---- 3/3/0/0/0 0/0 \ - # "POST http://35.196.138.70:50211/proto.ConsensusService/submitMessage HTTP/2.0" - - # Read the blocklist of OFAC Sanctioned Country IP List - acl ofac_ip src -f /var/opt/ofacBlock.acl - # Log & reject the traffic - http-request deny if ofac_ip - - bind *:50211 proto h2 - default_backend http_backend - -backend http_backend - mode http - http-reuse always - server hedera-services-node network-{{ .nodeConfig.name }}.{{ .namespace }}.svc.cluster.local:50211 proto h2 check inter 5s downinter 5s observe layer4 error-limit 5 on-error mark-down minconn 5 maxconn 1000 init-addr libc,none resolvers k8s_resolver - # server options: https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#5.2 - # proto h2 Force HTTP/2 on clear TCP, because it is faster than HTTP/1.1 - # check enable health checks on the server, all below options are health check options: - # inter 5s health check interval when server is UP - # downinter 5s health check interval when server is DOWN - # observe layer4 monitor TCP layer for issues, not HTTP (layer7) - # error-limit 5 number of failed connections before marking server DOWN - # on-error mark-down mark server as DOWN upon reaching error-limit above - # minconn 5 minimum number of connections to maintain to the backend - # maxconn 1000 maximum number of connections to maintain to the backend - -frontend tls_frontend - mode http - option httplog - # log example (tilde `~` indicates TLS termination): - # hedera-proxy | 206.81.117.129:59102 [07/Dec/2023:20:39:21.662] tls_frontend~ tls_backend/server1 263/8/2829 643 -- 4/1/0/0/0 0/0 - - # Read the blocklist of OFAC Sanctioned Country IP List - acl ofac_ip src -f /var/opt/ofacBlock.acl - # Log & reject the traffic - http-request deny if ofac_ip - # alpn h2 enable HTTP/2 on the frontend - # ssl enable TLS to terminate TLS connections at HAProxy to protect against H2 Rapid Reset Attack, without this it would passthrough - # bind *:50212 alpn h2 ssl crt /usr/local/etc/haproxy/hedera.pem - bind *:50212 alpn h2 - default_backend tls_backend - -backend tls_backend - mode http - http-reuse always - # server server1 "${HAPROXY_TARGET_IP}":50212 alpn h2 ssl check inter 10s downinter 10s error-limit 5 on-error mark-down minconn 5 maxconn 1000 - server hedera-services-node network-{{ .nodeConfig.name }}.{{ .namespace }}.svc.cluster.local:50212 alpn h2 ssl check inter 5s downinter 5s error-limit 5 on-error mark-down minconn 5 maxconn 1000 init-addr libc,none resolvers k8s_resolver - # server options: https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#5.2 - # alpn h2 prefer HTTP/2 - # ssl enable TLS (we set "ssl-server-verify none" in global section above) - # check enable health checks on the server, all below options are health check options: - # - "check" is combined with the "ssl" option & results in a "layer6 check" on the /stats page - # - adding a "no-check-ssl" in addition to "check" results in a "layer4 check", which is straight TCP, no TLS - # - adding a "check-ssl" in addition to "check" results in no health checks at all - # - see https://discourse.haproxy.org/t/docs-request-server-ssl-check-layer6-check-passed-but-server-ssl-check-no-check-ssl-layer4-check-passed/9301 - # inter 5s health check interval - # downinter 5s health check interval when server is DOWN - # error-limit 5 number of failed connections before marking server DOWN - # on-error mark-down mark server as DOWN upon reaching error-limit above - # minconn 5 minimum number of connections to maintain to the backend - # maxconn 1000 maximum number of connections to maintain to the backend - -listen stats - mode http - bind 0.0.0.0:9090 - http-request use-service prometheus-exporter if { path /metrics } - stats enable - stats uri /stats - stats refresh 10s - stats auth "${HAPROXY_USERNAME}:${HAPROXY_PASSWORD}" diff --git a/charts/fullstack-deployment/config-files/ofacBlock.acl b/charts/fullstack-deployment/config-files/ofacBlock.acl deleted file mode 100644 index a85528a9d..000000000 --- a/charts/fullstack-deployment/config-files/ofacBlock.acl +++ /dev/null @@ -1,4969 +0,0 @@ -2.144.0.0/16 -2.145.0.0/17 -2.145.128.0/17 -2.146.0.0/18 -2.146.64.0/19 -2.146.96.0/19 -2.146.128.0/17 -2.147.0.0/16 -2.176.0.0/15 -2.178.0.0/16 -2.179.0.0/19 -2.179.32.0/20 -2.179.48.0/21 -2.179.56.0/22 -2.179.60.0/23 -2.179.62.0/24 -2.179.63.0/24 -2.179.64.0/23 -2.179.66.0/23 -2.179.68.0/23 -2.179.70.0/24 -2.179.71.0/24 -2.179.72.0/22 -2.179.76.0/24 -2.179.77.0/24 -2.179.78.0/23 -2.179.80.0/20 -2.179.96.0/22 -2.179.100.0/22 -2.179.104.0/21 -2.179.112.0/20 -2.179.128.0/20 -2.179.144.0/22 -2.179.148.0/22 -2.179.152.0/21 -2.179.160.0/23 -2.179.162.0/23 -2.179.164.0/23 -2.179.166.0/23 -2.179.168.0/24 -2.179.169.0/24 -2.179.170.0/23 -2.179.172.0/22 -2.179.176.0/28 -2.179.176.16/29 -2.179.176.24/29 -2.179.176.32/27 -2.179.176.64/27 -2.179.176.96/29 -2.179.176.104/29 -2.179.176.112/28 -2.179.176.128/28 -2.179.176.144/28 -2.179.176.160/28 -2.179.176.176/28 -2.179.176.192/26 -2.179.177.0/24 -2.179.178.0/24 -2.179.179.0/24 -2.179.180.0/22 -2.179.184.0/23 -2.179.186.0/24 -2.179.187.0/24 -2.179.188.0/22 -2.179.192.0/24 -2.179.193.0/24 -2.179.194.0/24 -2.179.195.0/24 -2.179.196.0/24 -2.179.197.0/24 -2.179.198.0/24 -2.179.199.0/24 -2.179.200.0/23 -2.179.202.0/25 -2.179.202.128/25 -2.179.203.0/24 -2.179.204.0/22 -2.179.208.0/20 -2.179.224.0/19 -2.180.0.0/24 -2.180.1.0/24 -2.180.2.0/23 -2.180.4.0/22 -2.180.8.0/21 -2.180.16.0/20 -2.180.32.0/19 -2.180.64.0/22 -2.180.68.0/22 -2.180.72.0/21 -2.180.80.0/21 -2.180.88.0/21 -2.180.96.0/23 -2.180.98.0/23 -2.180.100.0/22 -2.180.104.0/22 -2.180.108.0/23 -2.180.110.0/23 -2.180.112.0/20 -2.180.128.0/21 -2.180.136.0/22 -2.180.140.0/22 -2.180.144.0/20 -2.180.160.0/20 -2.180.176.0/22 -2.180.180.0/22 -2.180.184.0/21 -2.180.192.0/19 -2.180.224.0/20 -2.180.240.0/21 -2.180.248.0/22 -2.180.252.0/23 -2.180.254.0/24 -2.180.255.0/24 -2.181.0.0/19 -2.181.32.0/24 -2.181.33.0/24 -2.181.34.0/24 -2.181.35.0/24 -2.181.36.0/22 -2.181.40.0/21 -2.181.48.0/21 -2.181.56.0/21 -2.181.64.0/20 -2.181.80.0/20 -2.181.96.0/20 -2.181.112.0/20 -2.181.128.0/20 -2.181.144.0/20 -2.181.160.0/20 -2.181.176.0/23 -2.181.178.0/23 -2.181.180.0/22 -2.181.184.0/21 -2.181.192.0/21 -2.181.200.0/22 -2.181.204.0/22 -2.181.208.0/22 -2.181.212.0/22 -2.181.216.0/22 -2.181.220.0/23 -2.181.222.0/24 -2.181.223.0/24 -2.181.224.0/21 -2.181.232.0/22 -2.181.236.0/22 -2.181.240.0/22 -2.181.244.0/22 -2.181.248.0/21 -2.182.0.0/19 -2.182.32.0/19 -2.182.64.0/19 -2.182.96.0/19 -2.182.128.0/19 -2.182.160.0/20 -2.182.176.0/20 -2.182.192.0/20 -2.182.208.0/22 -2.182.212.0/23 -2.182.214.0/23 -2.182.216.0/21 -2.182.224.0/20 -2.182.240.0/21 -2.182.248.0/23 -2.182.250.0/23 -2.182.252.0/24 -2.182.253.0/24 -2.182.254.0/24 -2.182.255.0/24 -2.183.0.0/19 -2.183.32.0/19 -2.183.64.0/18 -2.183.128.0/21 -2.183.136.0/23 -2.183.138.0/23 -2.183.140.0/22 -2.183.144.0/20 -2.183.160.0/20 -2.183.176.0/21 -2.183.184.0/21 -2.183.192.0/21 -2.183.200.0/22 -2.183.204.0/22 -2.183.208.0/20 -2.183.224.0/20 -2.183.240.0/21 -2.183.248.0/22 -2.183.252.0/23 -2.183.254.0/24 -2.183.255.0/24 -2.184.0.0/22 -2.184.4.0/24 -2.184.5.0/24 -2.184.6.0/24 -2.184.7.0/24 -2.184.8.0/24 -2.184.9.0/24 -2.184.10.0/24 -2.184.11.0/24 -2.184.12.0/23 -2.184.14.0/24 -2.184.15.0/24 -2.184.16.0/21 -2.184.24.0/24 -2.184.25.0/24 -2.184.26.0/23 -2.184.28.0/23 -2.184.30.0/23 -2.184.32.0/23 -2.184.34.0/23 -2.184.36.0/22 -2.184.40.0/23 -2.184.42.0/23 -2.184.44.0/22 -2.184.48.0/20 -2.184.64.0/24 -2.184.65.0/26 -2.184.65.64/28 -2.184.65.80/28 -2.184.65.96/27 -2.184.65.128/25 -2.184.66.0/23 -2.184.68.0/23 -2.184.70.0/24 -2.184.71.0/24 -2.184.72.0/23 -2.184.74.0/23 -2.184.76.0/22 -2.184.80.0/20 -2.184.96.0/20 -2.184.112.0/22 -2.184.116.0/22 -2.184.120.0/22 -2.184.124.0/22 -2.184.128.0/24 -2.184.129.0/24 -2.184.130.0/24 -2.184.131.0/24 -2.184.132.0/24 -2.184.133.0/24 -2.184.134.0/24 -2.184.135.0/24 -2.184.136.0/22 -2.184.140.0/22 -2.184.144.0/20 -2.184.160.0/20 -2.184.176.0/20 -2.184.192.0/23 -2.184.194.0/24 -2.184.195.0/24 -2.184.196.0/24 -2.184.197.0/24 -2.184.198.0/23 -2.184.200.0/24 -2.184.201.0/24 -2.184.202.0/24 -2.184.203.0/24 -2.184.204.0/22 -2.184.208.0/22 -2.184.212.0/23 -2.184.214.0/23 -2.184.216.0/21 -2.184.224.0/20 -2.184.240.0/21 -2.184.248.0/22 -2.184.252.0/23 -2.184.254.0/23 -2.185.0.0/20 -2.185.16.0/23 -2.185.18.0/24 -2.185.19.0/24 -2.185.20.0/22 -2.185.24.0/21 -2.185.32.0/19 -2.185.64.0/21 -2.185.72.0/21 -2.185.80.0/21 -2.185.88.0/22 -2.185.92.0/22 -2.185.96.0/23 -2.185.98.0/24 -2.185.99.0/24 -2.185.100.0/24 -2.185.101.0/24 -2.185.102.0/23 -2.185.104.0/22 -2.185.108.0/22 -2.185.112.0/20 -2.185.128.0/24 -2.185.129.0/24 -2.185.130.0/23 -2.185.132.0/23 -2.185.134.0/23 -2.185.136.0/21 -2.185.144.0/20 -2.185.160.0/19 -2.185.192.0/21 -2.185.200.0/22 -2.185.204.0/22 -2.185.208.0/20 -2.185.224.0/23 -2.185.226.0/24 -2.185.227.0/24 -2.185.228.0/23 -2.185.230.0/24 -2.185.231.0/26 -2.185.231.64/26 -2.185.231.128/25 -2.185.232.0/29 -2.185.232.8/29 -2.185.232.16/28 -2.185.232.32/27 -2.185.232.64/27 -2.185.232.96/27 -2.185.232.128/25 -2.185.233.0/24 -2.185.234.0/23 -2.185.236.0/23 -2.185.238.0/24 -2.185.239.0/25 -2.185.239.128/27 -2.185.239.160/28 -2.185.239.176/29 -2.185.239.184/29 -2.185.239.192/29 -2.185.239.200/29 -2.185.239.208/29 -2.185.239.216/29 -2.185.239.224/29 -2.185.239.232/29 -2.185.239.240/29 -2.185.239.248/29 -2.185.240.0/21 -2.185.248.0/22 -2.185.252.0/23 -2.185.254.0/23 -2.186.0.0/22 -2.186.4.0/22 -2.186.8.0/21 -2.186.16.0/21 -2.186.24.0/21 -2.186.32.0/21 -2.186.40.0/22 -2.186.44.0/22 -2.186.48.0/20 -2.186.64.0/19 -2.186.96.0/20 -2.186.112.0/20 -2.186.128.0/19 -2.186.160.0/20 -2.186.176.0/20 -2.186.192.0/20 -2.186.208.0/21 -2.186.216.0/21 -2.186.224.0/22 -2.186.228.0/23 -2.186.230.0/23 -2.186.232.0/21 -2.186.240.0/21 -2.186.248.0/22 -2.186.252.0/23 -2.186.254.0/23 -2.187.0.0/19 -2.187.32.0/24 -2.187.33.0/25 -2.187.33.128/25 -2.187.34.0/24 -2.187.35.0/24 -2.187.36.0/22 -2.187.40.0/21 -2.187.48.0/20 -2.187.64.0/20 -2.187.80.0/21 -2.187.88.0/21 -2.187.96.0/21 -2.187.104.0/21 -2.187.112.0/20 -2.187.128.0/24 -2.187.129.0/24 -2.187.130.0/24 -2.187.131.0/24 -2.187.132.0/24 -2.187.133.0/24 -2.187.134.0/23 -2.187.136.0/22 -2.187.140.0/22 -2.187.144.0/21 -2.187.152.0/23 -2.187.154.0/23 -2.187.156.0/22 -2.187.160.0/19 -2.187.192.0/21 -2.187.200.0/22 -2.187.204.0/22 -2.187.208.0/22 -2.187.212.0/22 -2.187.216.0/21 -2.187.224.0/20 -2.187.240.0/22 -2.187.244.0/22 -2.187.248.0/22 -2.187.252.0/24 -2.187.253.0/25 -2.187.253.128/25 -2.187.254.0/23 -2.188.0.0/23 -2.188.2.0/24 -2.188.3.0/24 -2.188.4.0/25 -2.188.4.128/26 -2.188.4.192/27 -2.188.4.224/27 -2.188.5.0/24 -2.188.6.0/24 -2.188.7.0/24 -2.188.8.0/24 -2.188.9.0/24 -2.188.10.0/24 -2.188.11.0/24 -2.188.12.0/22 -2.188.16.0/23 -2.188.18.0/25 -2.188.18.128/25 -2.188.19.0/24 -2.188.20.0/27 -2.188.20.32/29 -2.188.20.40/29 -2.188.20.48/28 -2.188.20.64/28 -2.188.20.80/28 -2.188.20.96/27 -2.188.20.128/26 -2.188.20.192/27 -2.188.20.224/28 -2.188.20.240/28 -2.188.21.0/24 -2.188.22.0/24 -2.188.23.0/24 -2.188.24.0/24 -2.188.25.0/24 -2.188.26.0/23 -2.188.28.0/22 -2.188.32.0/21 -2.188.40.0/21 -2.188.48.0/20 -2.188.64.0/21 -2.188.72.0/22 -2.188.76.0/22 -2.188.80.0/20 -2.188.96.0/19 -2.188.128.0/19 -2.188.160.0/20 -2.188.176.0/23 -2.188.178.0/23 -2.188.180.0/22 -2.188.184.0/21 -2.188.192.0/19 -2.188.224.0/19 -2.189.0.0/24 -2.189.1.0/24 -2.189.2.0/23 -2.189.4.0/22 -2.189.8.0/21 -2.189.16.0/20 -2.189.32.0/19 -2.189.64.0/18 -2.189.128.0/17 -2.190.0.0/15 -5.0.0.0/17 -5.0.128.0/17 -5.22.0.0/19 -5.22.32.0/19 -5.22.64.0/19 -5.22.96.0/19 -5.22.192.0/27 -5.22.192.32/27 -5.22.192.64/26 -5.22.192.128/25 -5.22.193.0/24 -5.22.194.0/23 -5.22.196.0/24 -5.22.197.0/24 -5.22.198.0/24 -5.22.199.0/27 -5.22.199.32/27 -5.22.199.64/29 -5.22.199.72/29 -5.22.199.80/29 -5.22.199.88/29 -5.22.199.96/29 -5.22.199.104/29 -5.22.199.112/29 -5.22.199.120/29 -5.22.199.128/28 -5.22.199.144/28 -5.22.199.160/28 -5.22.199.176/28 -5.22.199.192/28 -5.22.199.208/28 -5.22.199.224/28 -5.22.199.240/28 -5.22.200.0/21 -5.22.208.0/22 -5.22.212.0/22 -5.22.216.0/22 -5.22.220.0/22 -5.23.112.0/21 -5.28.32.0/21 -5.34.192.0/22 -5.34.196.0/22 -5.34.200.0/22 -5.34.204.0/22 -5.34.208.0/22 -5.34.212.0/22 -5.34.216.0/24 -5.34.217.0/24 -5.34.218.0/23 -5.34.220.0/24 -5.34.221.0/24 -5.34.222.0/24 -5.34.223.0/24 -5.52.0.0/16 -5.53.32.0/19 -5.56.128.0/22 -5.56.132.0/24 -5.56.135.0/24 -5.57.32.0/21 -5.61.24.0/21 -5.61.72.0/21 -5.62.160.0/19 -5.62.192.0/18 -5.63.8.0/21 -5.72.0.0/16 -5.73.0.0/16 -5.74.0.0/16 -5.75.0.0/17 -5.75.128.0/17 -5.78.0.0/16 -5.104.128.0/21 -5.104.208.0/21 -5.106.0.0/16 -5.112.0.0/13 -5.120.0.0/14 -5.124.0.0/17 -5.124.128.0/17 -5.125.0.0/16 -5.126.0.0/15 -5.134.128.0/18 -5.134.192.0/21 -5.134.200.0/21 -5.134.224.0/19 -5.144.128.0/21 -5.145.112.0/21 -5.159.48.0/21 -5.160.0.0/16 -5.161.0.0/17 -5.161.128.0/17 -5.190.0.0/16 -5.198.160.0/19 -5.200.64.0/19 -5.200.96.0/19 -5.200.128.0/17 -5.201.128.0/17 -5.202.0.0/16 -5.208.0.0/15 -5.210.0.0/16 -5.211.0.0/16 -5.212.0.0/15 -5.214.0.0/15 -5.216.0.0/15 -5.218.0.0/16 -5.219.0.0/18 -5.219.64.0/18 -5.219.128.0/18 -5.219.192.0/18 -5.220.0.0/14 -5.226.48.0/21 -5.232.0.0/17 -5.232.128.0/19 -5.232.160.0/20 -5.232.176.0/20 -5.232.192.0/20 -5.232.208.0/21 -5.232.216.0/21 -5.232.224.0/19 -5.233.0.0/19 -5.233.32.0/21 -5.233.40.0/22 -5.233.44.0/23 -5.233.46.0/23 -5.233.48.0/20 -5.233.64.0/19 -5.233.96.0/20 -5.233.112.0/21 -5.233.120.0/21 -5.233.128.0/19 -5.233.160.0/19 -5.233.192.0/19 -5.233.224.0/20 -5.233.240.0/20 -5.234.0.0/19 -5.234.32.0/22 -5.234.36.0/22 -5.234.40.0/21 -5.234.48.0/20 -5.234.64.0/19 -5.234.96.0/19 -5.234.128.0/18 -5.234.192.0/20 -5.234.208.0/21 -5.234.216.0/22 -5.234.220.0/22 -5.234.224.0/19 -5.235.0.0/17 -5.235.128.0/20 -5.235.144.0/22 -5.235.148.0/23 -5.235.150.0/23 -5.235.152.0/21 -5.235.160.0/20 -5.235.176.0/21 -5.235.184.0/23 -5.235.186.0/23 -5.235.188.0/22 -5.235.192.0/18 -5.236.0.0/17 -5.236.128.0/20 -5.236.144.0/21 -5.236.152.0/22 -5.236.156.0/22 -5.236.160.0/19 -5.236.192.0/20 -5.236.208.0/20 -5.236.224.0/19 -5.237.0.0/16 -5.238.0.0/16 -5.239.0.0/17 -5.239.128.0/20 -5.239.144.0/20 -5.239.160.0/20 -5.239.176.0/22 -5.239.180.0/22 -5.239.184.0/21 -5.239.192.0/20 -5.239.208.0/21 -5.239.216.0/21 -5.239.224.0/20 -5.239.240.0/23 -5.239.242.0/23 -5.239.244.0/22 -5.239.248.0/21 -5.250.0.0/17 -31.2.128.0/17 -31.7.64.0/19 -31.7.96.0/19 -31.7.128.0/20 -31.9.0.0/16 -31.14.80.0/20 -31.14.112.0/20 -31.14.144.0/20 -31.14.164.0/22 -31.24.200.0/21 -31.24.232.0/21 -31.25.88.0/21 -31.25.104.0/21 -31.25.128.0/21 -31.25.232.0/21 -31.29.32.0/19 -31.40.0.0/21 -31.47.32.0/19 -31.56.0.0/14 -31.130.176.0/20 -31.170.48.0/20 -31.171.216.0/21 -31.184.128.0/18 -31.193.64.0/20 -31.193.112.0/21 -31.193.144.0/20 -31.214.132.0/23 -31.214.146.0/23 -31.214.154.0/24 -31.214.168.0/23 -31.214.170.0/23 -31.214.172.0/22 -31.214.200.0/23 -31.214.228.0/22 -31.214.248.0/21 -31.217.208.0/21 -37.9.248.0/21 -37.10.64.0/22 -37.10.109.0/24 -37.10.117.0/24 -37.19.80.0/20 -37.27.0.0/16 -37.32.0.0/19 -37.32.32.0/21 -37.32.40.0/21 -37.32.112.0/20 -37.44.56.0/21 -37.48.128.0/18 -37.48.192.0/19 -37.49.144.0/21 -37.63.128.0/17 -37.75.240.0/21 -37.98.0.0/17 -37.114.192.0/18 -37.128.240.0/20 -37.129.0.0/16 -37.130.200.0/21 -37.137.0.0/16 -37.143.144.0/21 -37.148.0.0/17 -37.148.248.0/22 -37.152.160.0/19 -37.153.128.0/22 -37.153.176.0/20 -37.156.0.0/22 -37.156.8.0/21 -37.156.16.0/20 -37.156.48.0/20 -37.156.100.0/22 -37.156.112.0/20 -37.156.128.0/20 -37.156.144.0/22 -37.156.152.0/21 -37.156.160.0/21 -37.156.176.0/22 -37.156.212.0/22 -37.156.232.0/21 -37.156.240.0/22 -37.156.248.0/22 -37.191.64.0/19 -37.202.128.0/17 -37.221.0.0/18 -37.228.131.0/24 -37.228.133.0/24 -37.228.135.0/24 -37.228.136.0/22 -37.235.16.0/20 -37.254.0.0/15 -41.67.0.0/18 -41.78.108.0/22 -41.79.24.0/22 -41.79.120.0/22 -41.95.0.0/16 -41.202.160.0/19 -41.209.64.0/18 -41.218.0.0/18 -41.223.160.0/22 -41.223.200.0/22 -41.240.0.0/15 -45.59.138.0/24 -46.18.248.0/21 -46.21.80.0/20 -46.28.72.0/21 -46.32.0.0/19 -46.34.96.0/19 -46.34.160.0/22 -46.34.164.0/22 -46.34.168.0/21 -46.34.176.0/20 -46.36.96.0/19 -46.38.128.0/19 -46.40.128.0/18 -46.41.192.0/18 -46.51.0.0/17 -46.53.0.0/18 -46.53.64.0/21 -46.53.72.0/21 -46.53.80.0/20 -46.53.96.0/19 -46.57.128.0/17 -46.58.128.0/17 -46.62.128.0/17 -46.100.0.0/19 -46.100.32.0/20 -46.100.48.0/21 -46.100.56.0/23 -46.100.58.0/24 -46.100.59.0/24 -46.100.60.0/22 -46.100.64.0/22 -46.100.68.0/22 -46.100.72.0/22 -46.100.76.0/22 -46.100.80.0/22 -46.100.84.0/22 -46.100.88.0/21 -46.100.96.0/21 -46.100.104.0/23 -46.100.106.0/23 -46.100.108.0/22 -46.100.112.0/20 -46.100.128.0/20 -46.100.144.0/21 -46.100.152.0/22 -46.100.156.0/22 -46.100.160.0/22 -46.100.164.0/22 -46.100.168.0/22 -46.100.172.0/22 -46.100.176.0/22 -46.100.180.0/22 -46.100.184.0/22 -46.100.188.0/22 -46.100.192.0/20 -46.100.208.0/21 -46.100.216.0/21 -46.100.224.0/22 -46.100.228.0/22 -46.100.232.0/22 -46.100.236.0/22 -46.100.240.0/22 -46.100.244.0/22 -46.100.248.0/22 -46.100.252.0/23 -46.100.254.0/24 -46.100.255.0/24 -46.102.120.0/21 -46.102.128.0/20 -46.102.184.0/22 -46.136.37.0/24 -46.136.76.0/24 -46.136.113.0/24 -46.136.193.0/24 -46.136.249.0/24 -46.143.0.0/18 -46.143.64.0/18 -46.143.128.0/18 -46.143.192.0/18 -46.148.32.0/20 -46.161.192.0/21 -46.161.200.0/23 -46.161.202.0/23 -46.161.204.0/22 -46.161.208.0/20 -46.161.224.0/19 -46.164.64.0/18 -46.167.128.0/19 -46.182.32.0/21 -46.209.0.0/16 -46.213.0.0/16 -46.224.0.0/15 -46.235.76.0/23 -46.245.0.0/17 -46.248.32.0/19 -46.249.120.0/21 -46.251.224.0/24 -46.251.226.0/24 -46.251.237.0/24 -46.255.216.0/21 -57.73.224.0/19 -57.84.208.0/20 -57.88.80.0/20 -57.88.224.0/20 -57.91.32.0/20 -62.16.80.0/20 -62.60.128.0/17 -62.102.128.0/20 -62.145.109.0/27 -62.193.0.0/19 -62.220.96.0/19 -66.79.96.0/19 -77.36.128.0/17 -77.42.0.0/18 -77.42.64.0/18 -77.44.128.0/17 -77.77.64.0/18 -77.81.32.0/20 -77.81.76.0/22 -77.81.80.0/22 -77.81.128.0/21 -77.81.144.0/20 -77.81.192.0/19 -77.94.35.0/24 -77.104.64.0/18 -77.237.64.0/23 -77.237.66.0/24 -77.237.67.0/24 -77.237.68.0/24 -77.237.69.0/25 -77.237.69.128/25 -77.237.70.0/24 -77.237.71.0/24 -77.237.72.0/24 -77.237.73.0/24 -77.237.74.0/23 -77.237.76.0/27 -77.237.76.32/27 -77.237.76.64/26 -77.237.76.128/26 -77.237.76.192/26 -77.237.77.0/24 -77.237.78.0/25 -77.237.78.128/25 -77.237.79.0/24 -77.237.80.0/23 -77.237.82.0/23 -77.237.84.0/24 -77.237.85.0/26 -77.237.85.64/28 -77.237.85.80/29 -77.237.85.88/29 -77.237.85.96/27 -77.237.85.128/25 -77.237.86.0/24 -77.237.87.0/26 -77.237.87.64/27 -77.237.87.96/28 -77.237.87.112/28 -77.237.87.128/28 -77.237.87.144/28 -77.237.87.160/27 -77.237.87.192/27 -77.237.87.224/27 -77.237.88.0/25 -77.237.88.128/26 -77.237.88.192/26 -77.237.89.0/24 -77.237.90.0/24 -77.237.91.0/29 -77.237.91.8/29 -77.237.91.16/28 -77.237.91.32/27 -77.237.91.64/26 -77.237.91.128/26 -77.237.91.192/28 -77.237.91.208/28 -77.237.91.224/27 -77.237.92.0/23 -77.237.94.0/24 -77.237.95.0/27 -77.237.95.32/28 -77.237.95.48/28 -77.237.95.64/26 -77.237.95.128/27 -77.237.95.160/28 -77.237.95.176/28 -77.237.95.192/26 -77.237.160.0/24 -77.237.161.0/26 -77.237.161.64/29 -77.237.161.72/29 -77.237.161.80/28 -77.237.161.96/27 -77.237.161.128/26 -77.237.161.192/26 -77.237.162.0/27 -77.237.162.32/28 -77.237.162.48/29 -77.237.162.56/30 -77.237.162.60/30 -77.237.162.64/26 -77.237.162.128/25 -77.237.163.0/29 -77.237.163.8/29 -77.237.163.16/29 -77.237.163.24/30 -77.237.163.28/30 -77.237.163.32/27 -77.237.163.64/27 -77.237.163.96/30 -77.237.163.100/30 -77.237.163.104/29 -77.237.163.112/29 -77.237.163.120/29 -77.237.163.128/29 -77.237.163.136/29 -77.237.163.144/29 -77.237.163.152/29 -77.237.163.160/28 -77.237.163.176/29 -77.237.163.184/29 -77.237.163.192/28 -77.237.163.208/29 -77.237.163.216/29 -77.237.163.224/27 -77.237.164.0/24 -77.237.165.0/25 -77.237.165.128/25 -77.237.166.0/23 -77.237.168.0/25 -77.237.168.128/27 -77.237.168.160/28 -77.237.168.176/29 -77.237.168.184/30 -77.237.168.188/30 -77.237.168.192/26 -77.237.169.0/26 -77.237.169.64/29 -77.237.169.72/29 -77.237.169.80/29 -77.237.169.88/29 -77.237.169.96/28 -77.237.169.112/29 -77.237.169.120/29 -77.237.169.128/26 -77.237.169.192/29 -77.237.169.200/29 -77.237.169.208/29 -77.237.169.216/29 -77.237.169.224/27 -77.237.170.0/24 -77.237.171.0/25 -77.237.171.128/25 -77.237.172.0/25 -77.237.172.128/26 -77.237.172.192/27 -77.237.172.224/27 -77.237.173.0/24 -77.237.174.0/24 -77.237.175.0/29 -77.237.175.8/29 -77.237.175.16/29 -77.237.175.24/30 -77.237.175.28/30 -77.237.175.32/29 -77.237.175.40/30 -77.237.175.44/30 -77.237.175.48/29 -77.237.175.56/30 -77.237.175.60/30 -77.237.175.64/26 -77.237.175.128/29 -77.237.175.136/30 -77.237.175.140/30 -77.237.175.144/28 -77.237.175.160/28 -77.237.175.176/29 -77.237.175.184/29 -77.237.175.192/28 -77.237.175.208/28 -77.237.175.224/28 -77.237.175.240/30 -77.237.175.244/30 -77.237.175.248/29 -77.237.176.0/24 -77.237.177.0/25 -77.237.177.128/29 -77.237.177.136/30 -77.237.177.140/30 -77.237.177.144/28 -77.237.177.160/28 -77.237.177.176/29 -77.237.177.184/30 -77.237.177.188/30 -77.237.177.192/26 -77.237.178.0/27 -77.237.178.32/29 -77.237.178.40/29 -77.237.178.48/28 -77.237.178.64/29 -77.237.178.72/29 -77.237.178.80/28 -77.237.178.96/27 -77.237.178.128/29 -77.237.178.136/29 -77.237.178.144/28 -77.237.178.160/29 -77.237.178.168/29 -77.237.178.176/28 -77.237.178.192/27 -77.237.178.224/28 -77.237.178.240/30 -77.237.178.244/30 -77.237.178.248/29 -77.237.179.0/24 -77.237.180.0/24 -77.237.181.0/26 -77.237.181.64/29 -77.237.181.72/30 -77.237.181.76/30 -77.237.181.80/29 -77.237.181.88/29 -77.237.181.96/27 -77.237.181.128/28 -77.237.181.144/28 -77.237.181.160/27 -77.237.181.192/29 -77.237.181.200/29 -77.237.181.208/29 -77.237.181.216/29 -77.237.181.224/28 -77.237.181.240/28 -77.237.182.0/24 -77.237.183.0/24 -77.237.184.0/24 -77.237.185.0/24 -77.237.186.0/24 -77.237.187.0/24 -77.237.188.0/23 -77.237.190.0/24 -77.237.191.0/24 -77.238.104.0/21 -77.238.112.0/20 -77.245.224.0/20 -78.31.232.0/22 -78.38.0.0/15 -78.109.192.0/20 -78.110.96.0/20 -78.110.112.0/20 -78.111.0.0/20 -78.154.32.0/19 -78.155.64.0/19 -78.157.32.0/19 -78.158.160.0/19 -79.127.0.0/17 -79.132.192.0/21 -79.132.200.0/21 -79.132.208.0/20 -79.141.224.0/20 -79.143.84.0/24 -79.143.85.0/24 -79.143.86.0/24 -79.174.160.0/21 -79.175.128.0/18 -80.66.176.0/20 -80.69.240.0/20 -80.70.120.0/21 -80.71.112.0/20 -80.75.0.0/20 -80.191.0.0/16 -80.210.0.0/18 -80.210.128.0/17 -80.231.68.0/24 -80.242.0.0/20 -80.249.112.0/22 -80.250.192.0/20 -80.253.128.0/21 -80.253.136.0/21 -80.253.144.0/20 -81.12.0.0/17 -81.16.112.0/20 -81.28.32.0/20 -81.28.48.0/20 -81.29.240.0/20 -81.31.160.0/20 -81.31.176.0/20 -81.31.224.0/19 -81.90.144.0/20 -81.91.128.0/20 -81.91.144.0/20 -81.163.0.0/21 -82.97.208.0/21 -82.97.216.0/21 -82.97.224.0/19 -82.99.192.0/18 -82.100.128.0/19 -82.100.160.0/20 -82.100.176.0/21 -82.100.184.0/21 -82.115.0.0/21 -82.115.8.0/22 -82.115.12.0/23 -82.115.14.0/24 -82.115.16.0/20 -82.137.192.0/18 -82.138.140.0/25 -83.147.192.0/18 -84.39.192.0/22 -84.47.192.0/19 -84.47.224.0/21 -84.47.232.0/21 -84.47.240.0/20 -84.241.0.0/18 -85.9.64.0/18 -85.15.0.0/18 -85.133.128.0/17 -85.185.0.0/16 -85.198.0.0/18 -85.204.30.0/23 -85.204.76.0/23 -85.204.80.0/20 -85.204.104.0/23 -85.204.128.0/22 -85.204.208.0/20 -85.239.192.0/19 -86.55.0.0/16 -86.57.0.0/17 -86.104.32.0/20 -86.104.80.0/20 -86.104.96.0/20 -86.104.232.0/21 -86.104.240.0/21 -86.105.40.0/21 -86.105.128.0/20 -86.106.24.0/24 -86.106.25.0/24 -86.106.192.0/21 -86.107.0.0/20 -86.107.16.0/22 -86.107.80.0/20 -86.107.144.0/20 -86.107.172.0/22 -86.107.208.0/20 -86.109.32.0/20 -86.109.48.0/21 -86.109.56.0/22 -86.109.60.0/23 -86.109.62.0/24 -86.109.63.0/24 -87.107.0.0/16 -87.236.211.0/24 -87.236.213.0/24 -87.236.214.0/24 -87.247.160.0/22 -87.247.164.0/22 -87.247.168.0/29 -87.247.168.8/29 -87.247.168.16/28 -87.247.168.32/27 -87.247.168.64/26 -87.247.168.128/25 -87.247.169.0/24 -87.247.170.0/23 -87.247.172.0/22 -87.247.176.0/24 -87.247.177.0/24 -87.247.178.0/24 -87.247.179.0/24 -87.247.180.0/24 -87.247.181.0/24 -87.247.182.0/29 -87.247.182.8/29 -87.247.182.16/28 -87.247.182.32/28 -87.247.182.48/29 -87.247.182.56/29 -87.247.182.64/27 -87.247.182.96/27 -87.247.182.128/26 -87.247.182.192/28 -87.247.182.208/28 -87.247.182.224/27 -87.247.183.0/24 -87.247.184.0/24 -87.247.185.0/24 -87.247.186.0/24 -87.247.187.0/24 -87.247.188.0/23 -87.247.190.0/23 -87.248.128.0/24 -87.248.129.0/28 -87.248.129.16/28 -87.248.129.32/27 -87.248.129.64/28 -87.248.129.80/28 -87.248.129.96/28 -87.248.129.112/29 -87.248.129.120/29 -87.248.129.128/30 -87.248.129.132/30 -87.248.129.136/29 -87.248.129.144/29 -87.248.129.152/29 -87.248.129.160/28 -87.248.129.176/28 -87.248.129.192/28 -87.248.129.208/28 -87.248.129.224/28 -87.248.129.240/28 -87.248.130.0/29 -87.248.130.8/29 -87.248.130.16/29 -87.248.130.24/29 -87.248.130.32/28 -87.248.130.48/28 -87.248.130.64/26 -87.248.130.128/26 -87.248.130.192/27 -87.248.130.224/27 -87.248.131.0/24 -87.248.132.0/26 -87.248.132.64/26 -87.248.132.128/25 -87.248.133.0/29 -87.248.133.8/29 -87.248.133.16/29 -87.248.133.24/29 -87.248.133.32/28 -87.248.133.48/29 -87.248.133.56/29 -87.248.133.64/28 -87.248.133.80/28 -87.248.133.96/29 -87.248.133.104/29 -87.248.133.112/28 -87.248.133.128/28 -87.248.133.144/28 -87.248.133.160/27 -87.248.133.192/28 -87.248.133.208/29 -87.248.133.216/29 -87.248.133.224/29 -87.248.133.232/29 -87.248.133.240/29 -87.248.133.248/29 -87.248.134.0/25 -87.248.134.128/25 -87.248.135.0/25 -87.248.135.128/25 -87.248.136.0/25 -87.248.136.128/27 -87.248.136.160/28 -87.248.136.176/28 -87.248.136.192/26 -87.248.137.0/27 -87.248.137.32/29 -87.248.137.40/29 -87.248.137.48/28 -87.248.137.64/26 -87.248.137.128/25 -87.248.138.0/23 -87.248.140.0/27 -87.248.140.32/28 -87.248.140.48/28 -87.248.140.64/26 -87.248.140.128/28 -87.248.140.144/28 -87.248.140.160/27 -87.248.140.192/26 -87.248.141.0/24 -87.248.142.0/23 -87.248.144.0/24 -87.248.145.0/24 -87.248.146.0/24 -87.248.147.0/24 -87.248.148.0/24 -87.248.149.0/24 -87.248.150.0/24 -87.248.151.0/24 -87.248.152.0/24 -87.248.153.0/24 -87.248.154.0/24 -87.248.155.0/24 -87.248.156.0/24 -87.248.157.0/24 -87.248.158.0/25 -87.248.158.128/25 -87.248.159.0/24 -87.251.128.0/19 -88.86.0.0/20 -88.86.16.0/20 -88.135.32.0/22 -88.135.36.0/22 -88.135.40.0/21 -89.32.0.0/19 -89.32.96.0/20 -89.32.196.0/23 -89.33.18.0/23 -89.33.56.0/21 -89.33.100.0/22 -89.33.128.0/23 -89.33.204.0/23 -89.33.224.0/21 -89.33.234.0/23 -89.33.240.0/23 -89.34.20.0/23 -89.34.32.0/19 -89.34.88.0/23 -89.34.94.0/23 -89.34.128.0/19 -89.34.162.0/23 -89.34.168.0/23 -89.34.176.0/23 -89.34.200.0/23 -89.34.248.0/21 -89.35.58.0/23 -89.35.64.0/21 -89.35.120.0/22 -89.35.132.0/23 -89.35.156.0/23 -89.35.176.0/23 -89.35.180.0/22 -89.35.194.0/23 -89.36.16.0/23 -89.36.48.0/20 -89.36.96.0/20 -89.36.176.0/20 -89.36.194.0/23 -89.36.226.0/23 -89.36.252.0/23 -89.37.0.0/20 -89.37.30.0/23 -89.37.42.0/23 -89.37.102.0/23 -89.37.144.0/21 -89.37.152.0/22 -89.37.168.0/22 -89.37.198.0/23 -89.37.208.0/22 -89.37.218.0/23 -89.37.240.0/20 -89.38.24.0/23 -89.38.80.0/20 -89.38.102.0/23 -89.38.184.0/21 -89.38.192.0/21 -89.38.212.0/22 -89.38.242.0/23 -89.38.244.0/22 -89.39.8.0/22 -89.39.186.0/23 -89.40.38.0/23 -89.40.78.0/23 -89.40.90.0/23 -89.40.106.0/23 -89.40.110.0/23 -89.40.128.0/23 -89.40.152.0/21 -89.40.240.0/20 -89.41.8.0/21 -89.41.16.0/21 -89.41.32.0/23 -89.41.40.0/22 -89.41.58.0/23 -89.41.138.0/23 -89.41.140.0/22 -89.41.184.0/22 -89.41.224.0/20 -89.41.240.0/21 -89.42.32.0/23 -89.42.44.0/22 -89.42.56.0/23 -89.42.68.0/23 -89.42.96.0/21 -89.42.136.0/22 -89.42.150.0/23 -89.42.184.0/21 -89.42.196.0/22 -89.42.228.0/23 -89.43.0.0/21 -89.43.8.0/22 -89.43.12.0/23 -89.43.14.0/23 -89.43.36.0/23 -89.43.70.0/23 -89.43.88.0/21 -89.43.96.0/21 -89.43.144.0/21 -89.43.182.0/23 -89.43.188.0/23 -89.43.204.0/23 -89.43.216.0/21 -89.43.224.0/21 -89.44.112.0/23 -89.44.118.0/23 -89.44.128.0/21 -89.44.146.0/23 -89.44.176.0/21 -89.44.190.0/23 -89.44.202.0/23 -89.44.240.0/22 -89.45.48.0/20 -89.45.68.0/23 -89.45.80.0/23 -89.45.112.0/21 -89.45.126.0/23 -89.45.128.0/20 -89.45.152.0/21 -89.45.230.0/23 -89.46.44.0/23 -89.46.60.0/23 -89.46.94.0/23 -89.46.184.0/21 -89.46.216.0/22 -89.47.64.0/20 -89.47.80.0/21 -89.47.128.0/19 -89.47.196.0/22 -89.47.200.0/22 -89.144.128.0/18 -89.165.0.0/17 -89.184.192.0/19 -89.196.0.0/16 -89.198.0.0/17 -89.198.128.0/17 -89.199.0.0/16 -89.219.64.0/18 -89.219.192.0/18 -89.221.80.0/20 -89.235.64.0/22 -89.235.68.0/22 -89.235.72.0/21 -89.235.80.0/20 -89.235.96.0/19 -90.153.128.0/17 -91.92.104.0/24 -91.92.114.0/24 -91.92.121.0/24 -91.92.122.0/23 -91.92.124.0/22 -91.92.129.0/24 -91.92.130.0/23 -91.92.132.0/22 -91.92.145.0/24 -91.92.146.0/23 -91.92.148.0/22 -91.92.156.0/22 -91.92.164.0/22 -91.92.172.0/22 -91.92.180.0/22 -91.92.184.0/21 -91.92.192.0/23 -91.92.204.0/22 -91.92.208.0/21 -91.92.220.0/22 -91.92.228.0/23 -91.92.231.0/24 -91.92.236.0/22 -91.98.0.0/15 -91.106.64.0/19 -91.107.128.0/17 -91.108.128.0/19 -91.109.104.0/21 -91.133.128.0/17 -91.144.0.0/24 -91.144.1.0/24 -91.144.2.0/23 -91.144.4.0/22 -91.144.8.0/24 -91.144.9.0/24 -91.144.10.0/23 -91.144.12.0/22 -91.144.16.0/20 -91.144.32.0/22 -91.144.36.0/24 -91.144.37.0/24 -91.144.38.0/23 -91.144.40.0/22 -91.144.44.0/24 -91.144.45.0/24 -91.144.46.0/23 -91.144.48.0/20 -91.147.64.0/20 -91.184.64.0/20 -91.184.80.0/20 -91.186.192.0/19 -91.206.122.0/23 -91.207.138.0/23 -91.208.165.0/24 -91.209.242.0/24 -91.212.16.0/24 -91.212.252.0/24 -91.216.4.0/24 -91.217.64.0/23 -91.220.79.0/24 -91.222.196.0/22 -91.222.204.0/22 -91.224.110.0/23 -91.224.176.0/23 -91.225.52.0/22 -91.226.224.0/23 -91.227.84.0/22 -91.228.189.0/24 -91.229.214.0/23 -91.230.32.0/24 -91.232.64.0/22 -91.232.68.0/23 -91.232.72.0/22 -91.233.56.0/22 -91.236.168.0/23 -91.237.254.0/23 -91.238.0.0/24 -91.239.14.0/24 -91.239.54.0/23 -91.239.108.0/22 -91.239.214.0/24 -91.240.60.0/22 -91.240.180.0/22 -91.241.20.0/23 -91.241.92.0/24 -91.242.44.0/23 -91.243.126.0/23 -91.243.160.0/20 -91.244.120.0/22 -91.247.66.0/23 -91.250.224.0/20 -91.251.0.0/16 -92.42.48.0/21 -92.43.160.0/22 -92.50.0.0/18 -92.61.176.0/20 -92.62.176.0/20 -92.114.16.0/21 -92.114.24.0/21 -92.114.48.0/23 -92.114.50.0/23 -92.114.64.0/20 -92.242.192.0/19 -92.246.144.0/22 -92.246.156.0/22 -93.88.64.0/21 -93.110.0.0/16 -93.113.164.0/22 -93.113.224.0/20 -93.114.16.0/20 -93.114.104.0/21 -93.114.208.0/21 -93.115.120.0/21 -93.115.144.0/21 -93.115.216.0/21 -93.115.224.0/20 -93.117.0.0/19 -93.117.32.0/20 -93.117.96.0/19 -93.117.176.0/20 -93.118.48.0/20 -93.118.96.0/19 -93.118.128.0/19 -93.118.160.0/20 -93.118.180.0/22 -93.118.184.0/22 -93.119.32.0/19 -93.119.64.0/19 -93.119.208.0/20 -93.126.0.0/18 -93.170.24.0/24 -93.190.24.0/21 -94.24.0.0/20 -94.24.16.0/21 -94.24.80.0/20 -94.24.96.0/21 -94.47.0.0/17 -94.47.128.0/18 -94.47.192.0/18 -94.74.128.0/18 -94.101.128.0/20 -94.101.176.0/20 -94.101.240.0/20 -94.102.80.0/21 -94.102.92.0/22 -94.139.160.0/20 -94.139.176.0/20 -94.141.192.0/19 -94.143.120.0/22 -94.176.8.0/21 -94.176.16.0/20 -94.176.32.0/21 -94.176.48.0/20 -94.176.80.0/20 -94.177.72.0/21 -94.182.0.0/15 -94.184.0.0/17 -94.184.128.0/17 -94.199.136.0/22 -94.232.168.0/21 -94.241.128.0/18 -94.252.128.0/17 -95.38.0.0/16 -95.64.0.0/17 -95.80.128.0/18 -95.81.64.0/18 -95.82.0.0/18 -95.82.64.0/18 -95.87.112.0/21 -95.130.56.0/21 -95.130.240.0/21 -95.140.96.0/20 -95.142.224.0/20 -95.156.216.0/22 -95.156.222.0/23 -95.156.233.0/24 -95.156.234.0/23 -95.156.236.0/23 -95.156.248.0/23 -95.156.252.0/22 -95.159.0.0/20 -95.159.16.0/21 -95.159.24.0/22 -95.159.28.0/23 -95.159.30.0/23 -95.159.32.0/23 -95.159.34.0/23 -95.159.36.0/23 -95.159.38.0/23 -95.159.40.0/22 -95.159.44.0/22 -95.159.48.0/23 -95.159.50.0/23 -95.159.52.0/23 -95.159.54.0/23 -95.159.56.0/23 -95.159.58.0/24 -95.159.59.0/24 -95.159.60.0/22 -95.212.128.0/20 -95.212.176.0/20 -95.215.160.0/22 -95.215.173.0/24 -102.120.0.0/13 -102.143.128.0/17 -102.181.0.0/17 -102.181.128.0/18 -102.181.192.0/19 -103.215.220.0/22 -103.216.60.0/22 -103.231.136.0/22 -104.128.129.0/24 -104.128.132.0/24 -104.166.121.0/24 -104.167.193.0/24 -104.167.218.0/24 -104.222.216.0/24 -104.224.20.0/24 -105.238.0.0/15 -109.72.192.0/20 -109.74.224.0/20 -109.95.56.0/21 -109.95.64.0/21 -109.108.160.0/19 -109.109.32.0/19 -109.110.160.0/19 -109.111.32.0/19 -109.122.192.0/19 -109.122.224.0/19 -109.125.128.0/19 -109.125.160.0/19 -109.162.128.0/17 -109.163.229.160/28 -109.201.0.0/19 -109.203.128.0/19 -109.203.160.0/19 -109.225.128.0/22 -109.225.132.0/22 -109.225.136.0/22 -109.225.140.0/22 -109.225.144.0/22 -109.225.148.0/22 -109.225.152.0/26 -109.225.152.64/26 -109.225.152.128/25 -109.225.153.0/24 -109.225.154.0/23 -109.225.156.0/22 -109.225.160.0/21 -109.225.168.0/22 -109.225.172.0/22 -109.225.176.0/21 -109.225.184.0/21 -109.230.64.0/24 -109.230.65.0/24 -109.230.66.0/23 -109.230.68.0/22 -109.230.72.0/24 -109.230.73.0/24 -109.230.74.0/23 -109.230.76.0/22 -109.230.80.0/24 -109.230.81.0/24 -109.230.82.0/24 -109.230.83.0/24 -109.230.84.0/23 -109.230.86.0/23 -109.230.88.0/22 -109.230.92.0/24 -109.230.93.0/24 -109.230.94.0/24 -109.230.95.0/24 -109.230.96.0/24 -109.230.97.0/24 -109.230.98.0/23 -109.230.100.0/23 -109.230.102.0/23 -109.230.104.0/22 -109.230.108.0/23 -109.230.110.0/24 -109.230.111.0/24 -109.230.112.0/20 -109.230.192.0/23 -109.230.200.0/24 -109.230.204.0/22 -109.230.221.0/24 -109.230.223.0/24 -109.230.242.0/24 -109.230.246.0/24 -109.230.247.0/24 -109.230.251.0/24 -109.232.0.0/21 -109.238.144.0/20 -109.238.176.0/20 -109.239.0.0/20 -128.65.160.0/20 -128.65.176.0/20 -128.140.0.0/20 -128.140.16.0/23 -128.140.18.0/24 -128.140.19.0/25 -128.140.19.128/25 -128.140.20.0/22 -128.140.24.0/24 -128.140.25.0/24 -128.140.26.0/23 -128.140.28.0/22 -128.140.32.0/19 -128.140.64.0/21 -128.140.72.0/21 -128.140.80.0/21 -128.140.88.0/21 -128.140.96.0/20 -128.140.112.0/20 -130.0.240.0/20 -130.180.128.0/18 -130.185.72.0/21 -130.255.192.0/18 -134.255.196.0/23 -134.255.200.0/21 -134.255.245.0/24 -134.255.246.0/24 -134.255.248.0/23 -146.66.128.0/21 -151.232.0.0/24 -151.232.1.0/24 -151.232.2.0/23 -151.232.4.0/24 -151.232.5.0/24 -151.232.6.0/25 -151.232.6.128/25 -151.232.7.0/24 -151.232.8.0/21 -151.232.16.0/24 -151.232.17.0/24 -151.232.18.0/23 -151.232.20.0/24 -151.232.21.0/24 -151.232.22.0/24 -151.232.23.0/24 -151.232.24.0/25 -151.232.24.128/25 -151.232.25.0/24 -151.232.26.0/24 -151.232.27.0/24 -151.232.28.0/24 -151.232.29.0/24 -151.232.30.0/24 -151.232.31.0/24 -151.232.32.0/24 -151.232.33.0/24 -151.232.34.0/24 -151.232.35.0/24 -151.232.36.0/24 -151.232.37.0/24 -151.232.38.0/24 -151.232.39.0/24 -151.232.40.0/24 -151.232.41.0/24 -151.232.42.0/24 -151.232.43.0/24 -151.232.44.0/24 -151.232.45.0/24 -151.232.46.0/24 -151.232.47.0/24 -151.232.48.0/24 -151.232.49.0/24 -151.232.50.0/24 -151.232.51.0/28 -151.232.51.16/28 -151.232.51.32/27 -151.232.51.64/26 -151.232.51.128/25 -151.232.52.0/22 -151.232.56.0/23 -151.232.58.0/24 -151.232.59.0/24 -151.232.60.0/22 -151.232.64.0/24 -151.232.65.0/25 -151.232.65.128/25 -151.232.66.0/27 -151.232.66.32/27 -151.232.66.64/26 -151.232.66.128/25 -151.232.67.0/25 -151.232.67.128/25 -151.232.68.0/22 -151.232.72.0/24 -151.232.73.0/24 -151.232.74.0/23 -151.232.76.0/22 -151.232.80.0/26 -151.232.80.64/26 -151.232.80.128/25 -151.232.81.0/24 -151.232.82.0/23 -151.232.84.0/24 -151.232.85.0/24 -151.232.86.0/23 -151.232.88.0/28 -151.232.88.16/28 -151.232.88.32/27 -151.232.88.64/26 -151.232.88.128/25 -151.232.89.0/24 -151.232.90.0/24 -151.232.91.0/25 -151.232.91.128/25 -151.232.92.0/22 -151.232.96.0/21 -151.232.104.0/27 -151.232.104.32/27 -151.232.104.64/26 -151.232.104.128/25 -151.232.105.0/24 -151.232.106.0/23 -151.232.108.0/22 -151.232.112.0/21 -151.232.120.0/21 -151.232.128.0/28 -151.232.128.16/28 -151.232.128.32/27 -151.232.128.64/26 -151.232.128.128/25 -151.232.129.0/24 -151.232.130.0/23 -151.232.132.0/22 -151.232.136.0/21 -151.232.144.0/20 -151.232.160.0/28 -151.232.160.16/28 -151.232.160.32/27 -151.232.160.64/26 -151.232.160.128/25 -151.232.161.0/24 -151.232.162.0/23 -151.232.164.0/22 -151.232.168.0/21 -151.232.176.0/24 -151.232.177.0/24 -151.232.178.0/23 -151.232.180.0/22 -151.232.184.0/21 -151.232.192.0/21 -151.232.200.0/28 -151.232.200.16/28 -151.232.200.32/27 -151.232.200.64/26 -151.232.200.128/25 -151.232.201.0/24 -151.232.202.0/23 -151.232.204.0/22 -151.232.208.0/22 -151.232.212.0/22 -151.232.216.0/22 -151.232.220.0/26 -151.232.220.64/26 -151.232.220.128/25 -151.232.221.0/24 -151.232.222.0/23 -151.232.224.0/28 -151.232.224.16/28 -151.232.224.32/27 -151.232.224.64/26 -151.232.224.128/25 -151.232.225.0/24 -151.232.226.0/23 -151.232.228.0/22 -151.232.232.0/21 -151.232.240.0/29 -151.232.240.8/29 -151.232.240.16/28 -151.232.240.32/27 -151.232.240.64/26 -151.232.240.128/25 -151.232.241.0/24 -151.232.242.0/23 -151.232.244.0/22 -151.232.248.0/21 -151.233.0.0/24 -151.233.1.0/25 -151.233.1.128/25 -151.233.2.0/23 -151.233.4.0/22 -151.233.8.0/24 -151.233.9.0/26 -151.233.9.64/26 -151.233.9.128/25 -151.233.10.0/28 -151.233.10.16/28 -151.233.10.32/27 -151.233.10.64/26 -151.233.10.128/25 -151.233.11.0/24 -151.233.12.0/22 -151.233.16.0/22 -151.233.20.0/23 -151.233.22.0/24 -151.233.23.0/24 -151.233.24.0/24 -151.233.25.0/24 -151.233.26.0/23 -151.233.28.0/22 -151.233.32.0/20 -151.233.48.0/28 -151.233.48.16/28 -151.233.48.32/27 -151.233.48.64/26 -151.233.48.128/25 -151.233.49.0/24 -151.233.50.0/23 -151.233.52.0/22 -151.233.56.0/21 -151.233.64.0/24 -151.233.65.0/27 -151.233.65.32/27 -151.233.65.64/26 -151.233.65.128/25 -151.233.66.0/23 -151.233.68.0/22 -151.233.72.0/21 -151.233.80.0/28 -151.233.80.16/28 -151.233.80.32/27 -151.233.80.64/26 -151.233.80.128/25 -151.233.81.0/24 -151.233.82.0/23 -151.233.84.0/22 -151.233.88.0/26 -151.233.88.64/26 -151.233.88.128/25 -151.233.89.0/24 -151.233.90.0/23 -151.233.92.0/22 -151.233.96.0/20 -151.233.112.0/24 -151.233.113.0/24 -151.233.114.0/23 -151.233.116.0/22 -151.233.120.0/28 -151.233.120.16/28 -151.233.120.32/27 -151.233.120.64/26 -151.233.120.128/25 -151.233.121.0/24 -151.233.122.0/23 -151.233.124.0/22 -151.233.128.0/21 -151.233.136.0/21 -151.233.144.0/20 -151.233.160.0/20 -151.233.176.0/24 -151.233.177.0/24 -151.233.178.0/23 -151.233.180.0/22 -151.233.184.0/26 -151.233.184.64/26 -151.233.184.128/25 -151.233.185.0/24 -151.233.186.0/23 -151.233.188.0/22 -151.233.192.0/23 -151.233.194.0/23 -151.233.196.0/22 -151.233.200.0/21 -151.233.208.0/28 -151.233.208.16/28 -151.233.208.32/27 -151.233.208.64/26 -151.233.208.128/25 -151.233.209.0/24 -151.233.210.0/23 -151.233.212.0/22 -151.233.216.0/21 -151.233.224.0/28 -151.233.224.16/28 -151.233.224.32/27 -151.233.224.64/26 -151.233.224.128/25 -151.233.225.0/24 -151.233.226.0/23 -151.233.228.0/22 -151.233.232.0/21 -151.233.240.0/20 -151.234.0.0/20 -151.234.16.0/21 -151.234.24.0/21 -151.234.32.0/19 -151.234.64.0/19 -151.234.96.0/21 -151.234.104.0/21 -151.234.112.0/20 -151.234.128.0/17 -151.235.0.0/16 -151.238.0.0/15 -151.240.0.0/14 -151.244.0.0/15 -151.246.0.0/15 -152.206.0.0/15 -154.96.0.0/13 -155.196.0.0/16 -157.119.100.0/22 -157.119.188.0/22 -158.58.0.0/17 -158.58.184.0/21 -159.20.96.0/20 -164.138.16.0/21 -164.138.128.0/18 -164.215.40.0/21 -164.215.56.0/21 -164.215.128.0/17 -169.158.0.0/16 -175.45.176.0/22 -176.12.64.0/20 -176.46.128.0/19 -176.56.144.0/20 -176.62.144.0/21 -176.65.160.0/19 -176.65.192.0/18 -176.67.64.0/20 -176.101.32.0/20 -176.101.48.0/21 -176.102.224.0/19 -176.110.108.0/22 -176.112.192.0/19 -176.122.210.0/23 -176.123.64.0/18 -176.124.64.0/22 -176.221.16.0/20 -176.221.64.0/21 -176.223.80.0/21 -178.21.40.0/21 -178.21.160.0/21 -178.22.72.0/21 -178.22.120.0/21 -178.52.0.0/16 -178.131.0.0/16 -178.157.0.0/23 -178.157.4.0/22 -178.169.0.0/19 -178.171.128.0/17 -178.173.128.0/18 -178.173.192.0/19 -178.173.224.0/19 -178.215.0.0/18 -178.216.248.0/21 -178.219.224.0/20 -178.236.32.0/20 -178.236.96.0/20 -178.238.192.0/20 -178.239.144.0/20 -178.248.40.0/21 -178.251.208.0/21 -178.252.128.0/18 -178.253.0.0/18 -178.253.64.0/18 -181.225.224.0/19 -185.1.77.0/24 -185.2.12.0/22 -185.3.124.0/22 -185.3.200.0/22 -185.3.212.0/22 -185.4.0.0/22 -185.4.16.0/22 -185.4.28.0/22 -185.4.84.0/22 -185.4.104.0/22 -185.4.220.0/22 -185.5.156.0/22 -185.8.172.0/22 -185.10.71.0/24 -185.10.72.0/22 -185.11.68.0/22 -185.11.88.0/22 -185.11.176.0/22 -185.12.60.0/22 -185.12.100.0/22 -185.13.228.0/22 -185.14.80.0/22 -185.14.160.0/22 -185.16.232.0/22 -185.18.156.0/22 -185.18.212.0/22 -185.19.124.0/22 -185.20.160.0/22 -185.21.68.0/22 -185.21.76.0/22 -185.22.28.0/22 -185.23.128.0/22 -185.23.184.0/22 -185.24.60.0/22 -185.24.136.0/22 -185.24.148.0/22 -185.24.228.0/22 -185.24.252.0/22 -185.26.32.0/22 -185.26.208.0/22 -185.26.232.0/22 -185.29.220.0/22 -185.30.4.0/22 -185.30.76.0/22 -185.31.124.0/22 -185.32.128.0/22 -185.34.160.0/22 -185.37.52.0/22 -185.39.180.0/22 -185.40.224.0/22 -185.40.240.0/22 -185.41.0.0/22 -185.41.84.0/22 -185.42.24.0/22 -185.42.212.0/22 -185.42.224.0/22 -185.44.36.0/22 -185.44.100.0/22 -185.44.112.0/22 -185.45.188.0/22 -185.46.0.0/22 -185.46.108.0/22 -185.46.216.0/22 -185.47.48.0/22 -185.49.84.0/22 -185.49.96.0/22 -185.49.104.0/22 -185.50.38.0/23 -185.51.40.0/22 -185.51.200.0/22 -185.52.232.0/22 -185.53.140.0/22 -185.54.132.0/22 -185.55.224.0/22 -185.56.92.0/22 -185.56.96.0/22 -185.57.132.0/22 -185.57.164.0/22 -185.57.200.0/22 -185.58.240.0/22 -185.59.112.0/23 -185.60.32.0/22 -185.60.136.0/22 -185.62.232.0/22 -185.63.236.0/22 -185.64.176.0/22 -185.66.224.0/22 -185.66.228.0/22 -185.67.12.0/22 -185.67.100.0/22 -185.67.156.0/22 -185.67.212.0/22 -185.69.108.0/22 -185.69.120.0/22 -185.70.60.0/22 -185.70.196.0/22 -185.71.152.0/22 -185.71.192.0/22 -185.72.24.0/22 -185.72.80.0/22 -185.73.0.0/22 -185.73.76.0/22 -185.73.112.0/22 -185.74.164.0/22 -185.75.196.0/22 -185.75.204.0/22 -185.75.224.0/22 -185.76.248.0/22 -185.78.20.0/22 -185.78.104.0/22 -185.79.60.0/22 -185.79.96.0/22 -185.79.156.0/22 -185.80.100.0/22 -185.80.196.0/22 -185.81.40.0/22 -185.81.96.0/22 -185.82.28.0/22 -185.82.64.0/22 -185.82.136.0/22 -185.82.164.0/22 -185.82.180.0/22 -185.83.28.0/22 -185.83.72.0/22 -185.83.76.0/22 -185.83.80.0/22 -185.83.88.0/24 -185.83.89.0/24 -185.83.90.0/23 -185.83.112.0/22 -185.83.180.0/22 -185.83.184.0/22 -185.83.196.0/22 -185.83.200.0/22 -185.83.208.0/22 -185.84.48.0/22 -185.84.160.0/22 -185.84.220.0/22 -185.84.236.0/22 -185.85.68.0/22 -185.85.136.0/22 -185.86.36.0/22 -185.86.180.0/22 -185.88.48.0/22 -185.88.152.0/22 -185.88.176.0/22 -185.88.252.0/22 -185.89.112.0/22 -185.90.248.0/22 -185.92.4.0/22 -185.92.8.0/22 -185.92.28.0/22 -185.92.40.0/22 -185.92.88.0/22 -185.93.164.0/22 -185.94.96.0/22 -185.95.60.0/22 -185.95.152.0/22 -185.95.180.0/22 -185.96.108.0/22 -185.96.240.0/22 -185.97.116.0/22 -185.98.112.0/22 -185.99.100.0/22 -185.99.212.0/22 -185.100.44.0/22 -185.101.228.0/22 -185.103.84.0/22 -185.103.128.0/22 -185.103.244.0/22 -185.103.248.0/22 -185.104.192.0/22 -185.104.228.0/22 -185.104.232.0/22 -185.104.240.0/22 -185.105.100.0/22 -185.105.120.0/22 -185.105.184.0/22 -185.105.236.0/22 -185.106.136.0/22 -185.106.144.0/22 -185.106.200.0/22 -185.106.228.0/22 -185.107.28.0/22 -185.107.32.0/22 -185.107.244.0/22 -185.107.248.0/22 -185.108.96.0/22 -185.108.164.0/22 -185.109.60.0/22 -185.109.72.0/22 -185.109.80.0/22 -185.109.128.0/22 -185.109.212.0/22 -185.109.244.0/22 -185.109.248.0/22 -185.110.28.0/22 -185.110.104.0/22 -185.110.216.0/22 -185.110.228.0/22 -185.110.236.0/22 -185.110.244.0/22 -185.110.252.0/22 -185.111.8.0/22 -185.111.12.0/22 -185.111.64.0/22 -185.111.80.0/22 -185.111.128.0/22 -185.111.136.0/22 -185.112.32.0/22 -185.112.36.0/22 -185.112.128.0/22 -185.112.148.0/22 -185.112.168.0/22 -185.113.56.0/22 -185.113.104.0/22 -185.113.112.0/22 -185.113.148.0/22 -185.113.152.0/22 -185.114.72.0/22 -185.114.188.0/22 -185.114.240.0/22 -185.115.76.0/22 -185.115.148.0/22 -185.115.164.0/22 -185.115.168.0/22 -185.116.20.0/22 -185.116.24.0/22 -185.116.44.0/22 -185.116.160.0/22 -185.117.96.0/22 -185.117.136.0/22 -185.117.204.0/22 -185.118.12.0/22 -185.118.136.0/22 -185.118.152.0/22 -185.119.4.0/22 -185.119.164.0/22 -185.119.240.0/22 -185.120.120.0/22 -185.120.136.0/22 -185.120.160.0/22 -185.120.168.0/22 -185.120.192.0/22 -185.120.196.0/22 -185.120.200.0/22 -185.120.208.0/22 -185.120.212.0/22 -185.120.216.0/22 -185.120.220.0/22 -185.120.224.0/22 -185.120.228.0/22 -185.120.232.0/22 -185.120.236.0/22 -185.120.240.0/22 -185.120.244.0/22 -185.120.248.0/22 -185.121.56.0/22 -185.121.128.0/22 -185.121.184.0/22 -185.122.80.0/22 -185.123.68.0/22 -185.123.208.0/22 -185.124.112.0/22 -185.124.156.0/22 -185.124.172.0/22 -185.125.20.0/22 -185.125.244.0/22 -185.125.248.0/22 -185.125.252.0/22 -185.126.0.0/22 -185.126.4.0/22 -185.126.8.0/22 -185.126.12.0/22 -185.126.16.0/22 -185.126.40.0/22 -185.126.124.0/22 -185.126.132.0/22 -185.126.144.0/22 -185.126.156.0/22 -185.126.200.0/22 -185.127.176.0/22 -185.127.232.0/22 -185.128.48.0/22 -185.128.80.0/22 -185.128.136.0/22 -185.128.152.0/22 -185.128.164.0/22 -185.128.180.0/22 -185.129.80.0/22 -185.129.108.0/22 -185.129.116.0/22 -185.129.124.0/22 -185.129.140.0/22 -185.129.168.0/22 -185.129.184.0/22 -185.129.188.0/22 -185.129.196.0/22 -185.129.200.0/22 -185.129.212.0/22 -185.129.216.0/22 -185.129.228.0/22 -185.129.232.0/22 -185.129.236.0/22 -185.129.240.0/22 -185.130.76.0/22 -185.131.28.0/22 -185.131.84.0/22 -185.131.88.0/22 -185.131.92.0/22 -185.131.100.0/22 -185.131.108.0/22 -185.131.112.0/22 -185.131.116.0/22 -185.131.124.0/22 -185.131.128.0/22 -185.131.136.0/22 -185.131.140.0/22 -185.131.148.0/22 -185.131.152.0/22 -185.131.156.0/22 -185.131.164.0/22 -185.131.168.0/22 -185.132.80.0/22 -185.132.212.0/22 -185.133.152.0/22 -185.133.164.0/22 -185.133.212.0/22 -185.134.96.0/22 -185.134.132.0/22 -185.135.28.0/22 -185.135.48.0/22 -185.135.72.0/22 -185.135.76.0/22 -185.135.84.0/22 -185.135.228.0/22 -185.136.100.0/22 -185.136.144.0/22 -185.136.172.0/22 -185.136.180.0/22 -185.136.192.0/22 -185.136.220.0/22 -185.137.24.0/22 -185.137.60.0/22 -185.137.108.0/22 -185.139.64.0/22 -185.140.4.0/22 -185.140.12.0/22 -185.140.56.0/22 -185.140.232.0/22 -185.140.240.0/22 -185.141.36.0/22 -185.141.48.0/22 -185.141.104.0/22 -185.141.132.0/22 -185.141.168.0/22 -185.141.212.0/22 -185.141.244.0/22 -185.142.92.0/22 -185.142.124.0/22 -185.142.156.0/22 -185.142.232.0/22 -185.143.72.0/22 -185.143.204.0/22 -185.144.64.0/22 -185.145.8.0/22 -185.145.184.0/22 -185.145.236.0/22 -185.146.136.0/22 -185.147.40.0/22 -185.147.84.0/22 -185.147.160.0/22 -185.147.176.0/22 -185.148.12.0/22 -185.148.192.0/22 -185.150.108.0/22 -185.150.140.0/22 -185.151.80.0/22 -185.151.96.0/22 -185.151.148.0/22 -185.151.236.0/22 -185.153.184.0/22 -185.153.208.0/22 -185.154.184.0/22 -185.154.248.0/22 -185.155.8.0/22 -185.155.12.0/22 -185.155.72.0/22 -185.155.160.0/22 -185.155.236.0/22 -185.156.44.0/22 -185.157.8.0/22 -185.158.32.0/22 -185.158.92.0/22 -185.158.172.0/22 -185.159.84.0/22 -185.159.88.0/22 -185.159.152.0/22 -185.159.176.0/22 -185.160.104.0/22 -185.160.176.0/22 -185.161.36.0/22 -185.161.68.0/24 -185.161.112.0/22 -185.162.40.0/23 -185.162.42.0/24 -185.162.43.0/24 -185.162.164.0/22 -185.162.216.0/22 -185.163.88.0/22 -185.163.216.0/22 -185.164.72.0/22 -185.164.132.0/22 -185.164.200.0/22 -185.164.248.0/22 -185.164.252.0/22 -185.165.28.0/22 -185.165.40.0/22 -185.165.100.0/22 -185.165.116.0/22 -185.165.204.0/22 -185.166.60.0/22 -185.166.104.0/22 -185.166.112.0/22 -185.167.12.0/22 -185.167.52.0/22 -185.167.72.0/22 -185.167.100.0/22 -185.167.124.0/22 -185.168.28.0/22 -185.169.20.0/23 -185.169.22.0/23 -185.169.36.0/23 -185.169.38.0/23 -185.169.160.0/22 -185.170.236.0/22 -185.171.52.0/22 -185.171.72.0/22 -185.171.132.0/22 -185.172.0.0/22 -185.172.68.0/22 -185.172.72.0/22 -185.172.212.0/22 -185.172.236.0/22 -185.173.104.0/22 -185.173.168.0/22 -185.173.172.0/22 -185.174.132.0/22 -185.174.200.0/22 -185.174.228.0/22 -185.174.236.0/22 -185.174.248.0/22 -185.175.52.0/22 -185.175.228.0/22 -185.175.240.0/22 -185.176.32.0/22 -185.176.56.0/22 -185.177.156.0/22 -185.177.232.0/23 -185.177.234.0/23 -185.178.104.0/22 -185.178.148.0/22 -185.178.220.0/22 -185.179.168.0/22 -185.179.220.0/22 -185.180.52.0/22 -185.180.128.0/22 -185.181.108.0/22 -185.181.180.0/22 -185.182.220.0/22 -185.182.248.0/22 -185.183.128.0/22 -185.184.32.0/22 -185.184.48.0/22 -185.184.104.0/22 -185.185.16.0/22 -185.185.72.0/22 -185.185.220.0/22 -185.185.240.0/22 -185.186.48.0/22 -185.186.240.0/22 -185.187.48.0/22 -185.187.84.0/22 -185.187.192.0/22 -185.187.220.0/22 -185.188.104.0/22 -185.188.112.0/22 -185.189.120.0/22 -185.190.20.0/22 -185.191.76.0/22 -185.192.8.0/22 -185.192.112.0/22 -185.193.208.0/22 -185.193.212.0/22 -185.193.232.0/22 -185.194.72.0/22 -185.194.76.0/22 -185.194.124.0/22 -185.194.244.0/22 -185.195.72.0/22 -185.196.140.0/22 -185.196.144.0/22 -185.196.148.0/22 -185.197.20.0/22 -185.197.68.0/22 -185.197.112.0/22 -185.198.160.0/22 -185.198.172.0/22 -185.198.252.0/22 -185.199.64.0/22 -185.199.196.0/22 -185.199.208.0/22 -185.199.244.0/22 -185.201.48.0/22 -185.202.56.0/22 -185.202.92.0/22 -185.203.68.0/22 -185.203.160.0/22 -185.203.196.0/22 -185.204.80.0/22 -185.204.88.0/22 -185.204.168.0/22 -185.204.180.0/22 -185.205.140.0/22 -185.205.220.0/22 -185.206.68.0/22 -185.206.92.0/22 -185.206.236.0/22 -185.207.4.0/22 -185.207.52.0/22 -185.207.72.0/22 -185.207.196.0/22 -185.208.76.0/22 -185.208.148.0/22 -185.208.172.0/22 -185.208.180.0/22 -185.209.32.0/22 -185.209.188.0/22 -185.209.200.0/22 -185.210.200.0/22 -185.211.56.0/22 -185.211.84.0/22 -185.211.88.0/22 -185.212.48.0/22 -185.212.120.0/22 -185.212.192.0/22 -185.213.8.0/22 -185.213.164.0/22 -185.214.36.0/22 -185.215.124.0/22 -185.215.152.0/22 -185.215.228.0/22 -185.215.232.0/22 -185.215.236.0/22 -185.215.244.0/22 -185.216.124.0/22 -185.216.132.0/22 -185.216.196.0/22 -185.217.160.0/22 -185.217.172.0/22 -185.219.112.0/22 -185.220.168.0/22 -185.220.216.0/22 -185.220.224.0/22 -185.220.236.0/22 -185.221.76.0/22 -185.221.112.0/22 -185.221.192.0/22 -185.222.120.0/22 -185.222.180.0/22 -185.222.184.0/22 -185.224.124.0/22 -185.224.176.0/22 -185.224.204.0/22 -185.225.40.0/22 -185.225.80.0/22 -185.225.180.0/22 -185.225.240.0/22 -185.226.116.0/22 -185.226.132.0/22 -185.226.140.0/22 -185.227.64.0/22 -185.227.116.0/22 -185.227.136.0/22 -185.227.140.0/22 -185.228.12.0/22 -185.228.236.0/22 -185.228.244.0/22 -185.229.0.0/22 -185.229.28.0/22 -185.231.44.0/22 -185.231.180.0/22 -185.231.184.0/22 -185.232.32.0/22 -185.232.152.0/22 -185.232.176.0/22 -185.233.12.0/22 -185.233.220.0/22 -185.234.192.0/22 -185.235.16.0/22 -185.235.24.0/22 -185.235.40.0/22 -185.235.136.0/22 -185.235.164.0/22 -185.236.36.0/22 -185.236.88.0/22 -185.236.100.0/22 -185.237.8.0/22 -185.237.84.0/22 -185.238.20.0/22 -185.238.44.0/22 -185.238.92.0/22 -185.239.0.0/22 -185.240.56.0/22 -185.240.148.0/22 -185.242.60.0/22 -185.243.48.0/22 -185.244.52.0/22 -185.244.204.0/22 -185.246.4.0/22 -185.246.76.0/22 -185.249.52.0/22 -185.251.76.0/22 -185.252.28.0/22 -185.254.108.0/22 -185.254.180.0/22 -185.255.68.0/22 -185.255.88.0/22 -185.255.208.0/22 -188.0.240.0/20 -188.34.0.0/16 -188.75.64.0/18 -188.118.64.0/18 -188.121.96.0/19 -188.121.128.0/19 -188.122.96.0/19 -188.133.0.0/17 -188.136.128.0/17 -188.139.128.0/17 -188.158.0.0/15 -188.160.0.0/16 -188.191.176.0/21 -188.208.56.0/21 -188.208.64.0/19 -188.208.144.0/20 -188.208.160.0/19 -188.208.200.0/22 -188.208.208.0/21 -188.208.224.0/19 -188.209.0.0/21 -188.209.8.0/21 -188.209.16.0/20 -188.209.32.0/20 -188.209.64.0/20 -188.209.116.0/22 -188.209.128.0/20 -188.209.152.0/23 -188.209.154.0/23 -188.209.156.0/22 -188.209.160.0/19 -188.209.192.0/20 -188.209.208.0/22 -188.210.64.0/20 -188.210.80.0/21 -188.210.96.0/19 -188.210.128.0/18 -188.210.192.0/20 -188.210.232.0/22 -188.211.0.0/20 -188.211.32.0/19 -188.211.64.0/18 -188.211.128.0/19 -188.211.176.0/20 -188.211.192.0/19 -188.212.6.0/23 -188.212.22.0/24 -188.212.48.0/20 -188.212.64.0/19 -188.212.96.0/22 -188.212.144.0/21 -188.212.160.0/19 -188.212.200.0/21 -188.212.208.0/20 -188.212.224.0/20 -188.212.240.0/21 -188.213.64.0/20 -188.213.96.0/19 -188.213.144.0/20 -188.213.176.0/20 -188.213.192.0/21 -188.213.208.0/22 -188.214.4.0/22 -188.214.64.0/20 -188.214.84.0/22 -188.214.96.0/22 -188.214.120.0/23 -188.214.160.0/19 -188.214.216.0/21 -188.214.232.0/21 -188.215.24.0/22 -188.215.88.0/22 -188.215.100.0/22 -188.215.128.0/20 -188.215.160.0/19 -188.215.192.0/19 -188.215.240.0/23 -188.215.242.0/23 -188.227.196.0/22 -188.229.0.0/17 -188.229.128.0/17 -188.240.196.0/24 -188.240.212.0/24 -188.240.248.0/21 -188.245.0.0/16 -188.247.0.0/19 -188.253.0.0/19 -188.253.32.0/19 -188.253.64.0/19 -188.253.96.0/19 -190.6.64.0/20 -190.6.80.0/20 -190.15.144.0/20 -190.92.112.0/20 -190.107.0.0/20 -193.0.156.0/24 -193.8.139.0/24 -193.17.188.0/22 -193.19.144.0/23 -193.28.181.0/24 -193.32.80.0/23 -193.34.244.0/22 -193.35.62.0/24 -193.104.22.0/24 -193.104.212.0/24 -193.105.2.0/24 -193.105.6.0/24 -193.124.10.0/23 -193.124.12.0/23 -193.124.26.0/23 -193.124.28.0/23 -193.124.38.0/23 -193.124.52.0/23 -193.124.62.0/23 -193.124.68.0/23 -193.124.72.0/22 -193.124.82.0/23 -193.124.86.0/23 -193.124.96.0/22 -193.124.100.0/22 -193.124.104.0/21 -193.124.122.0/23 -193.124.126.0/23 -193.124.152.0/22 -193.124.156.0/23 -193.124.160.0/21 -193.124.168.0/21 -193.124.192.0/21 -193.124.208.0/20 -193.124.228.0/22 -193.124.232.0/21 -193.124.252.0/23 -193.151.128.0/19 -193.176.240.0/22 -193.178.200.0/22 -193.189.122.0/23 -193.201.192.0/22 -193.219.211.176/29 -193.220.124.192/29 -193.220.126.136/29 -193.220.126.144/29 -193.222.51.0/24 -193.242.194.0/23 -193.242.208.0/23 -194.5.40.0/22 -194.5.160.0/22 -194.5.176.0/22 -194.26.72.0/22 -194.31.72.0/22 -194.33.104.0/22 -194.33.122.0/23 -194.33.124.0/22 -194.34.160.0/22 -194.41.48.0/22 -194.58.0.0/20 -194.58.16.0/21 -194.58.48.0/21 -194.58.128.0/20 -194.58.144.0/21 -194.58.156.0/22 -194.58.208.0/21 -194.58.224.0/20 -194.58.248.0/21 -194.60.208.0/22 -194.60.228.0/22 -194.61.124.0/22 -194.133.20.208/29 -194.133.88.0/28 -194.133.88.16/28 -194.135.106.0/23 -194.135.116.0/23 -194.135.248.0/21 -194.143.140.0/23 -194.146.148.0/22 -194.147.164.0/22 -194.150.68.0/22 -194.156.140.0/22 -194.225.0.0/16 -195.10.15.160/28 -195.20.136.0/24 -195.27.14.0/29 -195.60.236.0/22 -195.88.188.0/23 -195.110.38.0/23 -195.146.32.0/19 -195.170.163.0/24 -195.181.0.0/19 -195.181.32.0/19 -195.181.64.0/18 -195.191.74.0/23 -195.211.44.0/22 -195.213.219.0/28 -195.219.71.0/24 -195.238.124.0/22 -195.245.70.0/23 -196.1.112.0/24 -196.1.135.0/24 -196.1.192.0/18 -196.2.4.0/22 -196.3.91.0/24 -196.3.152.0/24 -196.29.160.0/19 -196.202.128.0/19 -196.223.20.0/24 -196.223.152.0/21 -197.208.0.0/15 -197.251.0.0/17 -197.252.0.0/16 -197.254.192.0/19 -197.254.224.0/19 -198.51.143.0/24 -198.51.144.0/23 -198.51.146.0/24 -200.0.16.0/24 -200.0.24.0/22 -200.5.12.0/22 -200.13.144.0/21 -200.14.48.0/21 -200.55.128.0/19 -200.55.160.0/20 -200.55.176.0/20 -201.220.192.0/20 -201.220.208.0/20 -208.115.112.152/29 -212.0.128.0/19 -212.1.192.0/21 -212.11.192.0/19 -212.16.64.0/19 -212.21.35.128/25 -212.21.37.0/25 -212.21.37.128/25 -212.21.38.0/25 -212.21.38.128/25 -212.21.44.96/27 -212.21.45.32/27 -212.33.192.0/20 -212.33.208.0/20 -212.80.0.0/19 -212.86.64.0/19 -212.95.128.0/20 -212.95.144.0/20 -212.120.192.0/19 -213.108.240.0/22 -213.109.240.0/20 -213.176.0.0/19 -213.176.32.0/19 -213.176.64.0/18 -213.178.224.0/19 -213.195.0.0/19 -213.195.32.0/20 -213.195.48.0/22 -213.195.52.0/22 -213.195.56.0/21 -213.207.192.0/20 -213.207.208.0/20 -213.207.224.0/19 -213.217.32.0/19 -213.233.160.0/19 -217.11.16.0/20 -217.20.208.0/20 -217.24.144.0/20 -217.25.48.0/20 -217.60.0.0/16 -217.66.192.0/20 -217.66.208.0/20 -217.77.112.0/20 -217.146.208.0/20 -217.161.16.0/24 -217.161.17.0/24 -217.170.240.0/20 -217.171.145.0/24 -217.171.148.0/22 -217.172.96.0/22 -217.172.100.0/23 -217.172.102.0/23 -217.172.104.0/21 -217.172.112.0/21 -217.172.120.0/21 -217.174.16.0/20 -217.218.0.0/15 -109.162.104.0/23 -109.235.15.0/24 -109.248.213.0/24 -109.254.0.0/20 -109.254.104.0/23 -109.254.106.0/24 -109.254.107.0/24 -109.254.108.0/24 -109.254.109.0/24 -109.254.110.0/23 -109.254.112.0/20 -109.254.128.0/22 -109.254.132.0/23 -109.254.134.0/24 -109.254.135.0/24 -109.254.136.0/21 -109.254.144.0/22 -109.254.148.0/24 -109.254.150.0/23 -109.254.152.0/21 -109.254.16.0/21 -109.254.160.0/19 -109.254.192.0/20 -109.254.208.0/21 -109.254.24.0/22 -109.254.28.0/24 -109.254.29.0/24 -109.254.30.0/24 -109.254.31.0/24 -109.254.32.0/20 -109.254.48.0/21 -109.254.56.0/23 -109.254.58.0/24 -109.254.59.0/24 -109.254.60.0/23 -109.254.63.0/24 -109.254.64.0/20 -109.254.88.0/23 -109.254.90.0/24 -109.254.91.0/24 -109.254.94.0/23 -109.254.96.0/21 -109.72.112.0/24 -109.72.113.0/24 -109.72.114.0/23 -109.72.116.0/24 -109.72.117.0/24 -109.72.118.0/24 -109.72.119.0/24 -109.72.120.0/24 -109.72.121.0/24 -109.72.122.0/23 -109.72.124.0/22 -109.75.192.0/21 -109.75.200.0/22 -109.75.204.0/23 -109.75.206.0/24 -128.124.100.0/24 -128.124.107.0/24 -128.124.11.0/24 -128.124.129.0/24 -128.124.156.0/24 -128.124.16.0/24 -128.124.161.0/24 -128.124.173.0/24 -128.124.174.0/24 -128.124.184.0/24 -128.124.21.0/24 -128.124.213.0/24 -128.124.219.0/24 -128.124.221.0/24 -128.124.229.0/24 -128.124.230.0/24 -128.124.233.0/24 -128.124.235.0/24 -128.124.248.0/24 -128.124.249.0/24 -128.124.38.0/24 -128.124.44.0/24 -128.124.51.0/24 -128.124.52.0/24 -128.124.56.0/24 -128.124.57.0/24 -128.124.65.0/24 -128.124.8.0/24 -128.124.92.0/24 -130.193.73.0/24 -134.249.169.0/24 -134.249.186.0/24 -134.249.198.0/24 -134.249.199.0/24 -134.249.200.0/24 -134.249.205.0/24 -134.249.207.0/24 -134.249.99.0/24 -141.105.129.0/24 -141.105.131.0/24 -141.105.136.0/23 -141.105.139.0/24 -141.105.140.0/24 -141.105.141.0/24 -141.105.142.0/24 -141.105.143.0/24 -141.98.148.0/22 -146.120.124.0/24 -146.120.125.0/24 -146.120.126.0/23 -146.120.180.0/22 -146.120.243.0/24 -146.120.95.0/24 -146.158.31.0/24 -146.158.74.0/24 -146.158.75.0/24 -151.0.0.0/23 -151.0.10.0/24 -151.0.11.0/24 -151.0.12.0/24 -151.0.13.0/24 -151.0.14.0/24 -151.0.15.0/24 -151.0.16.0/23 -151.0.18.0/24 -151.0.19.0/24 -151.0.2.0/24 -151.0.20.0/22 -151.0.24.0/24 -151.0.25.0/24 -151.0.26.0/23 -151.0.28.0/24 -151.0.29.0/24 -151.0.3.0/24 -151.0.30.0/24 -151.0.31.0/24 -151.0.32.0/22 -151.0.36.0/24 -151.0.37.0/24 -151.0.38.0/24 -151.0.4.0/24 -151.0.40.0/22 -151.0.44.0/24 -151.0.45.0/24 -151.0.46.0/24 -151.0.47.0/24 -151.0.5.0/24 -151.0.55.0/24 -151.0.56.0/23 -151.0.58.0/24 -151.0.59.0/24 -151.0.6.0/23 -151.0.60.0/24 -151.0.61.0/24 -151.0.62.0/23 -151.0.8.0/24 -151.0.9.0/24 -151.249.96.0/21 -176.100.56.0/22 -176.100.60.0/23 -176.100.62.0/24 -176.101.192.0/19 -176.102.16.0/24 -176.102.20.0/24 -176.102.22.0/23 -176.102.25.0/24 -176.102.26.0/24 -176.102.28.0/24 -176.103.208.0/22 -176.103.212.0/24 -176.103.213.0/24 -176.103.214.0/24 -176.103.215.0/24 -176.103.48.0/20 -176.104.168.0/21 -176.104.249.0/24 -176.104.250.0/24 -176.104.254.0/24 -176.107.48.0/21 -176.107.56.0/23 -176.107.58.0/24 -176.107.60.0/22 -176.109.176.0/20 -176.109.192.0/24 -176.109.193.0/24 -176.109.194.0/23 -176.109.196.0/22 -176.109.200.0/21 -176.109.208.0/20 -176.109.224.0/22 -176.109.228.0/23 -176.109.230.0/24 -176.109.231.0/24 -176.109.232.0/23 -176.109.234.0/24 -176.109.235.0/24 -176.109.236.0/24 -176.109.237.0/24 -176.109.238.0/23 -176.109.240.0/21 -176.109.248.0/23 -176.109.250.0/24 -176.109.252.0/22 -176.110.0.0/24 -176.110.11.0/24 -176.110.12.0/22 -176.110.16.0/23 -176.110.19.0/24 -176.110.2.0/23 -176.110.20.0/22 -176.110.25.0/24 -176.110.26.0/23 -176.110.28.0/22 -176.110.34.0/23 -176.110.36.0/24 -176.110.38.0/24 -176.110.4.0/22 -176.110.40.0/22 -176.110.45.0/24 -176.110.46.0/23 -176.110.48.0/22 -176.110.52.0/23 -176.110.54.0/24 -176.110.56.0/23 -176.110.59.0/24 -176.110.60.0/22 -176.110.8.0/24 -176.111.32.0/23 -176.111.35.0/24 -176.111.36.0/22 -176.111.40.0/24 -176.111.41.0/24 -176.111.42.0/24 -176.111.43.0/24 -176.111.44.0/24 -176.111.45.0/24 -176.111.46.0/23 -176.111.80.0/22 -176.111.84.0/23 -176.111.86.0/24 -176.111.87.0/24 -176.111.88.0/22 -176.111.92.0/23 -176.113.224.0/24 -176.113.225.0/24 -176.113.226.0/24 -176.113.227.0/24 -176.113.228.0/24 -176.113.229.0/24 -176.113.230.0/24 -176.113.231.0/24 -176.113.232.0/24 -176.113.233.0/24 -176.113.234.0/24 -176.113.235.0/24 -176.113.236.0/24 -176.113.237.0/24 -176.113.238.0/24 -176.113.239.0/24 -176.113.240.0/24 -176.113.241.0/24 -176.113.242.0/24 -176.113.243.0/24 -176.113.244.0/24 -176.113.245.0/24 -176.113.246.0/24 -176.113.247.0/24 -176.113.248.0/24 -176.113.249.0/24 -176.113.250.0/24 -176.113.251.0/24 -176.113.252.0/24 -176.113.253.0/24 -176.113.254.0/23 -176.117.64.0/23 -176.117.66.0/24 -176.117.67.0/24 -176.117.68.0/24 -176.117.69.0/24 -176.117.70.0/24 -176.117.71.0/24 -176.117.72.0/23 -176.117.74.0/24 -176.117.75.0/24 -176.117.76.0/22 -176.117.80.0/24 -176.117.81.0/24 -176.117.82.0/23 -176.117.84.0/24 -176.117.85.0/24 -176.117.86.0/23 -176.117.88.0/21 -176.119.0.0/21 -176.121.192.0/23 -176.121.194.0/24 -176.121.195.0/24 -176.121.196.0/23 -176.121.198.0/24 -176.121.199.0/24 -176.121.200.0/23 -176.121.202.0/23 -176.121.204.0/22 -176.121.224.0/22 -176.121.228.0/23 -176.121.230.0/24 -176.121.231.0/24 -176.121.232.0/23 -176.121.234.0/24 -176.121.235.0/24 -176.121.236.0/23 -176.121.238.0/24 -176.121.239.0/24 -176.121.240.0/23 -176.121.242.0/24 -176.121.243.0/24 -176.121.244.0/22 -176.121.248.0/23 -176.121.250.0/24 -176.121.251.0/24 -176.121.252.0/23 -176.121.254.0/24 -176.121.255.0/24 -176.122.0.0/24 -176.122.1.0/24 -176.122.12.0/24 -176.122.13.0/24 -176.122.14.0/24 -176.122.15.0/24 -176.122.2.0/23 -176.122.4.0/24 -176.122.5.0/24 -176.122.6.0/23 -176.122.8.0/22 -176.8.187.0/24 -176.8.31.0/24 -176.8.32.0/23 -176.8.45.0/24 -176.96.230.0/24 -176.96.240.0/24 -176.96.72.0/21 -178.133.107.0/24 -178.133.111.0/24 -178.133.117.0/24 -178.133.135.0/24 -178.133.139.0/24 -178.133.145.0/24 -178.133.159.0/24 -178.133.160.0/24 -178.133.177.0/24 -178.133.180.0/24 -178.133.205.0/24 -178.133.217.0/24 -178.133.223.0/24 -178.133.234.0/24 -178.133.250.0/24 -178.133.41.0/24 -178.133.45.0/24 -178.133.47.0/24 -178.133.51.0/24 -178.133.70.0/24 -178.133.79.0/24 -178.133.85.0/24 -178.133.89.0/24 -178.133.97.0/24 -178.136.201.0/24 -178.136.65.0/24 -178.136.70.0/24 -178.136.71.0/24 -178.136.72.0/24 -178.136.73.0/24 -178.137.191.0/24 -178.159.208.0/24 -178.159.210.0/23 -178.159.212.0/24 -178.159.213.0/24 -178.159.214.0/24 -178.159.215.0/24 -178.159.216.0/23 -178.159.218.0/24 -178.159.219.0/24 -178.159.220.0/23 -178.159.222.0/24 -178.159.223.0/24 -178.209.64.0/24 -178.209.65.0/24 -178.209.66.0/24 -178.209.67.0/24 -178.209.68.0/22 -178.209.72.0/21 -178.209.80.0/21 -178.209.88.0/24 -178.209.89.0/24 -178.209.90.0/23 -178.209.92.0/22 -178.213.104.0/21 -178.214.160.0/24 -178.214.161.0/24 -178.214.162.0/24 -178.214.163.0/24 -178.214.164.0/22 -178.214.168.0/24 -178.214.169.0/24 -178.214.170.0/24 -178.214.171.0/24 -178.214.172.0/23 -178.214.174.0/24 -178.214.175.0/24 -178.214.176.0/22 -178.214.180.0/24 -178.214.181.0/24 -178.214.182.0/24 -178.214.183.0/24 -178.214.184.0/24 -178.214.185.0/24 -178.214.186.0/23 -178.214.188.0/24 -178.214.189.0/24 -178.214.190.0/23 -178.216.120.0/24 -178.216.121.0/24 -178.216.122.0/23 -178.216.124.0/23 -178.216.126.0/24 -178.216.127.0/24 -178.216.232.0/24 -178.216.233.0/24 -178.216.234.0/24 -178.216.235.0/24 -178.216.236.0/22 -178.219.192.0/24 -178.219.193.0/24 -178.219.194.0/24 -178.219.195.0/24 -178.219.196.0/23 -178.219.198.0/24 -178.219.199.0/24 -178.219.200.0/24 -178.219.201.0/24 -178.219.202.0/24 -178.219.203.0/24 -178.219.204.0/22 -178.23.136.0/21 -178.251.106.0/24 -178.92.153.0/24 -178.92.175.0/24 -178.92.219.0/24 -178.92.220.0/24 -178.92.232.0/24 -178.92.234.0/24 -178.92.238.0/24 -178.92.239.0/24 -178.92.240.0/24 -178.92.47.0/24 -178.92.62.0/24 -178.92.63.0/24 -178.92.94.0/24 -178.93.145.0/24 -178.93.147.0/24 -178.93.186.0/24 -178.93.187.0/24 -178.93.198.0/24 -178.93.199.0/24 -178.93.201.0/24 -178.93.205.0/24 -178.93.206.0/24 -178.93.227.0/24 -178.94.112.0/24 -178.94.170.0/24 -178.94.177.0/24 -178.94.184.0/23 -178.94.186.0/24 -178.94.187.0/24 -178.94.209.0/24 -178.94.242.0/24 -178.95.102.0/24 -178.95.119.0/24 -178.95.128.0/24 -178.95.131.0/24 -178.95.187.0/24 -178.95.198.0/24 -178.95.203.0/24 -178.95.215.0/24 -178.95.232.0/24 -178.95.234.0/24 -178.95.241.0/24 -178.95.96.0/24 -185.1.16.0/24 -185.1.39.0/24 -185.1.99.0/24 -185.114.136.0/23 -185.114.138.0/24 -185.114.139.0/24 -185.121.108.0/24 -185.121.109.0/24 -185.126.253.0/24 -185.126.254.0/24 -185.127.244.0/22 -185.149.196.0/24 -185.149.197.0/24 -185.149.199.0/24 -185.174.144.0/22 -185.181.166.0/24 -185.19.244.0/22 -185.200.61.0/24 -185.212.250.0/24 -185.219.126.0/24 -185.22.16.0/22 -185.222.160.0/22 -185.229.232.0/24 -185.229.233.0/24 -185.229.234.0/24 -185.229.235.0/24 -185.234.216.0/24 -185.239.26.0/23 -185.28.108.0/23 -185.28.111.0/24 -185.29.252.0/24 -185.29.253.0/24 -185.29.254.0/24 -185.29.255.0/24 -185.30.203.0/24 -185.33.140.0/23 -185.33.142.0/24 -185.33.143.0/24 -185.37.194.0/23 -185.40.49.0/24 -185.41.20.0/24 -185.41.22.0/24 -185.41.23.0/24 -185.41.52.0/24 -185.42.40.0/22 -185.50.249.0/24 -185.50.250.0/23 -185.70.128.0/24 -185.70.129.0/24 -185.70.130.0/24 -185.70.131.0/24 -185.93.184.0/24 -185.93.187.0/24 -188.0.100.0/22 -188.0.104.0/24 -188.0.106.0/23 -188.0.108.0/22 -188.0.112.0/21 -188.0.120.0/23 -188.0.122.0/24 -188.0.124.0/23 -188.0.126.0/24 -188.0.127.0/24 -188.0.96.0/24 -188.0.98.0/23 -188.130.254.0/24 -188.163.107.0/24 -188.163.200.0/24 -188.163.224.0/24 -188.163.226.0/24 -188.163.230.0/24 -188.163.48.0/24 -188.163.56.0/24 -188.163.57.0/24 -188.163.59.0/24 -188.163.61.0/24 -188.163.89.0/24 -188.163.92.0/23 -188.190.0.0/21 -188.190.10.0/24 -188.190.11.0/24 -188.190.12.0/24 -188.190.13.0/24 -188.190.14.0/24 -188.190.15.0/24 -188.190.16.0/24 -188.190.17.0/24 -188.190.18.0/23 -188.190.20.0/24 -188.190.21.0/24 -188.190.22.0/24 -188.190.23.0/24 -188.190.24.0/22 -188.190.28.0/24 -188.190.29.0/24 -188.190.30.0/23 -188.190.8.0/23 -188.239.192.0/24 -188.239.193.0/24 -188.239.195.0/24 -188.239.196.0/23 -188.239.198.0/24 -188.239.199.0/24 -188.239.200.0/21 -188.239.208.0/21 -188.239.216.0/24 -188.239.217.0/24 -188.239.221.0/24 -188.239.222.0/23 -188.239.224.0/24 -188.239.225.0/24 -188.239.226.0/24 -188.239.231.0/24 -188.239.232.0/24 -188.239.233.0/24 -188.239.234.0/24 -188.239.237.0/24 -188.239.240.0/23 -188.239.242.0/24 -188.239.243.0/24 -188.239.245.0/24 -188.239.246.0/24 -188.239.250.0/24 -188.239.251.0/24 -188.239.254.0/24 -192.166.100.0/22 -192.166.128.0/24 -192.166.129.0/24 -192.166.130.0/24 -192.166.131.0/24 -193.105.92.0/24 -193.106.200.0/22 -193.106.220.0/22 -193.106.236.0/24 -193.106.237.0/24 -193.106.64.0/24 -193.106.65.0/24 -193.106.66.0/24 -193.107.80.0/22 -193.108.104.0/23 -193.108.38.0/23 -193.108.51.0/24 -193.109.163.0/24 -193.110.112.0/23 -193.110.114.0/24 -193.110.115.0/24 -193.110.144.0/24 -193.110.169.0/24 -193.110.174.0/23 -193.110.20.0/22 -193.110.72.0/22 -193.111.156.0/22 -193.142.114.0/24 -193.150.28.0/22 -193.169.134.0/23 -193.178.236.0/23 -193.192.36.0/23 -193.200.33.0/24 -193.227.250.0/24 -193.228.2.0/24 -193.23.175.0/24 -193.23.58.0/24 -193.239.24.0/22 -193.242.156.0/24 -193.242.157.0/24 -193.242.158.0/23 -193.254.232.0/24 -193.254.233.0/24 -193.30.246.0/24 -193.30.247.0/24 -193.32.12.0/23 -193.32.14.0/24 -193.32.15.0/24 -193.39.72.0/24 -193.41.80.0/24 -193.43.252.0/24 -193.43.253.0/24 -193.43.254.0/23 -193.46.210.0/24 -193.57.44.0/24 -193.58.246.0/24 -193.93.52.0/22 -194.0.206.0/24 -194.0.52.0/24 -194.0.53.0/24 -194.0.54.0/24 -194.0.55.0/24 -194.0.56.0/23 -194.116.194.0/23 -194.116.238.0/23 -194.125.224.0/22 -194.145.216.0/23 -194.145.220.0/24 -194.145.221.0/24 -194.150.73.0/24 -194.150.74.0/23 -194.156.76.0/24 -194.187.28.0/24 -194.246.92.0/23 -194.246.94.0/24 -194.246.99.0/24 -194.247.178.0/23 -194.28.132.0/22 -194.28.140.0/24 -194.28.141.0/24 -194.28.142.0/23 -194.28.16.0/23 -194.28.19.0/24 -194.28.60.0/23 -194.28.62.0/23 -194.31.152.0/24 -194.31.153.0/24 -194.31.154.0/23 -194.44.0.0/24 -194.44.147.0/24 -194.44.91.0/24 -194.5.94.0/23 -194.50.167.0/24 -194.50.9.0/24 -194.79.11.0/24 -194.79.60.0/24 -194.79.61.0/24 -194.79.62.0/24 -194.79.63.0/24 -194.79.8.0/23 -194.8.248.0/24 -194.8.249.0/24 -195.128.230.0/23 -195.135.197.0/24 -195.137.250.0/23 -195.177.208.0/23 -195.178.30.0/23 -195.184.192.0/21 -195.184.200.0/23 -195.184.203.0/24 -195.184.204.0/23 -195.184.206.0/24 -195.184.207.0/24 -195.184.208.0/22 -195.184.212.0/24 -195.184.213.0/24 -195.184.214.0/23 -195.184.216.0/21 -195.184.81.0/24 -195.189.47.0/24 -195.191.194.0/23 -195.191.200.0/23 -195.2.204.0/23 -195.211.252.0/22 -195.214.236.0/22 -195.216.210.0/23 -195.222.124.0/24 -195.222.126.0/24 -195.222.127.0/24 -195.225.156.0/22 -195.230.96.0/24 -195.238.112.0/22 -195.244.4.0/23 -195.250.36.0/24 -195.3.132.0/23 -195.3.134.0/24 -195.3.135.0/24 -195.3.196.0/22 -195.39.210.0/23 -195.39.248.0/23 -195.5.124.0/24 -195.5.125.0/24 -195.5.3.0/24 -195.5.39.0/24 -195.58.225.0/24 -195.58.226.0/23 -195.58.228.0/24 -195.58.229.0/24 -195.58.230.0/23 -195.58.232.0/21 -195.58.240.0/21 -195.58.248.0/24 -195.58.249.0/24 -195.58.250.0/24 -195.58.251.0/24 -195.58.252.0/22 -195.64.142.0/23 -195.69.200.0/22 -195.69.248.0/22 -195.72.156.0/22 -195.78.104.0/23 -195.78.245.0/24 -195.93.154.0/23 -195.95.139.0/24 -2.57.112.0/22 -212.66.32.0/23 -212.66.34.0/24 -212.66.35.0/24 -212.66.36.0/24 -212.66.37.0/24 -212.66.38.0/23 -212.66.40.0/24 -212.66.42.0/23 -212.66.44.0/22 -212.66.48.0/24 -212.66.50.0/24 -212.66.51.0/24 -212.66.52.0/24 -212.66.53.0/24 -212.66.54.0/23 -212.66.56.0/22 -212.66.60.0/24 -212.66.61.0/24 -212.66.62.0/24 -212.66.63.0/24 -212.79.115.0/24 -212.79.116.0/24 -212.79.121.0/24 -212.79.123.0/24 -212.79.124.0/24 -212.79.126.0/24 -212.79.127.0/24 -212.8.34.0/24 -212.8.37.0/24 -212.8.38.0/23 -212.8.40.0/21 -212.8.48.0/23 -212.8.52.0/24 -212.8.54.0/23 -212.8.56.0/23 -212.8.58.0/24 -212.8.60.0/24 -212.87.160.0/23 -212.87.162.0/23 -212.87.164.0/23 -212.87.166.0/23 -212.87.168.0/24 -212.87.172.0/23 -212.87.174.0/24 -212.87.176.0/24 -212.87.177.0/24 -212.87.178.0/23 -212.87.181.0/24 -212.87.182.0/23 -212.87.184.0/24 -212.87.185.0/24 -212.87.186.0/24 -212.87.187.0/24 -212.87.188.0/23 -212.87.190.0/24 -212.87.191.0/24 -212.96.206.0/24 -213.108.176.0/24 -213.108.178.0/24 -213.108.181.0/24 -213.108.182.0/24 -213.108.183.0/24 -213.111.128.0/23 -213.111.130.0/23 -213.111.132.0/22 -213.111.136.0/23 -213.111.138.0/24 -213.111.139.0/24 -213.111.140.0/23 -213.111.142.0/24 -213.111.143.0/24 -213.111.144.0/24 -213.111.145.0/24 -213.111.146.0/23 -213.111.148.0/24 -213.111.149.0/24 -213.111.150.0/24 -213.111.151.0/24 -213.111.152.0/24 -213.111.153.0/24 -213.111.154.0/24 -213.111.155.0/24 -213.111.156.0/23 -213.111.158.0/23 -213.111.160.0/23 -213.111.162.0/24 -213.111.163.0/24 -213.111.164.0/24 -213.111.165.0/24 -213.111.166.0/24 -213.111.167.0/24 -213.111.168.0/24 -213.111.169.0/24 -213.111.170.0/24 -213.111.171.0/24 -213.111.172.0/24 -213.111.173.0/24 -213.111.174.0/23 -213.111.176.0/24 -213.111.177.0/24 -213.111.178.0/24 -213.111.179.0/24 -213.111.180.0/24 -213.111.181.0/24 -213.111.182.0/23 -213.111.184.0/23 -213.111.186.0/24 -213.111.187.0/24 -213.111.188.0/23 -213.111.190.0/24 -213.111.191.0/24 -213.130.26.0/23 -213.133.171.0/24 -213.251.193.0/24 -213.251.195.0/24 -213.251.198.0/24 -213.251.200.0/22 -213.251.204.0/23 -213.251.206.0/23 -217.199.224.0/21 -217.199.232.0/24 -217.199.233.0/24 -217.199.234.0/23 -217.199.236.0/24 -217.64.144.0/22 -217.67.64.0/24 -217.67.65.0/24 -217.67.66.0/23 -217.67.68.0/22 -217.67.72.0/22 -217.67.76.0/24 -217.67.77.0/24 -217.67.78.0/23 -31.128.102.0/23 -31.128.104.0/21 -31.128.120.0/24 -31.128.123.0/24 -31.128.124.0/24 -31.128.126.0/23 -31.131.128.0/21 -31.131.136.0/24 -31.131.137.0/24 -31.131.138.0/24 -31.131.139.0/24 -31.131.140.0/22 -31.133.44.0/23 -31.133.46.0/24 -31.133.48.0/24 -31.133.49.0/24 -31.133.50.0/24 -31.133.51.0/24 -31.133.52.0/24 -31.133.53.0/24 -31.133.54.0/24 -31.133.55.0/24 -31.133.64.0/24 -31.133.65.0/24 -31.133.66.0/24 -31.133.67.0/24 -31.133.68.0/24 -31.133.69.0/24 -31.133.70.0/24 -31.133.71.0/24 -31.133.72.0/24 -31.133.73.0/24 -31.133.74.0/24 -31.133.75.0/24 -31.133.76.0/23 -31.133.78.0/24 -31.133.79.0/24 -31.135.177.0/24 -31.135.178.0/24 -31.135.180.0/24 -31.135.182.0/24 -31.135.183.0/24 -31.148.171.0/24 -31.148.175.0/24 -31.148.221.0/24 -31.148.52.0/22 -31.148.56.0/24 -31.148.57.0/24 -31.148.58.0/24 -31.148.59.0/24 -31.148.60.0/22 -31.202.192.0/20 -31.202.208.0/23 -31.202.210.0/23 -31.202.212.0/22 -31.202.216.0/24 -31.202.217.0/24 -31.202.218.0/23 -31.202.220.0/24 -31.202.221.0/24 -31.202.222.0/23 -31.202.224.0/24 -31.202.225.0/24 -31.202.226.0/24 -31.202.227.0/24 -31.202.228.0/23 -31.202.230.0/23 -31.202.232.0/24 -31.202.233.0/24 -31.202.234.0/23 -31.202.236.0/23 -31.202.238.0/23 -31.202.240.0/24 -31.202.241.0/24 -31.202.242.0/24 -31.202.243.0/24 -31.202.244.0/23 -31.202.246.0/23 -31.202.248.0/23 -31.202.250.0/24 -31.202.251.0/24 -31.202.252.0/22 -31.40.131.0/24 -31.40.139.0/24 -31.40.144.0/24 -31.40.147.0/24 -31.40.149.0/24 -31.40.152.0/24 -31.40.154.0/24 -31.40.155.0/24 -31.40.168.0/22 -31.40.174.0/23 -31.40.176.0/23 -31.40.180.0/22 -31.40.184.0/22 -31.43.160.0/22 -31.43.168.0/24 -31.43.170.0/24 -31.43.178.0/24 -31.43.180.0/23 -31.43.188.0/24 -31.43.190.0/24 -31.43.32.0/24 -31.43.38.0/23 -31.43.40.0/23 -31.43.43.0/24 -31.43.44.0/24 -31.43.46.0/23 -31.43.54.0/23 -31.43.57.0/24 -31.6.100.0/24 -31.6.101.0/24 -31.6.102.0/23 -31.6.104.0/23 -31.6.106.0/24 -31.6.107.0/24 -31.6.108.0/22 -31.6.112.0/24 -31.6.113.0/24 -31.6.114.0/24 -31.6.115.0/24 -31.6.116.0/23 -31.6.118.0/24 -31.6.119.0/24 -31.6.120.0/21 -31.6.96.0/23 -31.6.98.0/24 -31.6.99.0/24 -37.115.242.0/23 -37.115.244.0/24 -37.115.255.0/24 -37.115.56.0/23 -37.115.8.0/22 -37.143.88.0/21 -37.229.128.0/24 -37.229.136.0/24 -37.229.138.0/24 -37.229.155.0/24 -37.229.159.0/24 -37.229.175.0/24 -37.52.10.0/24 -37.52.244.0/24 -37.52.49.0/24 -37.53.164.0/24 -37.53.171.0/24 -37.53.200.0/24 -37.53.217.0/24 -37.53.54.0/24 -37.53.75.0/24 -37.53.8.0/24 -37.53.92.0/24 -37.53.94.0/24 -37.54.117.0/24 -37.54.193.0/24 -37.54.25.0/24 -37.55.11.0/24 -37.55.12.0/24 -37.55.153.0/24 -37.55.156.0/24 -37.55.157.0/24 -37.55.158.0/24 -37.55.176.0/24 -37.55.177.0/24 -37.55.18.0/24 -37.55.216.0/24 -37.55.39.0/24 -37.55.5.0/24 -37.55.7.0/24 -37.55.8.0/24 -37.73.111.0/24 -37.73.120.0/24 -37.73.158.0/24 -37.73.201.0/24 -37.73.219.0/24 -37.73.225.0/24 -37.73.230.0/24 -37.73.236.0/24 -37.73.238.0/24 -37.73.245.0/24 -37.73.78.0/24 -45.10.32.0/22 -45.14.109.0/24 -45.14.110.0/24 -45.149.232.0/22 -45.151.89.0/24 -45.151.90.0/24 -45.86.44.0/22 -45.9.28.0/24 -46.118.249.0/24 -46.118.251.0/24 -46.119.35.0/24 -46.133.10.0/24 -46.133.105.0/24 -46.133.110.0/24 -46.133.140.0/24 -46.133.156.0/24 -46.133.158.0/24 -46.133.161.0/24 -46.133.169.0/24 -46.133.171.0/24 -46.133.172.0/24 -46.133.212.0/24 -46.133.214.0/24 -46.133.22.0/24 -46.133.25.0/24 -46.133.32.0/24 -46.133.43.0/24 -46.133.63.0/24 -46.133.87.0/24 -46.133.96.0/24 -46.150.100.0/22 -46.150.104.0/21 -46.150.112.0/20 -46.150.96.0/23 -46.150.98.0/24 -46.150.99.0/24 -46.151.40.0/21 -46.160.100.0/23 -46.160.102.0/23 -46.160.104.0/24 -46.160.105.0/24 -46.160.106.0/23 -46.160.108.0/22 -46.160.112.0/24 -46.160.113.0/24 -46.160.114.0/23 -46.160.116.0/24 -46.160.117.0/24 -46.160.118.0/23 -46.160.120.0/24 -46.160.121.0/24 -46.160.122.0/23 -46.160.124.0/22 -46.160.64.0/24 -46.160.65.0/24 -46.160.66.0/23 -46.160.68.0/24 -46.160.69.0/24 -46.160.70.0/24 -46.160.71.0/24 -46.160.72.0/24 -46.160.73.0/24 -46.160.74.0/23 -46.160.76.0/24 -46.160.77.0/24 -46.160.78.0/24 -46.160.79.0/24 -46.160.80.0/22 -46.160.84.0/23 -46.160.86.0/24 -46.160.87.0/24 -46.160.96.0/22 -46.161.40.0/24 -46.162.0.0/22 -46.162.16.0/20 -46.162.32.0/24 -46.162.33.0/24 -46.162.34.0/24 -46.162.35.0/24 -46.162.36.0/22 -46.162.4.0/24 -46.162.40.0/21 -46.162.48.0/22 -46.162.5.0/24 -46.162.52.0/24 -46.162.53.0/24 -46.162.54.0/24 -46.162.55.0/24 -46.162.56.0/21 -46.162.6.0/23 -46.162.8.0/21 -46.172.76.0/24 -46.172.77.0/24 -46.172.80.0/24 -46.172.86.0/23 -46.172.90.0/24 -46.172.93.0/24 -46.174.64.0/24 -46.174.65.0/24 -46.174.66.0/24 -46.174.68.0/24 -46.174.69.0/24 -46.174.70.0/24 -46.174.71.0/24 -46.175.250.0/23 -46.185.49.0/24 -46.185.50.0/24 -46.185.51.0/24 -46.185.52.0/23 -46.185.55.0/24 -46.200.161.0/24 -46.200.162.0/24 -46.200.165.0/24 -46.200.252.0/24 -46.200.93.0/24 -46.201.163.0/24 -46.201.168.0/24 -46.201.233.0/24 -46.201.29.0/24 -46.201.30.0/24 -46.201.36.0/24 -46.201.76.0/24 -46.201.90.0/24 -46.202.126.0/24 -46.202.146.0/24 -46.202.25.0/24 -46.211.107.0/24 -46.211.233.0/24 -46.211.47.0/24 -46.211.86.0/24 -46.211.95.0/24 -46.250.112.0/21 -46.250.121.0/24 -46.250.124.0/23 -46.250.127.0/24 -46.250.96.0/20 -46.46.105.0/24 -46.46.110.0/24 -46.46.112.0/24 -46.46.116.0/22 -46.46.120.0/21 -46.46.64.0/24 -46.46.66.0/24 -46.46.71.0/24 -46.46.72.0/24 -46.46.76.0/24 -46.46.83.0/24 -46.46.85.0/24 -46.46.91.0/24 -46.46.93.0/24 -46.46.95.0/24 -46.46.98.0/23 -46.96.106.0/24 -46.96.12.0/24 -46.96.133.0/24 -46.96.142.0/24 -46.96.147.0/24 -46.96.154.0/24 -46.96.160.0/23 -46.96.170.0/24 -46.96.174.0/24 -46.96.24.0/24 -46.96.58.0/24 -5.102.36.0/24 -5.102.37.0/24 -5.104.32.0/22 -5.104.36.0/24 -5.104.37.0/24 -5.104.38.0/23 -5.104.40.0/22 -5.104.44.0/24 -5.104.45.0/24 -5.104.46.0/24 -5.104.47.0/24 -5.104.48.0/24 -5.104.49.0/24 -5.104.50.0/23 -5.104.52.0/23 -5.104.54.0/24 -5.104.55.0/24 -5.104.56.0/24 -5.104.57.0/24 -5.104.58.0/24 -5.104.59.0/24 -5.104.60.0/24 -5.104.61.0/24 -5.104.62.0/23 -5.105.0.0/24 -5.105.1.0/24 -5.105.10.0/24 -5.105.100.0/24 -5.105.101.0/24 -5.105.102.0/23 -5.105.104.0/22 -5.105.108.0/24 -5.105.109.0/24 -5.105.11.0/24 -5.105.110.0/23 -5.105.112.0/21 -5.105.12.0/23 -5.105.120.0/22 -5.105.124.0/24 -5.105.125.0/24 -5.105.126.0/24 -5.105.127.0/24 -5.105.128.0/22 -5.105.132.0/23 -5.105.134.0/23 -5.105.136.0/24 -5.105.137.0/24 -5.105.138.0/24 -5.105.139.0/24 -5.105.14.0/24 -5.105.140.0/24 -5.105.141.0/24 -5.105.142.0/23 -5.105.144.0/23 -5.105.146.0/24 -5.105.147.0/24 -5.105.148.0/23 -5.105.15.0/24 -5.105.150.0/24 -5.105.151.0/24 -5.105.152.0/24 -5.105.153.0/24 -5.105.154.0/23 -5.105.156.0/22 -5.105.16.0/22 -5.105.160.0/24 -5.105.161.0/24 -5.105.162.0/24 -5.105.163.0/24 -5.105.164.0/23 -5.105.166.0/23 -5.105.168.0/22 -5.105.172.0/24 -5.105.173.0/24 -5.105.174.0/24 -5.105.175.0/24 -5.105.176.0/24 -5.105.177.0/24 -5.105.178.0/23 -5.105.180.0/22 -5.105.184.0/24 -5.105.185.0/24 -5.105.186.0/24 -5.105.187.0/24 -5.105.188.0/22 -5.105.192.0/23 -5.105.194.0/23 -5.105.196.0/22 -5.105.2.0/23 -5.105.20.0/23 -5.105.200.0/23 -5.105.202.0/24 -5.105.203.0/24 -5.105.204.0/22 -5.105.208.0/22 -5.105.212.0/24 -5.105.213.0/24 -5.105.214.0/24 -5.105.215.0/24 -5.105.216.0/22 -5.105.22.0/24 -5.105.220.0/24 -5.105.221.0/24 -5.105.222.0/23 -5.105.224.0/23 -5.105.226.0/24 -5.105.227.0/24 -5.105.228.0/22 -5.105.23.0/24 -5.105.232.0/23 -5.105.234.0/24 -5.105.235.0/24 -5.105.236.0/23 -5.105.238.0/24 -5.105.239.0/24 -5.105.24.0/21 -5.105.240.0/22 -5.105.244.0/23 -5.105.246.0/24 -5.105.247.0/24 -5.105.248.0/23 -5.105.250.0/24 -5.105.251.0/24 -5.105.252.0/22 -5.105.32.0/22 -5.105.36.0/23 -5.105.38.0/24 -5.105.39.0/24 -5.105.4.0/24 -5.105.40.0/22 -5.105.44.0/23 -5.105.46.0/24 -5.105.47.0/24 -5.105.48.0/22 -5.105.5.0/24 -5.105.52.0/22 -5.105.56.0/22 -5.105.6.0/24 -5.105.60.0/23 -5.105.62.0/24 -5.105.63.0/24 -5.105.64.0/22 -5.105.68.0/23 -5.105.7.0/24 -5.105.70.0/24 -5.105.71.0/24 -5.105.72.0/22 -5.105.76.0/23 -5.105.78.0/24 -5.105.79.0/24 -5.105.8.0/24 -5.105.80.0/22 -5.105.84.0/23 -5.105.86.0/24 -5.105.87.0/24 -5.105.88.0/22 -5.105.9.0/24 -5.105.92.0/24 -5.105.93.0/24 -5.105.94.0/24 -5.105.95.0/24 -5.105.96.0/22 -5.153.128.0/21 -5.153.136.0/23 -5.153.138.0/24 -5.153.139.0/24 -5.153.140.0/22 -5.153.144.0/21 -5.153.152.0/22 -5.153.156.0/23 -5.153.158.0/24 -5.153.159.0/24 -5.153.160.0/22 -5.153.168.0/24 -5.153.169.0/24 -5.153.170.0/23 -5.153.172.0/23 -5.153.174.0/24 -5.153.175.0/24 -5.153.176.0/23 -5.153.178.0/24 -5.153.179.0/24 -5.153.180.0/22 -5.153.184.0/21 -5.180.176.0/24 -5.56.24.0/21 -62.122.56.0/24 -62.122.58.0/23 -62.122.60.0/24 -62.122.62.0/24 -62.182.64.0/21 -62.221.58.0/24 -77.120.68.0/24 -77.120.70.0/23 -77.121.224.0/19 -77.122.203.0/24 -77.52.182.0/24 -77.52.204.0/24 -77.75.150.0/24 -77.87.35.0/24 -77.88.244.0/22 -77.93.59.0/24 -78.111.220.0/23 -78.31.176.0/23 -80.70.75.0/24 -81.163.88.0/22 -81.163.92.0/24 -81.163.94.0/24 -81.163.95.0/24 -81.22.128.0/24 -81.22.129.0/24 -81.22.130.0/24 -81.22.131.0/24 -81.22.132.0/23 -81.22.134.0/24 -81.22.135.0/24 -81.22.136.0/24 -81.22.137.0/24 -81.22.138.0/24 -81.22.139.0/24 -81.22.140.0/23 -81.22.142.0/24 -81.22.143.0/24 -81.90.236.0/24 -82.207.63.0/24 -82.207.98.0/24 -83.218.234.0/24 -83.218.235.0/24 -85.223.192.0/24 -85.223.194.0/24 -85.223.195.0/24 -85.223.196.0/24 -85.223.198.0/23 -85.223.219.0/24 -85.223.220.0/24 -85.223.236.0/24 -85.255.176.0/21 -87.121.222.0/24 -87.76.128.0/18 -87.76.192.0/19 -87.76.224.0/20 -87.76.240.0/21 -87.76.248.0/22 -87.76.252.0/23 -87.76.254.0/23 -88.154.114.0/24 -88.154.137.0/24 -88.154.151.0/24 -88.154.159.0/24 -88.154.190.0/24 -88.154.199.0/24 -88.154.203.0/24 -88.154.213.0/24 -88.154.216.0/24 -88.154.243.0/24 -88.154.247.0/24 -88.154.253.0/24 -88.154.55.0/24 -88.154.66.0/24 -88.154.75.0/24 -88.154.79.0/24 -88.154.80.0/24 -88.155.110.0/24 -88.155.14.0/24 -88.155.145.0/24 -88.155.181.0/24 -88.155.39.0/24 -88.155.53.0/24 -88.155.62.0/24 -88.155.84.0/23 -88.155.89.0/24 -88.214.27.0/24 -89.105.230.0/23 -89.105.234.0/23 -89.162.176.0/24 -89.162.178.0/24 -89.162.181.0/24 -89.162.183.0/24 -89.162.193.0/24 -89.162.210.0/23 -89.162.214.0/24 -89.162.245.0/24 -89.185.1.0/24 -89.185.16.0/21 -89.185.2.0/23 -89.185.24.0/23 -89.185.26.0/24 -89.185.27.0/24 -89.185.28.0/22 -89.185.4.0/22 -89.185.8.0/21 -89.200.232.0/21 -91.124.209.0/24 -91.124.220.0/24 -91.124.221.0/24 -91.192.156.0/22 -91.192.160.0/22 -91.193.204.0/24 -91.193.205.0/24 -91.193.206.0/24 -91.193.207.0/24 -91.193.255.0/24 -91.193.76.0/22 -91.195.120.0/23 -91.195.2.0/23 -91.196.60.0/22 -91.196.88.0/24 -91.196.89.0/24 -91.196.90.0/23 -91.197.134.0/24 -91.197.236.0/22 -91.199.37.0/24 -91.200.12.0/24 -91.200.13.0/24 -91.200.14.0/23 -91.200.212.0/22 -91.201.108.0/24 -91.201.109.0/24 -91.201.110.0/23 -91.201.176.0/22 -91.201.181.0/24 -91.201.183.0/24 -91.202.160.0/23 -91.202.162.0/24 -91.202.163.0/24 -91.202.8.0/22 -91.204.112.0/24 -91.204.113.0/24 -91.204.114.0/24 -91.204.115.0/24 -91.204.196.0/23 -91.204.198.0/24 -91.204.199.0/24 -91.206.166.0/24 -91.206.218.0/23 -91.207.218.0/23 -91.207.224.0/23 -91.207.26.0/24 -91.207.27.0/24 -91.210.33.0/24 -91.210.34.0/23 -91.211.172.0/22 -91.211.212.0/24 -91.211.213.0/24 -91.211.214.0/23 -91.212.125.0/24 -91.212.248.0/24 -91.214.48.0/22 -91.214.80.0/24 -91.214.81.0/24 -91.214.82.0/24 -91.214.83.0/24 -91.216.196.0/24 -91.216.22.0/24 -91.216.28.0/24 -91.216.61.0/24 -91.217.100.0/23 -91.217.144.0/24 -91.217.166.0/24 -91.217.244.0/24 -91.217.4.0/23 -91.218.16.0/23 -91.218.18.0/24 -91.218.19.0/24 -91.218.32.0/22 -91.219.140.0/22 -91.219.196.0/22 -91.219.32.0/22 -91.220.174.0/24 -91.220.60.0/24 -91.221.132.0/24 -91.221.133.0/24 -91.221.136.0/23 -91.221.190.0/24 -91.221.191.0/24 -91.221.252.0/23 -91.221.6.0/23 -91.222.0.0/22 -91.222.220.0/22 -91.222.244.0/22 -91.223.112.0/24 -91.223.136.0/24 -91.223.59.0/24 -91.224.112.0/23 -91.224.16.0/24 -91.224.17.0/24 -91.224.254.0/24 -91.224.255.0/24 -91.224.68.0/23 -91.225.220.0/22 -91.225.39.0/24 -91.225.45.0/24 -91.225.46.0/23 -91.225.88.0/24 -91.225.89.0/24 -91.225.90.0/24 -91.225.91.0/24 -91.226.138.0/24 -91.226.139.0/24 -91.226.190.0/24 -91.226.191.0/24 -91.226.192.0/24 -91.227.254.0/24 -91.229.167.0/24 -91.229.204.0/22 -91.229.216.0/23 -91.229.218.0/24 -91.229.219.0/24 -91.230.28.0/22 -91.232.157.0/24 -91.232.238.0/24 -91.234.88.0/22 -91.235.196.0/24 -91.235.197.0/24 -91.235.198.0/23 -91.236.171.0/24 -91.237.108.0/23 -91.237.110.0/24 -91.237.164.0/24 -91.237.166.0/24 -91.237.167.0/24 -91.237.204.0/24 -91.237.205.0/24 -91.237.206.0/23 -91.240.190.0/23 -91.240.48.0/23 -91.240.51.0/24 -91.241.160.0/23 -91.241.162.0/23 -91.241.164.0/23 -91.241.166.0/24 -91.241.167.0/24 -91.241.184.0/21 -91.241.192.0/18 -91.241.80.0/22 -91.242.208.0/23 -91.242.210.0/23 -91.242.222.0/24 -91.244.119.0/24 -91.244.128.0/22 -91.244.132.0/24 -91.244.133.0/24 -91.244.134.0/24 -91.244.135.0/24 -91.244.136.0/21 -91.244.144.0/24 -91.244.152.0/22 -91.244.156.0/24 -91.244.157.0/24 -91.244.158.0/23 -91.245.213.0/24 -91.246.128.0/24 -91.246.129.0/24 -91.246.130.0/24 -91.246.132.0/23 -91.246.134.0/24 -91.246.135.0/24 -91.246.136.0/22 -91.246.140.0/23 -91.246.142.0/24 -91.246.143.0/24 -91.246.144.0/24 -91.246.145.0/24 -91.246.146.0/24 -91.246.147.0/24 -91.246.148.0/24 -91.246.149.0/24 -91.246.150.0/23 -91.246.152.0/22 -91.246.156.0/24 -91.246.158.0/24 -91.246.159.0/24 -91.246.220.0/22 -91.250.0.0/23 -91.250.10.0/23 -91.250.12.0/24 -91.250.13.0/24 -91.250.14.0/23 -91.250.16.0/24 -91.250.17.0/24 -91.250.18.0/23 -91.250.2.0/23 -91.250.20.0/24 -91.250.21.0/24 -91.250.22.0/23 -91.250.24.0/23 -91.250.26.0/24 -91.250.27.0/24 -91.250.28.0/22 -91.250.32.0/24 -91.250.33.0/24 -91.250.34.0/23 -91.250.36.0/22 -91.250.4.0/24 -91.250.40.0/23 -91.250.42.0/24 -91.250.43.0/24 -91.250.44.0/24 -91.250.45.0/24 -91.250.46.0/24 -91.250.47.0/24 -91.250.48.0/24 -91.250.49.0/24 -91.250.5.0/24 -91.250.50.0/23 -91.250.52.0/22 -91.250.56.0/24 -91.250.57.0/24 -91.250.58.0/24 -91.250.59.0/24 -91.250.6.0/24 -91.250.60.0/24 -91.250.61.0/24 -91.250.62.0/23 -91.250.7.0/24 -91.250.8.0/23 -92.112.12.0/24 -92.112.155.0/24 -92.112.187.0/24 -92.112.224.0/24 -92.112.227.0/24 -92.112.60.0/24 -92.113.121.0/24 -92.113.203.0/24 -92.118.132.0/24 -92.118.134.0/24 -92.242.100.0/23 -92.242.102.0/24 -92.242.103.0/24 -92.242.104.0/24 -92.242.105.0/24 -92.242.106.0/23 -92.242.108.0/24 -92.242.109.0/24 -92.242.110.0/23 -92.242.112.0/22 -92.242.116.0/23 -92.242.118.0/23 -92.242.120.0/21 -92.242.96.0/22 -92.38.40.0/24 -92.38.48.0/24 -92.38.93.0/24 -92.42.40.0/22 -93.157.12.0/24 -93.157.13.0/24 -93.157.14.0/24 -93.157.15.0/24 -93.157.8.0/22 -93.170.135.0/24 -93.170.140.0/24 -93.170.15.0/24 -93.170.219.0/24 -93.170.26.0/24 -93.170.48.0/24 -93.170.49.0/24 -93.170.75.0/24 -93.170.88.0/24 -93.170.98.0/24 -93.170.99.0/24 -93.171.178.0/24 -93.171.179.0/24 -93.171.232.0/22 -93.178.192.0/22 -93.178.208.0/22 -93.178.228.0/23 -93.178.236.0/23 -93.178.248.0/22 -93.180.245.0/24 -93.185.208.0/23 -93.185.210.0/24 -93.185.211.0/24 -93.185.212.0/24 -93.185.213.0/24 -93.185.215.0/24 -93.185.216.0/21 -93.89.208.0/24 -93.89.209.0/24 -93.89.210.0/23 -93.89.212.0/23 -93.89.214.0/24 -93.89.216.0/23 -93.89.218.0/23 -93.89.220.0/24 -93.89.221.0/24 -93.89.222.0/24 -93.89.223.0/24 -94.153.0.0/24 -94.153.148.0/24 -94.153.149.0/24 -94.153.150.0/24 -94.153.151.0/24 -94.153.174.0/24 -94.153.244.0/24 -94.153.245.0/24 -94.153.246.0/24 -94.153.35.0/24 -94.153.69.0/24 -94.153.85.0/24 -94.158.32.0/23 -94.158.34.0/24 -94.158.35.0/24 -94.158.36.0/22 -94.158.40.0/21 -94.178.107.0/24 -94.178.14.0/24 -94.178.15.0/24 -94.178.153.0/24 -94.178.160.0/24 -94.178.192.0/24 -94.178.194.0/24 -94.178.197.0/24 -94.178.198.0/24 -94.178.20.0/24 -94.178.22.0/24 -94.178.24.0/24 -94.178.25.0/24 -94.178.26.0/24 -94.178.29.0/24 -94.178.8.0/24 -94.179.130.0/24 -94.179.199.0/24 -94.27.56.0/24 -95.132.128.0/24 -95.132.149.0/24 -95.132.150.0/24 -95.132.151.0/24 -95.132.169.0/24 -95.132.185.0/24 -95.133.161.0/24 -95.133.166.0/24 -95.134.104.0/24 -95.134.109.0/24 -95.134.153.0/24 -95.134.222.0/24 -95.135.126.0/24 -95.135.14.0/24 -95.135.222.0/24 -95.135.246.0/24 -95.135.250.0/24 -95.135.251.0/24 -95.135.253.0/24 -95.135.254.0/24 -95.135.255.0/24 -95.135.39.0/24 -95.135.53.0/24 -95.135.57.0/24 -95.135.60.0/24 -95.135.81.0/24 -95.135.83.0/24 -95.215.48.0/24 -95.215.49.0/24 -95.215.50.0/24 -95.215.51.0/24 -95.46.160.0/22 -95.46.168.0/22 -95.46.172.0/23 -95.47.104.0/22 -95.47.124.0/23 -95.47.144.0/24 -95.47.161.0/24 -95.47.204.0/23 -95.47.206.0/23 -95.47.255.0/24 -95.47.98.0/24 -95.69.152.0/22 diff --git a/charts/fullstack-deployment/config-files/otel-collector-config.yaml b/charts/fullstack-deployment/config-files/otel-collector-config.yaml deleted file mode 100644 index 5cac80ed4..000000000 --- a/charts/fullstack-deployment/config-files/otel-collector-config.yaml +++ /dev/null @@ -1,82 +0,0 @@ -receivers: - otlp: - protocols: - grpc: - http: - - # Collect node metrics - prometheus: - config: - scrape_configs: - - job_name: 'node-metrics-scraper' # network-node metrics - scrape_interval: {{ .otelDefaults.receivers.prometheus.scrapeInterval }} - static_configs: - - targets: {{ .otelDefaults.receivers.prometheus.scrapeTargets }} - -processors: - batch: - # Add standard label sets to both logs and metrics. - attributes/addLabels: - actions: - - key: environment - action: insert - value: "{{ .environment_name }}" - - key: metrics_node_id - action: insert - value: "{{ .otel_node_id | add1 }}" - - key: node_id - action: insert - value: "{{ .otel_node_id }}" - # TODO how to pass otel_instance_hostname and otel_instance_ip? - # - key: inventory_name - # action: insert - # value: "{{ .otel_instance_hostname }} - {{ .otel_instance_ip }}" - - key: instance_type - action: insert - value: "{{ .otel_instance_type }}" - -exporters: - prometheus: - endpoint: "0.0.0.0:9090" # note: network-node service exposes this port for all prometheus metrics instead of node's port 9999 - const_labels: - source: p-{{ default "otel-collector" .otelDefaults.nameOverride }} # PromQL: {source="p-otel-collector"} - - {{- if .otelDefaults.exporters.prometheusRemoteWrite.enabled }} - prometheusremotewrite: - endpoint: "{{ .otelDefaults.exporters.prometheusRemoteWrite.endpoint }}" - tls: - {{- .otelDefaults.exporters.prometheusRemoteWrite.tls | toYaml | nindent 6 }} - external_labels: - source: prw-{{ default "otel-collector" .otelDefaults.nameOverride }} # PromQL: {source="prw-otel-collector"} - {{- end }} - - otlp: - endpoint: "{{ .otelDefaults.exporters.otlp.endpoint }}" - {{- if .otelDefaults.exporters.otlp.headers }} - headers: - {{- .otelDefaults.exporters.otlp.headers | toYaml | nindent 6 }} - {{- end }} - tls: - {{- .otelDefaults.exporters.otlp.tls | toYaml | nindent 6 }} - -extensions: - health_check: - -service: - extensions: [health_check] - pipelines: - traces: - receivers: [otlp] - processors: [batch] - exporters: [otlp] - metrics: - receivers: - - prometheus - processors: - - attributes/addLabels - - batch - exporters: - - prometheus - {{- if .otelDefaults.exporters.prometheusRemoteWrite.enabled }} - - prometheusremotewrite - {{- end }} diff --git a/charts/fullstack-deployment/templates/NOTES.txt b/charts/fullstack-deployment/templates/NOTES.txt deleted file mode 100644 index 24888ea82..000000000 --- a/charts/fullstack-deployment/templates/NOTES.txt +++ /dev/null @@ -1,23 +0,0 @@ -Get the name of the envoy gateway system: - export ENVOY_SERVICE=$(kubectl get svc -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace="${NAMESPACE}",gateway.envoyproxy.io/owning-gateway-name=fst -o jsonpath="{.items[0].metadata.name}") - -Forward a port on the gateway to a local port: - kubectl port-forward "svc/${ENVOY_SERVICE}" -n envoy-gateway-system "${LOCAL_PORT}":"${GATEWAY_PORT}" & - -Some examples, that for convenience, use the same local port as that on the gateway: - -To access the Hedera Mirror Node Explorer locally (port 8888 on the gateway): - kubectl port-forward "svc/${ENVOY_SERVICE}" -n envoy-gateway-system 8888:8888 & - open http://127.0.0.1:8888 - -To access the GRPC port of node 2 (starting port 52000 for node 0 on the gateway): - kubectl port-forward "svc/${ENVOY_SERVICE}" -n envoy-gateway-system 52002:52002 & - -To access the GRPC secure (TLS) port of node 1 (starting port 53000 for node 0 on the gateway): - kubectl port-forward "svc/${ENVOY_SERVICE}" -n envoy-gateway-system 53001:53001 & - -To access the gossip port of node 0 (starting port 51000 for node 0 on the gateway): - kubectl port-forward "svc/${ENVOY_SERVICE}" -n envoy-gateway-system 51000:51000 & - -To access the GRPC web port of node 5 (starting port 18000 for node 0 on the gateway): - kubectl port-forward "svc/${ENVOY_SERVICE}" -n envoy-gateway-system 18005:18005 & diff --git a/charts/fullstack-deployment/templates/_helpers.tpl b/charts/fullstack-deployment/templates/_helpers.tpl deleted file mode 100644 index 976aeca85..000000000 --- a/charts/fullstack-deployment/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{- define "fullstack.testLabels" -}} -{{- if .Values.deployment.testMetadata.enabled -}} -{{- with .Values.deployment.testMetadata -}} -fullstack.hedera.com/testSuiteName: "{{ .testSuiteName }}" -fullstack.hedera.com/testName: "{{ .testName }}" -fullstack.hedera.com/testRunUID: "{{ .testRunUID }}" -fullstack.hedera.com/testCreationTimestamp: "{{ .testCreationTimestamp }}" -fullstack.hedera.com/testExpirationTimestamp: "{{ .testExpirationTimestamp }}" -fullstack.hedera.com/testRequester: "{{ .testRequester }}" -{{- end }} -{{- end }} -{{- end }} - -{{- define "fullstack.hedera.security.context" -}} -runAsUser: 2000 -runAsGroup: 2000 -{{- end }} - -{{- define "fullstack.root.security.context" -}} -runAsUser: 0 -runAsGroup: 0 -{{- end }} - -{{- define "fullstack.root.security.context.privileged" -}} -runAsUser: 0 -runAsGroup: 0 -privileged: true -{{- end }} - -{{- define "fullstack.defaultEnvVars" -}} -- name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP -{{- end }} - -{{- define "fullstack.images.pullPolicy" -}} -{{ (.image).pullPolicy | default (((.defaults).root).image).pullPolicy }} -{{- end }} - - -{{- define "fullstack.container.image" -}} -{{- $reg := (.image).registry | default (((.defaults).root).image).registry -}} -{{- $repo := (.image).repository | default (((.defaults).root).image).repository -}} -{{- $tag := default (((.defaults).root).image).tag (.image).tag | default .Chart.AppVersion -}} -{{ $reg }}/{{ $repo }}:{{ $tag }} -{{- end }} - -{{- define "minio.configEnv" -}} -export MINIO_ROOT_USER={{ include "minio.accessKey" . }} -export MINIO_ROOT_PASSWORD={{ include "minio.secretKey" . }} -{{- end -}} - -{{- define "fullstack.volumeClaimTemplate" -}} -- metadata: - name: {{ .name }} - annotations: - helm.sh/resource-policy: keep - labels: - fullstack.hedera.com/type: node-pvc - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: {{ default "2Gi" .storage }} -{{- end -}} - -{{- define "fullstack.volumeTemplate" -}} -- name: {{ .name }} - {{- if .pvcEnabled }} - persistentVolumeClaim: - claimName: {{ .claimName }} - {{- else }} - emptyDir: {} - {{- end }} -{{- end -}} diff --git a/charts/fullstack-deployment/templates/cert-manager/certificate-requests.yaml b/charts/fullstack-deployment/templates/cert-manager/certificate-requests.yaml deleted file mode 100644 index 3291c8abb..000000000 --- a/charts/fullstack-deployment/templates/cert-manager/certificate-requests.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if or $.Values.cloud.selfSignedClusterIssuer.enabled (index $.Values "hedera-explorer" "certClusterIssuerType" | ne "self-signed" ) }} -{{- if index $.Values "hedera-explorer" "enabled" }} -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: ca-secret-hedera-explorer - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -spec: - isCA: false - commonName: {{ index $.Values "hedera-explorer" "ingress" "hosts" 0 "host" }} - dnsNames: - - {{ index $.Values "hedera-explorer" "ingress" "hosts" 0 "host" }} - secretName: ca-secret-hedera-explorer - privateKey: - algorithm: RSA - size: 3072 - issuerRef: - {{- if index .Values "hedera-explorer" "certClusterIssuerType" | eq "self-signed"}} - name: {{ tpl (index .Values "hedera-explorer" "selfSignedCertClusterIssuer") . }} - {{- else if index .Values "hedera-explorer" "certClusterIssuerType" | eq "acme-staging" }} - name: {{ tpl (index .Values "acme-cluster-issuer" "issuers" "staging" "name") . }} - {{- else if index .Values "hedera-explorer" "certClusterIssuerType" | eq "acme-prod" }} - name: {{ tpl (index .Values "acme-cluster-issuer" "issuers" "production" "name") . }} - {{- end }} - kind: ClusterIssuer - group: cert-manager.io -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/cert-manager/cluster-issuer.yaml b/charts/fullstack-deployment/templates/cert-manager/cluster-issuer.yaml deleted file mode 100644 index d58d563f6..000000000 --- a/charts/fullstack-deployment/templates/cert-manager/cluster-issuer.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if $.Values.cloud.selfSignedClusterIssuer.enabled }} -apiVersion: cert-manager.io/v1 -kind: ClusterIssuer -metadata: - name: {{ tpl (index .Values "hedera-explorer" "selfSignedCertClusterIssuer") . }} - namespace: cert-manager - annotations: - helm.sh/hook: post-install - helm.sh/hook-weight: "2" -spec: - selfSigned: {} -{{- end }} diff --git a/charts/fullstack-deployment/templates/configmaps/envoy-cm.yaml b/charts/fullstack-deployment/templates/configmaps/envoy-cm.yaml deleted file mode 100644 index 427447e5f..000000000 --- a/charts/fullstack-deployment/templates/configmaps/envoy-cm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Configmaps for envoy one for each network node -# This will change, we plan to only have envoy for a network node only if specified in the config -{{- range $index, $node := ($.Values.hedera.nodes) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: envoy-proxy-cm-{{ $node.name }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - {{- include "fullstack.testLabels" $ | nindent 4 }} -data: - envoy.yaml: | - {{- tpl ($.Files.Get "config-files/envoy.yaml") (dict "nodeConfig" $node "Template" $.Template) | nindent 4 }} ---- -{{ end }} diff --git a/charts/fullstack-deployment/templates/configmaps/haproxy-cm.yaml b/charts/fullstack-deployment/templates/configmaps/haproxy-cm.yaml deleted file mode 100644 index ec90fbc25..000000000 --- a/charts/fullstack-deployment/templates/configmaps/haproxy-cm.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Create a haproxy configmap for each network node -# This will change in the future, we plan create a haproxy for a given network node only if specified in the config -{{- range $index, $node := ($.Values.hedera.nodes) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: haproxy-cm-{{ $node.name }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - {{- include "fullstack.testLabels" $ | nindent 4 }} -data: - haproxy.cfg: | - {{- tpl ($.Files.Get "config-files/haproxy.cfg") (dict "nodeConfig" $node "namespace" $.Release.Namespace "Template" $.Template) | nindent 4 }} ---- -{{ end }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: haproxy-ofac-cm -data: - ofacBlock.acl: | - {{- .Files.Get "config-files/ofacBlock.acl" | nindent 4 }} diff --git a/charts/fullstack-deployment/templates/configmaps/network-node-data-config-cm.yaml b/charts/fullstack-deployment/templates/configmaps/network-node-data-config-cm.yaml deleted file mode 100644 index 21433e838..000000000 --- a/charts/fullstack-deployment/templates/configmaps/network-node-data-config-cm.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if or $.Values.hedera.configMaps.apiPermissionsProperties $.Values.hedera.configMaps.applicationProperties $.Values.hedera.configMaps.bootstrapProperties }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: network-node-data-config-cm - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - {{- include "fullstack.testLabels" $ | nindent 4 }} -data: -{{- if $.Values.hedera.configMaps.apiPermissionsProperties }} - api-permission.properties: {{ toYaml .Values.hedera.configMaps.apiPermissionsProperties | indent 4 }} -{{- end }} -{{- if $.Values.hedera.configMaps.applicationProperties }} - application.properties: {{ toYaml .Values.hedera.configMaps.applicationProperties | indent 4 }} -{{- end }} -{{- if $.Values.hedera.configMaps.bootstrapProperties }} - bootstrap.properties: {{ toYaml .Values.hedera.configMaps.bootstrapProperties | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/configmaps/network-node-etc-cm.yaml b/charts/fullstack-deployment/templates/configmaps/network-node-etc-cm.yaml deleted file mode 100644 index 4bede9beb..000000000 --- a/charts/fullstack-deployment/templates/configmaps/network-node-etc-cm.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if $.Values.hedera.configMaps.applicationEnv }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: network-node-etc-cm - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - {{- include "fullstack.testLabels" $ | nindent 4 }} -data: -{{- if $.Values.hedera.configMaps.applicationEnv }} - application.env: {{ toYaml .Values.hedera.configMaps.applicationEnv | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/configmaps/network-node-hapi-app-cm.yaml b/charts/fullstack-deployment/templates/configmaps/network-node-hapi-app-cm.yaml deleted file mode 100644 index 5675c9890..000000000 --- a/charts/fullstack-deployment/templates/configmaps/network-node-hapi-app-cm.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if or $.Values.hedera.configMaps.configTxt $.Values.hedera.configMaps.log4j2Xml $.Values.hedera.configMaps.settingsTxt }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: network-node-hapi-app-cm - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - {{- include "fullstack.testLabels" $ | nindent 4 }} -data: -{{- if $.Values.hedera.configMaps.configTxt }} - config.txt: {{ toYaml .Values.hedera.configMaps.configTxt | indent 4 }} -{{- end }} -{{- if $.Values.hedera.configMaps.log4j2Xml }} - log4j2.xml: {{ toYaml .Values.hedera.configMaps.log4j2Xml | indent 4 }} -{{- end }} -{{- if $.Values.hedera.configMaps.settingsTxt }} - settings.txt: {{ toYaml .Values.hedera.configMaps.settingsTxt | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/configmaps/otel-collector-cm.yaml b/charts/fullstack-deployment/templates/configmaps/otel-collector-cm.yaml deleted file mode 100644 index 72e741c06..000000000 --- a/charts/fullstack-deployment/templates/configmaps/otel-collector-cm.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- range $index, $node := ($.Values.hedera.nodes) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: otel-cm-{{ $node.name }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - {{- include "fullstack.testLabels" $ | nindent 4 }} -data: - config.yaml: | - {{- $params := dict "" "" -}} - {{- $_ignore := set $params "otelDefaults" $.Values.defaults.sidecars.otelCollector -}} - {{- $_ignore = set $params "Template" $.Template -}} - {{- $_ignore = set $params "environment_name" $.Release.Namespace -}} - {{- $_ignore = set $params "otel_node_id" $index -}} - {{- $_ignore = set $params "otel_instance_type" "hedera-node" -}} - {{- tpl ( $.Files.Get "config-files/otel-collector-config.yaml" ) $params | nindent 4 }} ---- -{{ end }} diff --git a/charts/fullstack-deployment/templates/configmaps/test-cm.yaml b/charts/fullstack-deployment/templates/configmaps/test-cm.yaml deleted file mode 100644 index af5e05e2a..000000000 --- a/charts/fullstack-deployment/templates/configmaps/test-cm.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: test-cm - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - {{- include "fullstack.testLabels" $ | nindent 4 }} -data: - {{- $total_nodes := len $.Values.hedera.nodes -}} - {{- range $path, $_ := .Files.Glob "tests/*.*" }} - {{ base $path }}: | - {{- tpl ($.Files.Get $path) ( dict "total_nodes" $total_nodes "Template" $.Template ) | nindent 4 }} - {{- end }} diff --git a/charts/fullstack-deployment/templates/ingress/ingress-class.yaml b/charts/fullstack-deployment/templates/ingress/ingress-class.yaml deleted file mode 100644 index 8c7b934fa..000000000 --- a/charts/fullstack-deployment/templates/ingress/ingress-class.yaml +++ /dev/null @@ -1,8 +0,0 @@ -{{- if $.Values.cloud.haproxyIngressController.enabled }} -apiVersion: networking.k8s.io/v1 -kind: IngressClass -metadata: - name: {{ .Values.global.ingressClassName }} -spec: - controller: haproxy-ingress.github.io/controller -{{- end }} diff --git a/charts/fullstack-deployment/templates/network-node-statefulset.yaml b/charts/fullstack-deployment/templates/network-node-statefulset.yaml deleted file mode 100644 index cde44086a..000000000 --- a/charts/fullstack-deployment/templates/network-node-statefulset.yaml +++ /dev/null @@ -1,562 +0,0 @@ -{{ range $index, $node := $.Values.hedera.nodes }} -{{- $hapiAppSecrets := lookup "v1" "Secret" $.Release.Namespace "network-node-hapi-app-secrets" }} -{{- $networkNodeKeySecretName := (printf "network-%s-keys-secrets" $node.name) }} -{{- $networkNodeKeySecrets := lookup "v1" "Secret" $.Release.Namespace $networkNodeKeySecretName }} -{{- $root := $node.root | default $.Values.defaults.root -}} -{{- $rootExtraEnv := ($root).extraEnv | default $.Values.defaults.root.extraEnv -}} -{{- $rootImage := ($node.root).image | default $.Values.defaults.root.image -}} -{{- $recordStream := ($node.sidecars).recordStreamUploader | default $.Values.defaults.sidecars.recordStreamUploader -}} -{{- $recordStreamSidecar := ($node.sidecars).recordStreamSidecarUploader | default $.Values.defaults.sidecars.recordStreamSidecarUploader -}} -{{- $eventStream := ($node.sidecars).eventStreamUploader | default $.Values.defaults.sidecars.eventStreamUploader -}} -{{- $balanceUploader := ($node.sidecars).accountBalanceUploader | default $.Values.defaults.sidecars.accountBalanceUploader -}} -{{- $backupUploader := ($node.sidecars).backupUploader | default $.Values.defaults.sidecars.backupUploader -}} -{{- $otelCollector := ($node.sidecars).otelCollector | default $.Values.defaults.sidecars.otelCollector -}} -{{- $cloud := $.Values.cloud }} -{{- $defaults := $.Values.defaults }} -{{- $minioserver := (index $.Values "minio-server") }} -{{- $nodeStorage := $.Values.defaults.volumeClaims.node }} -{{- $pvcEnabled := $.Values.defaults.volumeClaims.enabled }} -{{- $initContainersLength := len $.Values.hedera.initContainers}} ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: network-{{ $node.name }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - app: network-{{ $node.name }} - {{- if $.Values.deployment.podLabels }} - {{- $.Values.deployment.podLabels | toYaml | nindent 4 }} - {{- end }} - {{- if $.Values.deployment.podAnnotations }} - annotations: - {{- $.Values.deployment.podAnnotations | toYaml | nindent 4 }} - {{- end }} -spec: - replicas: 1 - serviceName: "network-{{ $node.name }}" - selector: - matchLabels: - app: network-{{ $node.name }} - {{- if $pvcEnabled }} - volumeClaimTemplates: - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-account-balances-pvc" "storage" $nodeStorage.accountBalances) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-event-streams-pvc" "storage" $nodeStorage.eventStreams) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-record-streams-pvc" "storage" $nodeStorage.recordStreams) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-record-streams-sidecar-pvc" "storage" $nodeStorage.recordStreamsSidecar) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-data-onboard-pvc" "storage" $nodeStorage.dataOnboard) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-data-saved-pvc" "storage" $nodeStorage.dataSaved) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-data-stats-pvc" "storage" $nodeStorage.dataStats) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-data-upgrade-pvc" "storage" $nodeStorage.dataUpgrade) | nindent 4 }} - {{ include "fullstack.volumeClaimTemplate" (dict "name" "hgcapp-output-pvc" "storage" $nodeStorage.output) | nindent 4 }} - {{- end }} - template: - metadata: - labels: - app: network-{{ $node.name }} - fullstack.hedera.com/type: network-node - fullstack.hedera.com/node-name: {{ $node.name }} - fullstack.hedera.com/account-id: {{ $node.accountId }} - {{- include "fullstack.testLabels" $ | nindent 8 }} - spec: - {{- if $.Values.deployment.nodeSelector }} - nodeSelector: - {{- $.Values.deployment.nodeSelector | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.tolerations }} - tolerations: - {{- $.Values.deployment.tolerations | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.affinity }} - affinity: - {{- $.Values.deployment.affinity | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.priorityClassName }} - priorityClassName: {{ $.Values.deployment.priorityClassName }} - {{- end }} - terminationGracePeriodSeconds: {{ $.Values.terminationGracePeriodSeconds }} - volumes: - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-account-balances" "claimName" (printf "%s-%s-%s" "hgcapp-account-balances-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-event-streams" "claimName" (printf "%s-%s-%s" "hgcapp-event-streams-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-record-streams" "claimName" (printf "%s-%s-%s" "hgcapp-record-streams-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-record-streams-sidecar" "claimName" (printf "%s-%s-%s" "hgcapp-record-streams-sidecar-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-data-onboard" "claimName" (printf "%s-%s-%s" "hgcapp-data-onboard-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-data-saved" "claimName" (printf "%s-%s-%s" "hgcapp-data-saved-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-data-stats" "claimName" (printf "%s-%s-%s" "hgcapp-data-stats-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-data-upgrade" "claimName" (printf "%s-%s-%s" "hgcapp-data-upgrade-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{ include "fullstack.volumeTemplate" (dict "name" "hgcapp-output" "claimName" (printf "%s-%s-%s" "hgcapp-output-pvc-network" $node.name "0") "pvcEnabled" $pvcEnabled ) | nindent 8 }} - {{- if $otelCollector.enabled }} - - name: otel-collector-volume - configMap: - name: otel-cm-{{ $node.name }} - {{- end }} - - name: network-node-data-config - configMap: - name: network-node-data-config-cm - optional: true - - name: network-node-etc - configMap: - name: network-node-etc-cm - optional: true - items: - - key: application.env - path: application.env - - name: network-node-hapi-app-config-txt - configMap: - name: network-node-hapi-app-cm - optional: true - items: - - key: config.txt - path: config.txt - {{- if $hapiAppSecrets }} - - name: network-node-hapi-app-hedera-crt - secret: - secretName: network-node-hapi-app-secrets - optional: true - items: - - key: hedera-{{ $node.name }}.crt - path: hedera.crt - - name: network-node-hapi-app-hedera-key - secret: - secretName: network-node-hapi-app-secrets - optional: true - items: - - key: hedera-{{ $node.name }}.key - path: hedera.key - {{- end }} - - name: network-node-hapi-app-log4j2-xml - configMap: - name: network-node-hapi-app-cm - optional: true - items: - - key: log4j2.xml - path: log4j2.xml - - name: network-node-hapi-app-settings-txt - configMap: - name: network-node-hapi-app-cm - optional: true - items: - - key: settings.txt - path: settings.txt - {{- if $networkNodeKeySecrets }} - - name: network-node-keys - secret: # TODO pem vs pfx - secretName: {{ $networkNodeKeySecretName }} - optional: true - {{- end }} - containers: - # Root Container: {{ $node.name }}-root-container - - name: {{ $root.nameOverride | default "root-container" }} - image: {{ include "fullstack.container.image" (dict "image" $rootImage "Chart" $.Chart "defaults" $.Values.defaults) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $rootImage "defaults" $.Values.defaults) }} - securityContext: # need to run as root with privileged mode - {{- include "fullstack.root.security.context.privileged" . | nindent 10 }} - {{- with default $defaults.root.resources $node.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} - volumeMounts: - {{- if $.Values.hedera.configMaps.applicationEnv }} - - name: network-node-etc - mountPath: /etc/network-node/application.env - subPath: application.env - {{- end }} - - name: hgcapp-account-balances - mountPath: /opt/hgcapp/accountBalances - - name: hgcapp-event-streams - mountPath: /opt/hgcapp/eventsStreams - - name: hgcapp-record-streams - mountPath: /opt/hgcapp/recordStreams - - name: hgcapp-record-streams-sidecar - mountPath: /opt/hgcapp/recordStreams/sidecar - {{- if $.Values.hedera.configMaps.configTxt }} - - name: network-node-hapi-app-config-txt - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/config.txt - subPath: config.txt - {{- end }} - {{- if $hapiAppSecrets }} - - name: network-node-hapi-app-hedera-crt - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/hedera.crt - subPath: hedera.crt - - name: network-node-hapi-app-hedera-key - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/hedera.key - subPath: hedera.key - {{- end }} - {{- if $.Values.hedera.configMaps.log4j2Xml }} - - name: network-node-hapi-app-log4j2-xml - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/log4j2.xml - subPath: log4j2.xml - {{- end }} - {{- if $.Values.hedera.configMaps.settingsTxt }} - - name: network-node-hapi-app-settings-txt - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/settings.txt - subPath: settings.txt - {{- end }} - {{- if or $.Values.hedera.configMaps.apiPermissionsProperties $.Values.hedera.configMaps.applicationProperties $.Values.hedera.configMaps.bootstrapProperties }} - - name: network-node-data-config - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/config - {{- end }} - {{- if $networkNodeKeySecrets }} - - name: network-node-keys - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/keys - {{- end }} - - name: hgcapp-data-onboard - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/onboard - - name: hgcapp-data-saved - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/saved - - name: hgcapp-data-stats - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/stats - - name: hgcapp-data-upgrade - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/upgrade - - name: hgcapp-output - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/output - env: - {{- include "fullstack.defaultEnvVars" . | nindent 10 }} - {{- with $rootExtraEnv }} - {{- toYaml . | nindent 10 }} - {{- end }} - {{- if $balanceUploader.enabled }} - # Sidecar: {{ $node.name }}-account-balance-uploader - - name: {{ default "account-balance-uploader" $balanceUploader.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $balanceUploader.image "Chart" $.Chart "defaults" $defaults.sidecars.accountBalanceUploader ) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $balanceUploader.image "defaults" $defaults.sidecars.accountBalanceUploader ) }} - securityContext: - {{- include "fullstack.hedera.security.context" . | nindent 10 }} - command: - - /usr/bin/env - - python3.7 - - /usr/local/bin/mirror.py - - --linux - - --watch-directory - - /opt/hgcapp/accountBalances - - --s3-endpoint - - "http://{{ $minioserver.tenant.name }}-hl:9000" - volumeMounts: - - name: hgcapp-account-balances - mountPath: /opt/hgcapp/accountBalances - subPath: balance_{{ $node.accountId }} - env: - - name: DEBUG - value: {{ default $defaults.sidecars.accountBalanceUploader.config.debug ($balanceUploader.config).debug | quote }} - - name: REAPER_ENABLE - value: {{ default $defaults.sidecars.accountBalanceUploader.config.reaper.enabled (($balanceUploader.config).reaper).enabled | quote }} - - name: REAPER_MIN_KEEP - value: {{ default $defaults.sidecars.accountBalanceUploader.config.reaper.minKeep (($balanceUploader.config).reaper).minKeep | quote }} - - name: REAPER_INTERVAL - value: {{ default $defaults.sidecars.accountBalanceUploader.config.reaper.interval (($balanceUploader.config).reaper).interval | quote }} - - name: REAPER_DEFAULT_BACKOFF - value: {{ default $defaults.sidecars.accountBalanceUploader.config.reaper.defaultBackoff (($balanceUploader.config).reaper).defaultBackoff | quote }} - - name: STREAM_FILE_EXTENSION - value: "pb" - - name: STREAM_SIG_EXTENSION - value: "pb_sig" - - name: STREAM_EXTENSION - value: {{ default $defaults.sidecars.accountBalanceUploader.config.compression ($balanceUploader.config).compression | ternary "pb.gz" "pb" | quote }} - - name: SIG_EXTENSION - value: {{ default $defaults.sidecars.accountBalanceUploader.config.compression ($balanceUploader.config).compression | ternary "pb_sig.gz" "pb_sig" | quote }} - - name: SIG_REQUIRE - value: {{ default $defaults.sidecars.accountBalanceUploader.config.signature.require (($balanceUploader.config).signature).require | quote }} - - name: SIG_PRIORITIZE - value: {{ default $defaults.sidecars.accountBalanceUploader.config.signature.prioritize (($balanceUploader.config).signature).prioritize | quote }} - - name: BUCKET_PATH - value: "accountBalances/balance{{ $node.accountId }}" - - name: BUCKET_NAME - value: {{ $cloud.buckets.streamBucket | quote }} - - name: S3_ENABLE - value: "true" - - name: GCS_ENABLE - value: "false" - envFrom: - - secretRef: - name: uploader-mirror-secrets - {{- with default $defaults.sidecars.accountBalanceUploader.resources $balanceUploader.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- end }} - {{- if $recordStream.enabled }} - # Sidecar: {{ $node.name }}-record-stream-uploader - - name: {{ default "record-stream-uploader" $recordStream.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $recordStream.image "Chart" $.Chart "defaults" $defaults.sidecars.recordStreamUploader) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $recordStream.image "defaults" $defaults.sidecars.recordStreamUploader) }} - securityContext: - {{- include "fullstack.hedera.security.context" . | nindent 10 }} - command: - - /usr/bin/env - - python3.7 - - /usr/local/bin/mirror.py - - --linux - - --watch-directory - - /opt/hgcapp/recordStreams - - --csv-stats-directory - - /opt/hgcapp/recordStreams/uploader-stats - - --s3-endpoint - - http://{{ $minioserver.tenant.name }}-hl:9000 - volumeMounts: - - name: hgcapp-record-streams - mountPath: /opt/hgcapp/recordStreams - subPath: record{{ $node.accountId }} - env: - - name: DEBUG - value: {{ default $defaults.sidecars.recordStreamUploader.config.debug ($recordStream.config).debug | quote }} - - name: REAPER_ENABLE - value: {{ default $defaults.sidecars.recordStreamUploader.config.reaper.enabled (($recordStream.config).reaper).enabled | quote }} - - name: REAPER_MIN_KEEP - value: {{ default $defaults.sidecars.recordStreamUploader.config.reaper.minKeep (($recordStream.config).reaper).minKeep | quote }} - - name: REAPER_INTERVAL - value: {{ default $defaults.sidecars.recordStreamUploader.config.reaper.interval (($recordStream.config).reaper).interval | quote }} - - name: REAPER_DEFAULT_BACKOFF - value: {{ default $defaults.sidecars.recordStreamUploader.config.reaper.defaultBackoff (($recordStream.config).reaper).defaultBackoff | quote }} - - name: STREAM_FILE_EXTENSION - value: "rcd" - - name: STREAM_SIG_EXTENSION - value: "rcd_sig" - - name: STREAM_EXTENSION - value: {{ default $defaults.sidecars.recordStreamUploader.config.compression ($recordStream.config).compression | ternary "rcd.gz" "rcd" | quote }} - - name: SIG_EXTENSION - value: "rcd_sig" - - name: RECORD_STREAM_COMPRESSION - value: {{ default $defaults.sidecars.recordStreamUploader.config.compression ($recordStream.config).compression | quote }} - - name: RECORD_STREAM_SIDECAR - value: {{ default $defaults.sidecars.recordStreamUploader.config.sidecar ($recordStream.config).sidecar | quote }} - - name: SIG_REQUIRE - value: {{ default $defaults.sidecars.recordStreamUploader.config.signature.require (($recordStream.config).signature).require | quote }} - - name: SIG_PRIORITIZE - value: {{ default $defaults.sidecars.recordStreamUploader.config.signature.prioritize (($recordStream.config).signature).prioritize | quote }} - - name: BUCKET_PATH - value: "recordstreams/record{{ $node.accountId }}" - - name: BUCKET_NAME - value: {{ $cloud.buckets.streamBucket | quote }} - - name: S3_ENABLE - value: "true" - - name: GCS_ENABLE - value: "false" - envFrom: - - secretRef: - name: uploader-mirror-secrets - {{- with default $defaults.sidecars.recordStreamUploader.resources $recordStream.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- end }} - {{- if $recordStreamSidecar.enabled }} - - name: {{ default "record-stream-sidecar-uploader" $recordStreamSidecar.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $recordStreamSidecar.image "Chart" $.Chart "defaults" $defaults.sidecars.recordStreamSidecarUploader) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $recordStreamSidecar.image "defaults" $defaults.sidecars.recordStreamSidecarUploader) }} - securityContext: - {{- include "fullstack.hedera.security.context" . | nindent 10 }} - command: - - /usr/bin/env - - python3.7 - - /usr/local/bin/mirror.py - - --linux - - --watch-directory - - /opt/hgcapp/recordStreams/sidecar - - --s3-endpoint - - http://{{ $minioserver.tenant.name }}-hl:9000 - volumeMounts: - - name: hgcapp-record-streams - mountPath: /opt/hgcapp/recordStreams - subPath: record{{ $node.accountId }} - env: - - name: DEBUG - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.debug ($recordStreamSidecar.config).debug | quote }} - - name: REAPER_ENABLE - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.reaper.enabled (($recordStreamSidecar.config).reaper).enabled | quote }} - - name: REAPER_MIN_KEEP - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.reaper.minKeep (($recordStreamSidecar.config).reaper).minKeep | quote }} - - name: REAPER_INTERVAL - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.reaper.interval (($recordStreamSidecar.config).reaper).interval | quote }} - - name: REAPER_DEFAULT_BACKOFF - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.reaper.defaultBackoff (($recordStreamSidecar.config).reaper).defaultBackoff | quote }} - - name: STREAM_FILE_EXTENSION - value: "rcd" - - name: STREAM_SIG_EXTENSION - value: "rcd_sig" - - name: STREAM_EXTENSION - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.compression ($recordStreamSidecar.config).compression | ternary "rcd.gz" "rcd" | quote }} - - name: SIG_EXTENSION - value: "rcd_sig" - - name: RECORD_STREAM_COMPRESSION - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.compression ($recordStreamSidecar.config).compression | quote }} - - name: RECORD_STREAM_SIDECAR - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.sidecar ($recordStreamSidecar.config).sidecar | quote }} - - name: SIG_REQUIRE - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.signature.require (($recordStreamSidecar.config).signature).require | quote }} - - name: SIG_PRIORITIZE - value: {{ default $defaults.sidecars.recordStreamSidecarUploader.config.signature.prioritize (($recordStreamSidecar.config).signature).prioritize | quote }} - - name: BUCKET_PATH - value: "recordstreams/record{{ $node.accountId }}/sidecar" - - name: BUCKET_NAME - value: {{ $cloud.buckets.streamBucket | quote }} - - name: S3_ENABLE - value: "true" - - name: GCS_ENABLE - value: "false" - envFrom: - - secretRef: - name: uploader-mirror-secrets - {{- with default $defaults.sidecars.recordStreamSidecarUploader.resources $recordStreamSidecar.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- end }} - {{- if $eventStream.enabled }} - # Sidecar: {{ $node.name }}-event-stream-uploader - - name: {{ default "event-stream-uploader" $eventStream.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $eventStream.image "Chart" $.Chart "defaults" $defaults.sidecars.eventStreamUploader) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $eventStream.image "defaults" $defaults.sidecars.eventStreamUploader) }} - securityContext: - {{- include "fullstack.hedera.security.context" . | nindent 10 }} - command: - - /usr/bin/env - - python3.7 - - /usr/local/bin/mirror.py - - --linux - - --watch-directory - - /opt/hgcapp/eventStreams - - --debug - - --s3-endpoint - - http://{{ $minioserver.tenant.name }}-hl:9000 - volumeMounts: - - name: hgcapp-event-streams - mountPath: /opt/hgcapp/eventStreams - subPath: events_{{ $node.accountId }} - env: - - name: DEBUG - value: {{ default $defaults.sidecars.eventStreamUploader.config.debug ($eventStream.config).debug | quote}} - - name: REAPER_ENABLE - value: {{ default $defaults.sidecars.eventStreamUploader.config.reaper.enabled (($eventStream.config).reaper).enabled | quote }} - - name: REAPER_MIN_KEEP - value: {{ default $defaults.sidecars.eventStreamUploader.config.reaper.minKeep (($eventStream.config).reaper).minKeep | quote }} - - name: REAPER_INTERVAL - value: {{ default $defaults.sidecars.eventStreamUploader.config.reaper.interval (($eventStream.config).reaper).interval | quote }} - - name: REAPER_DEFAULT_BACKOFF - value: {{ default $defaults.sidecars.eventStreamUploader.config.reaper.defaultBackoff (($eventStream.config).reaper).defaultBackoff | quote }} - - name: STREAM_FILE_EXTENSION - value: "evts" - - name: STREAM_SIG_EXTENSION - value: "evts_sig" - - name: STREAM_EXTENSION - value: "evts" - - name: SIG_EXTENSION - value: "evts_sig" - - name: SIG_REQUIRE - value: {{ default $defaults.sidecars.eventStreamUploader.config.signature.require (($eventStream.config).signature).require | quote }} - - name: SIG_PRIORITIZE - value: {{ default $defaults.sidecars.eventStreamUploader.config.signature.prioritize (($eventStream.config).signature).prioritize | quote }} - - name: BUCKET_PATH - value: "eventsStreams/events_{{ $node.accountId }}" - - name: BUCKET_NAME - value: {{ $cloud.buckets.streamBucket | quote }} - - name: S3_ENABLE - value: "true" - - name: GCS_ENABLE - value: "false" - envFrom: - - secretRef: - name: uploader-mirror-secrets - {{- with default $defaults.sidecars.eventStreamUploader.resources $eventStream.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- end }} - {{- if $backupUploader.enabled }} - # Sidecar: {{ $node.name }}-backup-uploader - - name: {{ default "backup-uploader" $backupUploader.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $backupUploader.image "Chart" $.Chart "defaults" $defaults.sidecars.backupUploader) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $backupUploader.image "defaults" $defaults.sidecars.backupUploader ) }} - securityContext: - {{- include "fullstack.hedera.security.context" . | nindent 10 }} - volumeMounts: - - name: hgcapp-data-saved - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/saved - - name: hgcapp-data-stats - mountPath: /opt/hgcapp/services-hedera/HapiApp2.0/data/stats - env: - - name: BACKUP_UPLOADER_BUCKET_1 - value: {{ default $defaults.sidecars.backupUploader.config.backupBucket ($backupUploader.config).backupBucket | quote }} - envFrom: - - secretRef: - name: backup-uploader-secrets - {{- with default $defaults.sidecars.backupUploader.resources $backupUploader.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- end }} - {{- if $otelCollector.enabled }} - # Sidecar: {{ $node.name }}-otel-collector - - name: {{ default "otel-collector" $otelCollector.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $otelCollector.image "Chart" $.Chart "defaults" $defaults.sidecars.otelCollector) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $otelCollector.image "defaults" $defaults.sidecars.otelCollector) }} - securityContext: - {{- include "fullstack.root.security.context" . | nindent 10 }} - ports: - - name: otlp # otel port defined in otel-collector config - containerPort: 4317 - protocol: TCP - - name: prometheus - containerPort: 9090 - protocol: TCP - - name: health # for otel-collector liveness check - containerPort: 13133 - protocol: TCP - - name: metrics # default metrics port exposed by the otel-collector itself - containerPort: 8888 - protocol: TCP - livenessProbe: - httpGet: - path: / - port: health - readinessProbe: - httpGet: - path: / - port: health - volumeMounts: - - name: otel-collector-volume - mountPath: /etc/otelcol-contrib/config.yaml - subPath: config.yaml #key in the configmap - readOnly: true - {{- with default $defaults.sidecars.otelCollector.resources $otelCollector.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- end }} - initContainers: - - name: init-record-streams-directories - image: busybox:1.36.1 - command: - - "/bin/sh" - - "-c" - - | - mkdir -p /opt/hgcapp/recordStreams/sidecar - chmod 777 /opt/hgcapp/recordStreams/sidecar - volumeMounts: - - name: hgcapp-record-streams - mountPath: /opt/hgcapp/recordStreams - subPath: record{{ $node.accountId }} - - name: init-hedera - image: curlimages/curl:8.9.1 - command: - - "sh" - - "-c" - - | - loop=1 - while [ "$loop" -ne 0 ]; do - loop=0; - {{- range $index, $node := $.Values.hedera.nodes }} - nslookup network-{{ $node.name }}-0.network-{{ $node.name }}.{{ default $.Release.Namespace $.Values.global.namespaceOverride }}.svc.cluster.local; - rc=$?; - if [ "$loop" -eq 0 -a "$rc" -eq 0 ]; then - loop=0; - else - loop=1; - fi - {{- end }} - sleep 5; - done - return 0 - {{- if gt $initContainersLength 0 }} - {{- toYaml $.Values.hedera.initContainers | nindent 8 }} - {{- end }} -{{ end }} diff --git a/charts/fullstack-deployment/templates/pdb.yaml b/charts/fullstack-deployment/templates/pdb.yaml deleted file mode 100644 index 643b1f170..000000000 --- a/charts/fullstack-deployment/templates/pdb.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if $.Values.deployment.podDisruptionBudget.create }} -{{ range $index, $node := $.Values.hedera.nodes }} ---- -apiVersion: policy/v1 -kind: PodDisruptionBudget -metadata: - name: network-node-pdb-{{ $node.name }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - fullstack.hedera.com/type: pod-disruption-budget - fullstack.hedera.com/node-name: {{ $node.name }} -spec: - selector: - matchLabels: - fullstack.hedera.com/type: network-node - fullstack.hedera.com/node-name: {{ $node.name }} - {{- if $.Values.deployment.podDisruptionBudget.minAvailable }} - minAvailable: {{ $.Values.deployment.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if $.Values.deployment.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ $.Values.deployment.podDisruptionBudget.maxUnavailable }} - {{- end }} -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/proxy/envoy-deployment.yaml b/charts/fullstack-deployment/templates/proxy/envoy-deployment.yaml deleted file mode 100644 index c617d9741..000000000 --- a/charts/fullstack-deployment/templates/proxy/envoy-deployment.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{ range $index, $node := ($.Values.hedera.nodes) }} -{{- $envoyProxy := $node.envoyProxy | default $.Values.defaults.envoyProxy -}} -{{- $defaults := $.Values.defaults.envoyProxy }} -{{- if $envoyProxy.enabled }} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: envoy-proxy-{{ $node.name }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -spec: - replicas: 1 - selector: - matchLabels: - app: envoy-proxy-{{ $node.name }} - template: - metadata: - labels: - app: envoy-proxy-{{ $node.name }} - fullstack.hedera.com/type: envoy-proxy - {{- include "fullstack.testLabels" $ | nindent 8 }} - spec: - {{- if $.Values.deployment.nodeSelector }} - nodeSelector: - {{- $.Values.deployment.nodeSelector | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.tolerations }} - tolerations: - {{- $.Values.deployment.tolerations | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.affinity }} - affinity: - {{- $.Values.deployment.affinity | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.priorityClassName }} - priorityClassName: {{ $.Values.deployment.priorityClassName }} - {{- end }} - terminationGracePeriodSeconds: {{ $.Values.terminationGracePeriodSeconds }} - volumes: - - name: config-volume - configMap: - name: envoy-proxy-cm-{{ $node.name }} - containers: - - name: {{ default $defaults.nameOverride $envoyProxy.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $envoyProxy.image "Chart" $.Chart "defaults" $defaults ) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $envoyProxy.image "defaults" $defaults) }} - volumeMounts: - - name: config-volume - # https://www.envoyproxy.io/docs/envoy/v1.26.2/start/docker - mountPath: /etc/envoy - {{- with default $defaults.resources $envoyProxy.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/proxy/haproxy-deployment.yaml b/charts/fullstack-deployment/templates/proxy/haproxy-deployment.yaml deleted file mode 100644 index 2e8077a90..000000000 --- a/charts/fullstack-deployment/templates/proxy/haproxy-deployment.yaml +++ /dev/null @@ -1,112 +0,0 @@ -{{ range $index, $node := ($.Values.hedera.nodes) }} -{{- $haproxy := $node.haproxy | default $.Values.defaults.haproxy -}} -{{- $defaults := $.Values.defaults.haproxy }} -{{- if $haproxy.enabled }} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: haproxy-{{ $node.name }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -spec: - replicas: 1 - selector: - matchLabels: - app: haproxy-{{ $node.name }} - template: - metadata: - labels: - app: haproxy-{{ $node.name }} - fullstack.hedera.com/type: haproxy - {{- include "fullstack.testLabels" $ | nindent 8 }} - spec: - {{- if $.Values.deployment.nodeSelector }} - nodeSelector: - {{- $.Values.deployment.nodeSelector | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.tolerations }} - tolerations: - {{- $.Values.deployment.tolerations | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.affinity }} - affinity: - {{- $.Values.deployment.affinity | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.priorityClassName }} - priorityClassName: {{ $.Values.deployment.priorityClassName }} - {{- end }} - terminationGracePeriodSeconds: {{ $.Values.terminationGracePeriodSeconds }} - volumes: - - name: haproxy-config-volume - emptyDir: {} - - name: haproxy-configmap-volume - configMap: - name: haproxy-cm-{{ $node.name }} - - name: haproxy-ofac-volume - configMap: - name: haproxy-ofac-cm - containers: - - name: {{ default $defaults.nameOverride $haproxy.nameOverride }} - image: {{ include "fullstack.container.image" (dict "image" $haproxy.image "Chart" $.Chart "defaults" $defaults ) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $haproxy.image "defaults" $defaults ) }} - envFrom: - - secretRef: - name: haproxy-secrets - livenessProbe: - exec: - command: - - "/bin/sh" - - "-c" - - | - rm -f livenessProbe.json || true - wget -q -O livenessProbe.json --header 'content-type: application/json' http://dataplane:${HAPROXY_PASSWORD}@0.0.0.0:5555/v2/services/haproxy/stats/native?type=backend || return 1 - readinessProbe: - exec: - command: - - "/bin/sh" - - "-c" - - | - rm -f readinessProbe.json || true - wget -q -O readinessProbe.json --header 'content-type: application/json' http://dataplane:${HAPROXY_PASSWORD}@0.0.0.0:5555/v2/services/haproxy/stats/native?type=backend || return 1 - startupProbe: - exec: - command: - - "/bin/sh" - - "-c" - - | - jq_check() { - jq --version > /dev/null 2>&1 && return - echo "jq not found, installing jq" - apk add jq || return 1 - } - probe() { - jq_check || return 1 - wget -q -O response.json --header 'content-type: application/json' http://dataplane:${HAPROXY_PASSWORD}@0.0.0.0:5555/v2/services/haproxy/stats/native?type=backend || return 1 - BACKEND_STATUS=$(jq -r '.[] | .stats[] | select(.name == "http_backend") | .stats.status' < response.json) - echo "http_backend status: $BACKEND_STATUS" - if [ "$BACKEND_STATUS" = "UP" ]; then - return 0 - else - return 1 - fi - } - probe - initialDelaySeconds: 60 - periodSeconds: 5 - failureThreshold: 720 - volumeMounts: - - name: haproxy-config-volume - # https://hub.docker.com/_/haproxy/ - mountPath: /usr/local/etc/haproxy - - name: haproxy-configmap-volume - # https://hub.docker.com/_/haproxy/ - mountPath: /usr/local/etc/haproxy/haproxy.cfg - subPath: haproxy.cfg - - name: haproxy-ofac-volume - mountPath: /var/opt/ - {{- with default $defaults.resources $haproxy.resources }} - resources: - {{- toYaml . | nindent 10 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/rbac/pod-monitor.yaml b/charts/fullstack-deployment/templates/rbac/pod-monitor.yaml deleted file mode 100644 index 31c56d0c6..000000000 --- a/charts/fullstack-deployment/templates/rbac/pod-monitor.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if $.Values.tester.deployPodMonitor }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: pod-monitor - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: pod-monitor-role-binding - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -subjects: - - kind: ServiceAccount - name: pod-monitor - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -roleRef: - kind: ClusterRole - name: {{ $.Values.tester.clusterRoleName }} - apiGroup: rbac.authorization.k8s.io -{{- end }} diff --git a/charts/fullstack-deployment/templates/secrets/backup-uploder-secrets.yaml b/charts/fullstack-deployment/templates/secrets/backup-uploder-secrets.yaml deleted file mode 100644 index 04f14dae7..000000000 --- a/charts/fullstack-deployment/templates/secrets/backup-uploder-secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: backup-uploader-secrets - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -type: Opaque -data: - S3_ACCESS_KEY: "" - S3_SECRET_KEY: "" - GCS_ACCESS_KEY: "" - GCS_SECRET_KEY: "" diff --git a/charts/fullstack-deployment/templates/secrets/haproxy-secrets.yaml b/charts/fullstack-deployment/templates/secrets/haproxy-secrets.yaml deleted file mode 100644 index 8ec19b459..000000000 --- a/charts/fullstack-deployment/templates/secrets/haproxy-secrets.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- $namespace := default $.Release.Namespace $.Values.global.namespaceOverride }} -{{- $previous := lookup "v1" "Secret" $namespace "haproxy-secrets" }} -apiVersion: v1 -kind: Secret -metadata: - name: haproxy-secrets - namespace: {{ $namespace }} -type: Opaque -stringData: -{{- if ((($previous).data).HAPROXY_USERNAME) }} - HAPROXY_USERNAME: {{ b64dec $previous.data.HAPROXY_USERNAME }} -{{- else }} - HAPROXY_USERNAME: {{ randAlpha 7 }} -{{- end }} -{{- if ((($previous).data).HAPROXY_PASSWORD) }} - HAPROXY_PASSWORD: {{ b64dec $previous.data.HAPROXY_PASSWORD }} -{{- else }} - HAPROXY_PASSWORD: {{ randAlpha 10 }} -{{- end }} ---- diff --git a/charts/fullstack-deployment/templates/secrets/otel-collector-secrets.yaml b/charts/fullstack-deployment/templates/secrets/otel-collector-secrets.yaml deleted file mode 100644 index 13e65c2f2..000000000 --- a/charts/fullstack-deployment/templates/secrets/otel-collector-secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: otel-collector-secrets - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -type: Opaque -data: - S3_ACCESS_KEY: "" - S3_SECRET_KEY: "" - GCS_ACCESS_KEY: "" - GCS_SECRET_KEY: "" diff --git a/charts/fullstack-deployment/templates/secrets/uploader-mirror-secrets.yaml b/charts/fullstack-deployment/templates/secrets/uploader-mirror-secrets.yaml deleted file mode 100644 index 8bd67bb47..000000000 --- a/charts/fullstack-deployment/templates/secrets/uploader-mirror-secrets.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- $previous := lookup "v1" "Secret" .Release.Namespace "uploader-mirror-secrets" }} -{{- $minio_accessKey := randAlpha 10 -}} -{{- $minio_secretKey := randAlpha 10 -}} -{{- $minio_config_env := printf "export MINIO_ROOT_USER=%s\nexport MINIO_ROOT_PASSWORD=%s" (coalesce ((($previous).data).S3_ACCESS_KEY) $minio_accessKey) (coalesce ((($previous).data).S3_SECRET_KEY) $minio_secretKey) -}} -{{- $minio_url := printf "http://%s-hl:9000" (index $.Values "minio-server" "tenant" "name") -}} -apiVersion: v1 -kind: Secret -metadata: - name: minio-secrets - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} -type: Opaque -data: - config.env: {{ $minio_config_env | b64enc }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: uploader-mirror-secrets -type: Opaque -data: - S3_ACCESS_KEY: {{ coalesce ((($previous).data).S3_ACCESS_KEY) ($minio_accessKey | b64enc) }} - S3_SECRET_KEY: {{ coalesce ((($previous).data).S3_SECRET_KEY) ($minio_secretKey | b64enc) }} - # The below keys will be ignored by the uploader side cars - # These will be used by mirror node to connect to minio - HEDERA_MIRROR_IMPORTER_DOWNLOADER_SOURCES_0_TYPE: {{ "S3" | b64enc }} - HEDERA_MIRROR_IMPORTER_DOWNLOADER_SOURCES_0_URI: {{ $minio_url |b64enc }} - HEDERA_MIRROR_IMPORTER_DOWNLOADER_SOURCES_0_CREDENTIALS_ACCESSKEY: {{ coalesce ((($previous).data).S3_ACCESS_KEY) ($minio_accessKey | b64enc) }} - HEDERA_MIRROR_IMPORTER_DOWNLOADER_SOURCES_0_CREDENTIALS_SECRETKEY: {{ coalesce ((($previous).data).S3_SECRET_KEY) ($minio_secretKey | b64enc) }} ---- diff --git a/charts/fullstack-deployment/templates/services/envoy-svc.yaml b/charts/fullstack-deployment/templates/services/envoy-svc.yaml deleted file mode 100644 index d6ebf6ef3..000000000 --- a/charts/fullstack-deployment/templates/services/envoy-svc.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{ range $index, $node := ($.Values.hedera.nodes) }} -{{- $envoyProxy := $node.envoyProxy | default $.Values.defaults.envoyProxy -}} -{{- $defaults := $.Values.defaults.envoyProxy }} -{{- if $envoyProxy.enabled }} ---- -apiVersion: v1 -kind: Service -metadata: - name: envoy-proxy-{{ $node.name }}-svc - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - fullstack.hedera.com/type: envoy-proxy-svc - fullstack.hedera.com/node-name: {{ $node.name }} - fullstack.hedera.com/account-id: {{ $node.accountId }} - fullstack.hedera.com/prometheus-endpoint: active - {{- include "fullstack.testLabels" $ | nindent 4 }} -spec: - {{- if $envoyProxy.loadBalancerEnabled }} - type: LoadBalancer - externalTrafficPolicy: Local - {{- end }} - selector: - app: envoy-proxy-{{ $node.name }} - ports: - - name: hedera-grpc-web - port: 8080 - targetPort: 8080 # hedera-grpc-web-listener port - - name: prometheus # port name must be prometheus for prometheus-svc-monitor - port: 9090 - targetPort: 9090 # envoy-proxy's prometheus-listener port -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/services/haproxy-svc.yaml b/charts/fullstack-deployment/templates/services/haproxy-svc.yaml deleted file mode 100644 index 00265e4d9..000000000 --- a/charts/fullstack-deployment/templates/services/haproxy-svc.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- range $index, $node := ($.Values.hedera.nodes) }} -{{- $haproxy := $node.haproxy | default $.Values.defaults.haproxy -}} -{{- $defaults := $.Values.defaults.haproxy }} -{{- if $haproxy.enabled }} ---- -apiVersion: v1 -kind: Service -metadata: - name: haproxy-{{ $node.name }}-svc - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - fullstack.hedera.com/type: haproxy-svc - fullstack.hedera.com/node-name: {{ $node.name }} - fullstack.hedera.com/account-id: {{ $node.accountId }} - fullstack.hedera.com/prometheus-endpoint: active - {{- include "fullstack.testLabels" $ | nindent 4 }} -spec: - type: {{ $defaults.serviceType | default "ClusterIP" }} - externalTrafficPolicy: Local - selector: - app: haproxy-{{ $node.name }} - ports: - - name: non-tls-grpc-client-port - port: 50211 - targetPort: 50211 - - name: tls-grpc-client-port - port: 50212 - targetPort: 50212 - - name: prometheus # port name must be prometheus for prometheus-svc-monitor - port: 9090 - targetPort: 9090 # stats port -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/services/network-node-svc.yaml b/charts/fullstack-deployment/templates/services/network-node-svc.yaml deleted file mode 100644 index f46e681fe..000000000 --- a/charts/fullstack-deployment/templates/services/network-node-svc.yaml +++ /dev/null @@ -1,50 +0,0 @@ -{{- $defaults := $.Values.defaults.service }} -{{ $headless := list true false }} -{{ range $nodeConfig := ($.Values.hedera.nodes) }} -{{ range $isHeadless := $headless}} ---- -apiVersion: v1 -kind: Service -metadata: - name: network-{{ $nodeConfig.name }}{{ if not $isHeadless }}-svc{{ end }} - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - fullstack.hedera.com/type: network-node{{ if $isHeadless }}-headless{{ end }}-svc - fullstack.hedera.com/node-name: {{ $nodeConfig.name }} - fullstack.hedera.com/account-id: {{ $nodeConfig.accountId }} - fullstack.hedera.com/prometheus-endpoint: active - {{- include "fullstack.testLabels" $ | nindent 4 }} -spec: - {{- if $isHeadless }} - clusterIP: None - {{- else }} - type: {{ $defaults.serviceType | default "ClusterIP" }} - externalTrafficPolicy: Local - {{- end }} - publishNotReadyAddresses: true - selector: - app: network-{{ $nodeConfig.name }} - ports: - # GOSSIP port is used by nodes for gossip protocol - - name: gossip - protocol: TCP - port: 50111 # gossip port - targetPort: 50111 - # GRPC-NON-TLS port is used for services API - - name: grpc-non-tls - protocol: TCP - port: 50211 # non-tls grpc client port - targetPort: 50211 - # GRPC-TLS port - - name: grpc-tls - protocol: TCP - port: 50212 # tls grpc client port - targetPort: 50212 - # Node metrics port - # Rather than exposing the node's metrics port 9999 directly, we expose otel-collect's prometheus port here. - - name: prometheus # port name must be prometheus for prometheus-svc-monitor - protocol: TCP - port: 9090 - targetPort: 9090 # otel-collector's prometheus exporter port -{{- end }} -{{- end }} diff --git a/charts/fullstack-deployment/templates/telemetry/prometheus-svc-monitor.yaml b/charts/fullstack-deployment/templates/telemetry/prometheus-svc-monitor.yaml deleted file mode 100644 index 8f1550a57..000000000 --- a/charts/fullstack-deployment/templates/telemetry/prometheus-svc-monitor.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if $.Values.telemetry.prometheus.svcMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: network-node-monitor - namespace: {{ default $.Release.Namespace $.Values.global.namespaceOverride }} - labels: - fullstack.hedera.com/type: network-node-svc-monitor - {{- include "fullstack.testLabels" $ | nindent 4 }} -spec: - selector: - matchLabels: - fullstack.hedera.com/prometheus-endpoint: active - endpoints: - - port: prometheus # must match the prometheus port-name in network-node-svc.yaml - interval: 5s -{{- end }} diff --git a/charts/fullstack-deployment/templates/tests/test-deployment.yaml b/charts/fullstack-deployment/templates/tests/test-deployment.yaml deleted file mode 100644 index 4f4ad87aa..000000000 --- a/charts/fullstack-deployment/templates/tests/test-deployment.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "network-test" - annotations: - "helm.sh/hook": test - # add hook-failed once bug is fixed that prevents it from getting logs - "helm.sh/hook-delete-policy": before-hook-creation -spec: - serviceAccountName: pod-monitor - {{- if $.Values.deployment.nodeSelector }} - nodeSelector: - {{- $.Values.deployment.nodeSelector | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.tolerations }} - tolerations: - {{- $.Values.deployment.tolerations | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.affinity }} - affinity: - {{- $.Values.deployment.affinity | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.deployment.priorityClassName }} - priorityClassName: {{ $.Values.deployment.priorityClassName }} - {{- end }} - terminationGracePeriodSeconds: {{ $.Values.terminationGracePeriodSeconds }} - volumes: - - name: test-volume - configMap: - name: test-cm - defaultMode: 0777 # we need the test files to be executable - containers: - {{- $tester := $.Values.tester }} - - name: tester - image: {{ include "fullstack.container.image" (dict "image" $tester.image "Chart" $.Chart "defaults" $tester) }} - imagePullPolicy: {{ include "fullstack.images.pullPolicy" (dict "image" $tester.image "defaults" $tester) }} - {{- with $tester.resources }} - resources: - {{- toYaml . | nindent 8 }} - {{- end }} - volumeMounts: - - mountPath: /tests - name: test-volume - env: - - name: TESTS_DIR - value: "/tests" # should be same as mountPath - - name: LOG_DIR - value: "/tmp/fullstack-testing-logs" - - name: LOG_FILE - value: "helm-test.log" - - name: OUTPUT_LOG # outputs the logs from the tests - value: "true" - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: RELEASE_NAME - value: {{ $.Release.Name }} - command: - - "/bin/bash" - - "-c" - - "/tests/run.sh" - #- "while true;do echo sleeping for 60s; sleep 60;done" # keep the test container running so that we can debug issues - restartPolicy: Never diff --git a/charts/fullstack-deployment/tests/README.md b/charts/fullstack-deployment/tests/README.md deleted file mode 100644 index ac2c71636..000000000 --- a/charts/fullstack-deployment/tests/README.md +++ /dev/null @@ -1,45 +0,0 @@ -## Pre-requisites - -Install `yq` from this link: [yq](https://github.com/mikefarah/yq/#install) - -## Helm Chart Tests -This directory contains the BATS tests for helm chart. - -`run.sh` is the entrypoint to execute the tests locally assuming -you have the network deployed already. - -## How to create and debug test -- Use the `test_basic_deployment.bats` file as the template while creating new tests. -- In order to run and debug the tests inside the helm test container, do the following: - - - Update `run` command section in `charts/fullstack-deployment/template/tests/test-deployment.yaml` as below so that it keeps it running when we run `make helm-test`: - ``` - - "/bin/bash" - - "-c" - #- "/tests/run.sh" - - "while true;do echo sleeping for 60s; sleep 60;done" # keep the test container running so that we can debug issues - ``` - - once the `network-test` container is running, use another terminal to shell into it using command below - ``` - kubectl exec -it network-test -- bash - ``` - - Then you can run the test inside the container to debug - ``` - cd /tests && ./run.sh - ``` - - Once debug is done, you can exit and use Ctrl+C to terminate the helm-test process (you will need to delete the `network-test` container using `kubectl delete network-test`). - - If it looks all good, revert changes in `charts/fullstack-deployment/template/tests/test-deployment.yaml` - -## How to run the tests -- Goto folder `full-stack-testing/charts/fullstack-deployment/tests` -- Run `git submodule update --init` in order to install [bats](https://github.com/bats-core) for tests. -- Create a .env file in this directory by copying from the `env.template` file -- From `full-stack-testing/dev` folder run the follow command `make setup setup-cluster deploy-network` to create cluster and deploy network. -- Once network is deployed, you can run `./run.sh` from `tests` directory to run the tests. It will create a log file under `logs` directory. -- When tests are working, then redeploy and run the helm tests: `make destroy-network deploy-network helm-test` - -## Notes -- Any new template variables should be added in `helpers.sh` with prefix `TMPL_` (e.g TMPL_TOTAL_NODES) -- Any new required env variable should be added in `env.sh` -- Any new helper function should be added in `helpers.sh` -- If a new script file is added, load it in `load.sh` diff --git a/charts/fullstack-deployment/tests/env.sh b/charts/fullstack-deployment/tests/env.sh deleted file mode 100755 index b5c1cf39a..000000000 --- a/charts/fullstack-deployment/tests/env.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash -# This file initializes the core mandatory env variables -# Every script must load (source) this in the beginning -# Warning: avoid making these variables readonly since it can be sourced multiple times - -CUR_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" - -# load .env file if it exists in order to load variables with custom values -ENV_FILE="${CUR_DIR}/.env" -if [[ -f "${ENV_FILE}" ]]; then - set -a - # shellcheck source=./../temp/.env - source "${ENV_FILE}" - set +a -fi - -# set global env variables if not set -BATS_HOME="${BATS_HOME:-${CUR_DIR}/../../../dev/bats}" -TESTS_DIR="${TESTS_DIR:-${CUR_DIR}}" - -TOTAL_NODES="${TOTAL_NODES:-3}" -USER="${USER:-changeme}" -NAMESPACE="${NAMESPACE:-fst-${USER}}" -RELEASE_NAME="${RELEASE_NAME:-fst}" -LOG_DIR="${LOG_DIR:-${CUR_DIR}/logs}" -LOG_FILE="${LOG_FILE:-helm-test.log}" -OUTPUT_LOG="${OUTPUT_LOG:-false}" -[ ! -d "${LOG_DIR}" ] && mkdir "${LOG_DIR}" - -echo "--------------------------Env Setup: fullstack-testing Helm Test------------------------------------------------" -echo "NAMESPACE: ${NAMESPACE}" -echo "RELEASE_NAME: ${RELEASE_NAME}" -echo "ENV_FILE: ${ENV_FILE}" -echo "BATS_HOME: ${BATS_HOME}" -echo "TESTS_DIR: ${TESTS_DIR}" -echo "LOG: ${LOG_DIR}/${LOG_FILE}" -echo "OUTPUT_LOG: ${OUTPUT_LOG}" -echo "-----------------------------------------------------------------------------------------------------" -echo "" diff --git a/charts/fullstack-deployment/tests/env.template b/charts/fullstack-deployment/tests/env.template deleted file mode 100644 index 5cdfb56a0..000000000 --- a/charts/fullstack-deployment/tests/env.template +++ /dev/null @@ -1,9 +0,0 @@ -USER="${USER:-changeme}" -NAMESPACE="${NAMESPACE:-fst-${USER}}" -RELEASE_NAME="${RELEASE_NAME:-fst}" - -TOTAL_NODES=3 - -LOG_DIR="${LOG_DIR:-/tmp/fullstack-testing-logs}" -LOG_FILE="${LOG_FILE:-helm-test.log}" -OUTPUT_LOG="${OUTPUT_LOG:-false}" diff --git a/charts/fullstack-deployment/tests/helper.sh b/charts/fullstack-deployment/tests/helper.sh deleted file mode 100644 index 2157b9bb0..000000000 --- a/charts/fullstack-deployment/tests/helper.sh +++ /dev/null @@ -1,244 +0,0 @@ -#!/usr/bin/env bash - -# setup test constants -readonly EX_OK=0 -readonly EX_ERR=1 -readonly PASS="PASS" -readonly FAIL="FAIL" - -# template variables to be rendered during helm chart deployment -readonly TMPL_TOTAL_NODES="{{ .total_nodes }}" - -# Setup test variables -if [[ -z "${TOTAL_NODES}" ]]; then - TOTAL_NODES="${TMPL_TOTAL_NODES}" -fi - -#### -# Imports a bash file using the built-in source command. -# -# @param $1 - the bash file to be imported -#### -function import { - if [[ -z "${1}" || ! -f "${1}" ]]; then - return "${EX_OSFILE}" - elif [[ -f "${1}" ]]; then - echo "Import: Dependency Included [ file = '${1}' ]" - # shellcheck disable=SC1090 - source "${1}" - return "$?" - fi -} - -function get_pod_list() { - local pattern=$1 - local resp=$(kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' -n "${NAMESPACE}" | grep "${pattern}") - echo "${resp}" -} - -function run_test_cases() { - local test_cases=("${@}") - if [ $# -eq 0 ]; then - test_cases=("${TEST_CASES[@]}") - fi - - echo "Test cases" - echo "-------------------------------------------------------------" - for test_case in "${test_cases[@]}"; do - echo "- ${test_case}" - done - echo "" - - local status="${EX_OK}" - local test_results=() - for test_case in "${test_cases[@]}"; do - "${test_case}" - local test_status="$?" - if [[ "${test_status}" = "${EX_OK}" ]]; then - test_results+=("${test_case}: ${PASS}") - else - test_results+=("${test_case}: ${FAIL}") - status="${EX_ERR}" - fi - done - - echo "" - echo "-------------------------------------------------------------" - echo "Test results" - echo "-------------------------------------------------------------" - for test_result in "${test_results[@]}"; do - echo "${test_result}" - done - - return "${status}" -} - -# This is to check the bats test execution status -function check_test_status() { - echo "status = ${status}" - echo "output = ${output}" - [[ "${status}" -eq 0 ]] -} - -function get_config_val() { - local config_path=$1 - log_debug "Get config command: helm get values fst -a -n ${NAMESPACE} | yq '${config_path}'" - ret=$(helm get values ${RELEASE_NAME} -a -n "${NAMESPACE}" | yq "${config_path}" ) - echo "${ret}" - log_debug "${config_path} => ${ret}" -} - -function get_config_val_upper() { - local config_path=$1 - local config_val=$(get_config_val "${config_path}" | tr '[:lower:]' '[:upper:]' ) - echo "${config_val}" -} - -function is_enabled_for_node() { - local node_name=$1 - [[ -z "${node_name}" ]] && echo "ERROR: Node name is needed" && return "${EX_ERR}" - - local config_path=$2 - [[ -z "${config_path}" ]] && echo "ERROR: Config path is needed" && return "${EX_ERR}" - - log_debug "Checking config '${config_path}' for node '${node_name} in namespace ${NAMESPACE} " - - local default_config_path=".defaults${config_path}" - local node_config_path=".hedera.nodes[] | select(.name==\"${node_name}\") | ${config_path}" - local default_val=$(get_config_val_upper "${default_config_path}") - local node_val=$(get_config_val_upper "${node_config_path}") - log_debug "Default config: ${default_val}" - log_debug "Node config: ${node_val}" - - if [ -z "${node_val}" ] || [ "${node_val}" = "FALSE" ]; then - echo "FALSE" - return - fi - - if [ "${node_val}" = "TRUE" ]; then - echo "TRUE" - return - fi - - if [ "${default_val}" = "TRUE" ]; then - echo "TRUE" - return - fi - - echo "FALSE" -} - -function get_sidecar_status() { - local pod=$1 - local sidecar_name=$2 - [[ -z "${pod}" ]] && echo "ERROR: Pod name is needed (is_sidecar_ready)" && return "${EX_ERR}" - [[ -z "${sidecar_name}" ]] && echo "ERROR: Sidecar name is needed (is_sidecar_ready)" && return "${EX_ERR}" - - local sidecar_status=$(kubectl get pod "${pod}" -o jsonpath="{.status.containerStatuses[?(@.name=='${sidecar_name}')].ready}" -n "${NAMESPACE}" | xargs) - echo "${sidecar_status}" -} - -function is_sidecar_ready() { - local pod=$1 - local sidecar_name=$2 - [[ -z "${pod}" ]] && echo "ERROR: Pod name is needed (is_sidecar_ready)" && return "${EX_ERR}" - [[ -z "${sidecar_name}" ]] && echo "ERROR: Sidecar name is needed (is_sidecar_ready)" && return "${EX_ERR}" - - local sidecar_status=$(kubectl get pod "${pod}" -o jsonpath="{.status.containerStatuses[?(@.name=='${sidecar_name}')].ready}" -n "${NAMESPACE}" | tr '[:lower:]' '[:upper:]') - [ -z "${sidecar_status}" ] && sidecar_status="FALSE" - log_debug "${sidecar_name} in pod ${pod} is ready in namespace ${NAMESPACE} : ${sidecar_status}" - - [[ "${sidecar_status}" = "TRUE" ]] && return "${EX_OK}" - return "${EX_ERR}" -} - -function has_sidecar() { - local pod=$1 - local sidecar_name=$2 - [[ -z "${pod}" ]] && echo "ERROR: Pod name is needed (is_sidecar_ready)" && return "${EX_ERR}" - [[ -z "${sidecar_name}" ]] && echo "ERROR: Sidecar name is needed (is_sidecar_ready)" && return "${EX_ERR}" - - local sidecars=$(kubectl get pods "${pod}" -o jsonpath='{.spec.containers[*].name}' -n "${NAMESPACE}") - log_debug "Sidecar list in pod ${pod} in namespace ${NAMESPACE} : ${sidecars}" - - local found="FALSE" - if [[ "${sidecars}" =~ ${sidecar_name} ]]; then - found="TRUE" - fi - - echo "${found}" -} - -function is_pod_phrase_running() { - local pod=$1 - [[ -z "${pod}" ]] && echo "ERROR: Pod name is needed (is_pod_phrase_running)" && return "${EX_ERR}" - - local pod_status=$(kubectl get pod "${pod}" -o jsonpath="{.status.phase}" -n "${NAMESPACE}") - [ -z "${pod_status}" ] && pod_status="Running" - - log_debug "Pod '${pod}' is running in namespace ${NAMESPACE} : ${pod_status}" - - [[ "${pod_status}" = "Running" ]] && return "${EX_OK}" - return "${EX_ERR}" -} - -function is_pod_ready() { - local pod=$1 - [[ -z "${pod}" ]] && echo "ERROR: Pod name is needed (is_pod_ready)" && return "${EX_ERR}" - - local pod_status=$(kubectl get pod "${pod}" -o jsonpath="{.status.conditions[?(@.type=='Ready')].status}" -n "${NAMESPACE}" | tr '[:lower:]' '[:upper:]') - [ -z "${pod_status}" ] && pod_status="FALSE" - - log_debug "Pod '${pod}' is ready in namespace ${NAMESPACE} : ${pod_status}" - - [[ "${pod_status}" = "TRUE" ]] && return "${EX_OK}" - return "${EX_ERR}" -} - -function get_pod_label() { - local pod=$1 - [[ -z "${pod}" ]] && echo "ERROR: Pod name is needed" && return "${EX_ERR}" - - local label=$2 - [[ -z "${pod}" ]] && echo "ERROR: Label name is needed" && return "${EX_ERR}" - - - log_debug "Checking for pod '${pod}' in namespace ${NAMESPACE} (timeout 300s)..." - $(kubectl wait --for=condition=Initialized pods "${pod}" --timeout 300s -n "${NAMESPACE}") > /dev/null 2>&1 - if [ $? = 1 ]; then - log_debug "ERROR: Pod ${pod} is not available" && return "${EX_ERR}" - fi - - log_debug "Checking label '${label}' for pod '${pod}' in namespace ${NAMESPACE} " - local escaped_label="${label//./\\.}" - local label_val=$(kubectl get pod "${pod}" -o jsonpath="{.metadata.labels.${escaped_label}}" -n "${NAMESPACE}" | xargs) - log_debug "Pod '${pod}' label '${label}': ${label_val}" - - echo "${label_val}" -} - -function get_pod_by_label() { - local label=$1 - [[ -z "${pod}" ]] && echo "ERROR: Label name is needed" && return "${EX_ERR}" - - log_debug "Getting pod by label '${label}' in namespace ${NAMESPACE} " - local escaped_label="${label//./\\.}" - local pod_name=$(kubectl get pods -l "${label}" -o jsonpath="{.items[0].metadata.name}" -n "${NAMESPACE}") - echo "${pod_name}" -} - -function is_route_accepted() { - local route_type=$1 - [[ -z "${route_type}" ]] && echo "ERROR: Route type is needed" && return "${EX_ERR}" - - local route_name=$2 - [[ -z "${route_name}" ]] && echo "ERROR: Route name is needed" && return "${EX_ERR}" - - local route_status=$(kubectl get "${route_type}" "${route_name}" -o jsonpath="{.status.parents[*].conditions[?(@.type=='Accepted')].status}" -n "${NAMESPACE}" | tr '[:lower:]' '[:upper:]') - [ -z "${route_status}" ] && route_status="FALSE" - - log_debug "${route_type} '${route_name}' in namespace ${NAMESPACE} is accepted: ${route_status}" - - [[ "${route_status}" = "TRUE" ]] && return "${EX_OK}" - return "${EX_ERR}" -} diff --git a/charts/fullstack-deployment/tests/load.sh b/charts/fullstack-deployment/tests/load.sh deleted file mode 100644 index a74ef9653..000000000 --- a/charts/fullstack-deployment/tests/load.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -source "$(dirname "${BASH_SOURCE[0]}")/env.sh" - -function load_bats_helpers() { - if [[ -z "${BATS_HOME}" ]]; then - echo "ERROR: BATS_HOME is not defined" - exit 1 - fi - - echo "Loading bats helper..." - load "${BATS_HOME}/test_helper/bats-support/load" - load "${BATS_HOME}/test_helper/bats-assert/load" -} - -function load_test_helpers() { - # load test helper scripts - echo "Loading test helper scripts..." - load "${TESTS_DIR}/helper.sh" - load "${TESTS_DIR}/logging.sh" -} - -function _common_setup() { - load_bats_helpers - load_test_helpers - -} - -_common_setup diff --git a/charts/fullstack-deployment/tests/logging.sh b/charts/fullstack-deployment/tests/logging.sh deleted file mode 100644 index 9d3ed5918..000000000 --- a/charts/fullstack-deployment/tests/logging.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -function clear_log() { - if [[ -f "${LOG_DIR}/${LOG_FILE}" ]]; then - rm -f "${LOG_DIR}/${LOG_FILE}" - fi -} - -function cat_log() { - if [[ -f "${LOG_DIR}/${LOG_FILE}" ]]; then - echo "****** TEST LOG: ${LOG_DIR}/${LOG_FILE} *****" - cat "${LOG_DIR}/${LOG_FILE}" - else - log_debug "ERROR: log file '${LOG_DIR}/${LOG_FILE}' does not exist" - fi -} - - -function log() { - local level=$1 - local msg=$2 - local file=$3 - local dt=$(date -u +"%Y-%m-%dT%H:%M:%SZ") - - echo "${dt} | ${level} | ${msg}" >> "${LOG_DIR}/${3}" -} - -function log_debug() { - local msg=$1 - log "DEBUG" "${msg}" "${LOG_FILE}" -} - -function log_error() { - local msg=$1 - log "ERROR" "${msg}" "${LOG_FILE}" -} - -function log_info() { - local msg=$1 - log "INFO " "${msg}" "${LOG_FILE}" -} - -function log_pass() { - local msg=$1 - log "INFO " "(${PASS}) ${msg}" "${LOG_FILE}" -} - -function log_fail() { - local msg=$1 - log "INFO " "(${FAIL}) ${msg}" "${LOG_FILE}" -} - -function log_line_sep() { - log_debug "---" -} diff --git a/charts/fullstack-deployment/tests/run.sh b/charts/fullstack-deployment/tests/run.sh deleted file mode 100755 index d2b0f9dc1..000000000 --- a/charts/fullstack-deployment/tests/run.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash -CUR_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -source "${CUR_DIR}/env.sh" -source "${CUR_DIR}/logging.sh" - -clear_log - -echo "Cluster Resources" -echo "NAMESPACE: ${NAMESPACE}" -echo "=============================================================" -echo "------------------------------------------- Namespaces ----------------------------------------------------------" -kubectl get ns -kubectl config get-contexts -echo "------------------------------------------- GatewayClass ---------------------------------------------------------" -kubectl get GatewayClass -echo "------------------------------------------- ClusterRole ----------------------------------------------------------" -kubectl get ClusterRole -echo "------------------------------------------- Pods -----------------------------------------------------------------" -kubectl get pods -echo "------------------------------------------- Services -------------------------------------------------------------" -kubectl get svc -echo "------------------------------------------------------------------------------------------------------------------" - -echo "" -echo "File list in 'BATS_HOME': $BATS_HOME" -echo "=============================================================" -ls -la "${BATS_HOME}" - -echo "" -echo "File list in 'TEST_DIR': $TESTS_DIR" -echo "=============================================================" -ls -la "${TESTS_DIR}" - -echo "" -echo "Running BATS: '${BATS_HOME}/bats-core/bin/bats ${TESTS_DIR}'" -echo "=============================================================" -readonly test_file=$1 - -if [[ -z "${test_file}" ]]; then - "${BATS_HOME}/bats-core/bin/bats" "${TESTS_DIR}" -else - "${BATS_HOME}/bats-core/bin/bats" "${TESTS_DIR}/${test_file}" -fi - -readonly bats_exec_status=$? - -# print test status in the log file -log_debug "Exit code: ${bats_exec_status}" -if [[ $bats_exec_status -eq 0 ]];then - log_debug "Test status: PASS" -else - log_debug "Test status: FAIL" -fi - -# uncomment in order to inspect tmpdir -#"${BATS_HOME}/bats-core/bin/bats" --no-tempdir-cleanup . - -if [[ "${OUTPUT_LOG}" = "true" ]]; then - cat_log -fi - -exit "${bats_exec_status}" diff --git a/charts/fullstack-deployment/tests/test_basic_deployment.bats b/charts/fullstack-deployment/tests/test_basic_deployment.bats deleted file mode 100644 index e352a58f9..000000000 --- a/charts/fullstack-deployment/tests/test_basic_deployment.bats +++ /dev/null @@ -1,87 +0,0 @@ -# bats file_tags=deployment-test -setup() { - source "$(dirname "${BATS_TEST_FILENAME}")/env.sh" - source "${TESTS_DIR}/load.sh" -} - -@test "Check all network node pods are running" { - log_debug "----------------------------------------------------------------------------" - log_debug "TEST: Checking total number of network node containers" - log_debug "Expected total nodes: ${TOTAL_NODES}" - log_debug "----------------------------------------------------------------------------" - - log_debug "Waiting for network node pods to be phase=running..." - kubectl wait --for=jsonpath='{.status.phase}'=Running pod -l fullstack.hedera.com/type=network-node --timeout=300s -n "${NAMESPACE}" || return "${EX_ERR}" - log_debug "Waiting for network node pods to be condition=ready..." - kubectl wait --for=condition=ready pod -l fullstack.hedera.com/type=network-node --timeout=300s -n "${NAMESPACE}" || return "${EX_ERR}" - - local resp="$(get_pod_list network-node)" - local nodes=(${resp}) # convert into an array - - log_debug "Nodes: " "${nodes[@]}" - local node_total=${#nodes[@]} - - local test_status="${FAIL}" - if [[ "${node_total}" -eq "${TOTAL_NODES}" ]]; then - test_status="${PASS}" - fi - - log_debug "" - log_debug "[${test_status}] Total network node: ${node_total}; expected: ${TOTAL_NODES}" - log_debug "" - - # assert success - [[ "${test_status}" = "${PASS}" ]] -} - -@test "Check systemctl is running in all root containers" { - local resp="$(get_pod_list network-node)" - local nodes=(${resp}) # convert into an array - - log_debug "---------------------------------------------------------------------------" - log_debug "TEST: Checking systemctl is running in all network node containers" - log_debug "---------------------------------------------------------------------------" - - local attempts=0 - local systemctl_status="${FAIL}" - local MAX_ATTEMPTS=10 - - for node in "${nodes[@]}" - do - attempts=0 - systemctl_status="${EX_ERR}" - - log_debug "Checking node ${node}..." - - # make few attempts to check systemctl status - while [[ "${attempts}" -lt "${MAX_ATTEMPTS}" && "${systemctl_status}" -ne "${EX_OK}" ]]; do - attempts=$((attempts + 1)) - kubectl exec "${node}" -c root-container -n "${NAMESPACE}" -- systemctl status --no-pager - systemctl_status="${?}" - log_debug "Checked systemctl status in ${node} (Attempt #${attempts}/${MAX_ATTEMPTS})... >>>>> status: ${systemctl_status} <<<<<" - if [[ "${systemctl_status}" -ne "${EX_OK}" ]]; then - log_debug "Sleeping 5s..." - sleep 5 - fi - done - - if [[ "${systemctl_status}" -ne "${EX_OK}" ]]; then - log_fail "systemctl is not running in node ${node}" - break # break at first node error - fi - - log_pass "systemctl is running in node ${node}" - done - - local test_status="${FAIL}" - if [[ "${systemctl_status}" -eq "${EX_OK}" ]]; then - test_status="${PASS}" - fi - - log_debug "" - log_debug "[${test_status}] systemctl is running in all network node containers" - log_debug "" - - # assert success - [[ "${test_status}" = "${PASS}" ]] -} diff --git a/charts/fullstack-deployment/tests/test_gateway_api_deployment.bats b/charts/fullstack-deployment/tests/test_gateway_api_deployment.bats deleted file mode 100644 index 6f28e8640..000000000 --- a/charts/fullstack-deployment/tests/test_gateway_api_deployment.bats +++ /dev/null @@ -1,43 +0,0 @@ -# bats file_tags=deployment-test -setup() { - source "$(dirname "${BATS_TEST_FILENAME}")/env.sh" - source "${TESTS_DIR}/load.sh" -} - -@test "Check Network Node GRPC routes" { - log_debug "----------------------------------------------------------------------------" - log_debug "TEST: Checking Network Node GRPC Route" - log_debug "----------------------------------------------------------------------------" - - local resp="$(get_pod_list network-node)" - local pods=(${resp}) # convert into an array - log_debug "Network nodes: ${pods[*]}" - - local test_status="${FAIL}" - local status_val="${EX_ERR}" - if [[ "${#pods[@]}" -gt 0 ]]; then - test_status="${PASS}" - for pod in "${pods[@]}"; do - log_debug "" - local node_name=$(get_pod_label "${pod}" "fullstack.hedera.com/node-name") - [[ -z "${node_name}" ]] && test_status="${FAIL}" && break - - local route_name="node-grpc-route-${node_name}" - local is_enabled=$(is_enabled_for_node "${node_name}" ".haproxy.enabled") - if [ "${is_enabled}" = "FALSE" ]; then - log_debug "Checking Node GRPC route '${route_name}'" - is_route_accepted "tcproute" "${route_name}" || test_status="${FAIL}" - [ "${test_status}" = "FAIL" ] && break - else - log_debug "HAProxy enabled for node '${node_name}'. Skipped route check for '${route_name}'." - fi - done - fi - - log_debug "" - log_debug "[${test_status}] Node GRPC Route Check" - log_debug "" - - # assert success - [[ "${test_status}" = "${PASS}" ]] -} diff --git a/charts/fullstack-deployment/tests/test_proxy_deployment.bats b/charts/fullstack-deployment/tests/test_proxy_deployment.bats deleted file mode 100644 index e03156171..000000000 --- a/charts/fullstack-deployment/tests/test_proxy_deployment.bats +++ /dev/null @@ -1,88 +0,0 @@ -# bats file_tags=deployment-test -setup() { - source "$(dirname "${BATS_TEST_FILENAME}")/env.sh" - source "${TESTS_DIR}/load.sh" -} - -@test "Check haproxy deployment" { - log_debug "---------------------------------------------------------------------------" - log_debug "TEST: Checking if HAProxy is running" - log_debug "---------------------------------------------------------------------------" - - local resp="$(get_pod_list network-node)" - local pods=(${resp}) # convert into an array - log_debug "Network node: ${pods[*]}" - - local test_status="${FAIL}" - local status_val="${EX_ERR}" - if [[ "${#pods[@]}" -gt 0 ]]; then - test_status="${PASS}" - for pod in "${pods[@]}"; do - log_debug "" - local node_name=$(get_pod_label "${pod}" "fullstack.hedera.com/node-name") - [[ -z "${node_name}" ]] && test_status="${FAIL}" && break - - local is_enabled=$(is_enabled_for_node "${node_name}" ".haproxy.enabled") - if [ "${is_enabled}" = "TRUE" ]; then - log_debug "HAProxy is enabled for node '${node_name}'" - log_debug "Checking HAProxy for network-node '${node_name}'" - local haproxy_pod=$(get_pod_by_label "app=haproxy-${node_name},fullstack.hedera.com/type=haproxy") - log_debug "Checking HAProxy pod ${haproxy_pod}" - is_pod_phrase_running "${haproxy_pod}" || test_status="${FAIL}" - else - log_debug "HAProxy is not enabled for node '${node_name}'. Skipping check" - fi - - [ "${test_status}" = "FAIL" ] && break - done - fi - - log_debug "" - log_debug "[${test_status}] HAProxy Check" - log_debug "" - - # assert success - [ "${test_status}" = "${PASS}" ] -} - -@test "Check envoy proxy deployment" { - log_debug "---------------------------------------------------------------------------" - log_debug "TEST: Checking if Envoy Proxy is running" - log_debug "---------------------------------------------------------------------------" - - local resp="$(get_pod_list network-node)" - local pods=(${resp}) # convert into an array - log_debug "Network node: ${pods[*]}" - - local test_status="${FAIL}" - local status_val="${EX_ERR}" - if [[ "${#pods[@]}" -gt 0 ]]; then - test_status="${PASS}" - for pod in "${pods[@]}"; do - log_debug "" - local node_name=$(get_pod_label "${pod}" "fullstack.hedera.com/node-name") - [[ -z "${node_name}" ]] && test_status="${FAIL}" && break - - local is_enabled=$(is_enabled_for_node "${node_name}" ".envoyProxy.enabled") - if [ "${is_enabled}" = "TRUE" ]; then - log_debug "EnvoyProxy is enabled for node '${node_name}'" - log_debug "Checking Envoy proxy for network-node '${node_name}'" - local envoy_proxy_pod=$(get_pod_by_label "app=envoy-proxy-${node_name},fullstack.hedera.com/type=envoy-proxy") - - log_debug "Checking Envoy Proxy pod ${envoy_proxy_pod}" - is_pod_ready "${envoy_proxy_pod}" || test_status="${FAIL}" - else - log_debug "EnvoyProxy is not enabled for node '${node_name}'. Skipping check" - fi - - [ "${test_status}" = "FAIL" ] && break - done - fi - - log_debug "" - log_debug "[${test_status}] Envoy Proxy Check" - log_debug "" - - # assert success - [ "${test_status}" = "${PASS}" ] -} diff --git a/charts/fullstack-deployment/tests/test_sidecar_deployment.bats b/charts/fullstack-deployment/tests/test_sidecar_deployment.bats deleted file mode 100644 index 682aa89b3..000000000 --- a/charts/fullstack-deployment/tests/test_sidecar_deployment.bats +++ /dev/null @@ -1,91 +0,0 @@ -# bats file_tags=deployment-test -setup() { - source "$(dirname "${BATS_TEST_FILENAME}")/env.sh" - source "${TESTS_DIR}/load.sh" -} - -function run_default_sidecar_check() { - local sidecar_name=$1 - local enable_config_path=$2 - - log_debug "---------------------------------------------------------------------------" - log_debug "TEST: Checking if ${sidecar_name} is running" - log_debug "---------------------------------------------------------------------------" - - local resp="$(get_pod_list network-node)" - local pods=(${resp}) # convert into an array - log_debug "Network node: ${pods[*]}" - - local test_status="${FAIL}" - local status_val="${EX_ERR}" - if [[ "${#pods[@]}" -gt 0 ]]; then - test_status="${PASS}" - for pod in "${pods[@]}"; do - log_debug "" - log_debug "Checking pod ${pod} for sidecar ${sidecar_name}" - - local should_enable=$(get_config_val_upper "${enable_config_path}") - log_debug "${sidecar_name} is enabled in pod ${pod}: ${should_enable}" - - local sidecar_exists=$(has_sidecar "${pod}" "${sidecar_name}" ) - log_debug "${sidecar_name} exists in pod ${pod}: ${sidecar_exists} " - - if [ "${should_enable}" = "TRUE" ] && [ "${sidecar_exists}" = "TRUE" ]; then - is_sidecar_ready "${pod}" "${sidecar_name}" || test_status="${FAIL}" - elif [[ "${should_enable}" != "${sidecar_exists}" ]]; then - test_status="${FAIL}" - fi - - [ "${test_status}" = "FAIL" ] && break - done - fi - - log_debug "" - log_debug "[${test_status}] ${sidecar_name} sidecar is running in all network-node pods in namespace ${NAMESPACE}" - log_debug "" - - # assert success - [ "${test_status}" = "${PASS}" ] -} - -@test "Check record-stream-uploader sidecar" { - local sidecar_name="record-stream-uploader" - local enable_config_path=".defaults.sidecars.recordStreamUploader.enabled" - - run_default_sidecar_check "${sidecar_name}" "${enable_config_path}" -} - -@test "Check record-stream-sidecar-uploader sidecar" { - local sidecar_name="record-stream-sidecar-uploader" - local enable_config_path=".defaults.sidecars.recordStreamSidecarUploader.enabled" - - run_default_sidecar_check "${sidecar_name}" "${enable_config_path}" -} - -@test "Check event-stream-uploader sidecar" { - local sidecar_name="event-stream-uploader" - local enable_config_path=".defaults.sidecars.eventStreamUploader.enabled" - - run_default_sidecar_check "${sidecar_name}" "${enable_config_path}" -} - -@test "Check account-balance-uploader sidecar" { - local sidecar_name="account-balance-uploader" - local enable_config_path=".defaults.sidecars.accountBalanceUploader.enabled" - - run_default_sidecar_check "${sidecar_name}" "${enable_config_path}" -} - -@test "Check backup-uploader sidecar" { - local sidecar_name="backup-uploader" - local enable_config_path=".defaults.sidecars.backupUploader.enabled" - - run_default_sidecar_check "${sidecar_name}" "${enable_config_path}" -} - -@test "Check otel-collector sidecar" { - local sidecar_name="otel-collector" - local enable_config_path=".defaults.sidecars.otelCollector.enabled" - - run_default_sidecar_check "${sidecar_name}" "${enable_config_path}" -} diff --git a/charts/fullstack-deployment/values.yaml b/charts/fullstack-deployment/values.yaml deleted file mode 100644 index 5a747b98e..000000000 --- a/charts/fullstack-deployment/values.yaml +++ /dev/null @@ -1,555 +0,0 @@ -global: - namespaceOverride: "" - ingressClassName: "hedera-explorer-ingress-class" # override for multiple deployments within the same cluster and make unique per cluster - -# cloud configuration -cloud: - buckets: - streamBucket: "fst-streams" - backupBucket: "fst-backups" - minio: - enabled: true - acmeClusterIssuer: - enabled: false - selfSignedClusterIssuer: - enabled: false - haproxyIngressController: - enabled: false - -# telemetry configurations -telemetry: - prometheus: - svcMonitor: - enabled: true - -# reduce default termination grace period -terminationGracePeriodSeconds: 10 - -# helm test container -tester: - deployPodMonitor: true - clusterRoleName: "pod-monitor-role" # this is a shared cluster role for all namespaces - image: - registry: "ghcr.io" - repository: "hashgraph/solo-containers/kubectl-bats" - tag: "0.33.0" - pullPolicy: "IfNotPresent" - resources: {} - -# lets encrypt acme cluster issuer configuration -acme-cluster-issuer: - issuers: - staging: - email: "" - name: '{{ .Values.global.namespaceOverride | default .Release.Namespace | printf "%s-letsencrypt-staging" }}' - production: - email: "" - name: '{{ .Values.global.namespaceOverride | default .Release.Namespace | printf "%s-letsencrypt-prod" }}' - solvers: # TODO change in: https://github.com/hashgraph/full-stack-testing/issues/631 - http01: - solverType: "ingress" - -# default settings for a single node -# This default configurations can be overridden for each node in the hedera.nodes section. -defaults: - volumeClaims: - enabled: false - node: - accountBalances: "100Gi" - eventStreams: "100Gi" - recordStreams: "100Gi" - recordStreamsSidecar: "100Gi" - dataOnboard: "1Gi" - dataSaved: "500Gi" - dataStats: "50Gi" - dataUpgrade: "5Gi" - output: "5Gi" - root: # root container - image: - registry: "ghcr.io" - repository: "hashgraph/solo-containers/ubi8-init-java21" - tag: "0.33.0" - pullPolicy: "IfNotPresent" - resources: {} - extraEnv: [] - service: - serviceType: "LoadBalancer" - haproxy: - enabled: true - nameOverride: "haproxy" - image: - registry: "docker.io" - repository: "haproxytech/haproxy-alpine" - tag: "2.4.25" - pullPolicy: "IfNotPresent" - resources: {} - serviceType: "LoadBalancer" - envoyProxy: - enabled: true - nameOverride: "envoy-proxy" - image: - registry: "docker.io" - repository: "envoyproxy/envoy" - tag: "v1.21.1" - pullPolicy: "IfNotPresent" - resources: {} - loadBalancerEnabled: false - sidecars: - recordStreamUploader: - enabled: true - nameOverride: "record-stream-uploader" - image: - registry: "gcr.io" - repository: "hedera-registry/uploader-mirror" - tag: "1.3.0" - pullPolicy: "IfNotPresent" - config: - debug: true - compression: true - sidecar: true - reaper: - enabled: true - minKeep: 1 - interval: 1 - defaultBackoff: 1 - signature: - require: true - prioritize: true - resources: {} - recordStreamSidecarUploader: - enabled: true - nameOverride: "record-stream-sidecar-uploader" - image: - registry: "gcr.io" - repository: "hedera-registry/uploader-mirror" - tag: "1.3.0" - pullPolicy: "IfNotPresent" - config: - debug: true - compression: true - sidecar: true - reaper: - enabled: true - minKeep: 1 - interval: 1 - defaultBackoff: 1 - signature: - require: false - prioritize: false - resources: {} - eventStreamUploader: - enabled: true - nameOverride: "event-stream-uploader" - image: - registry: "gcr.io" - repository: "hedera-registry/uploader-mirror" - tag: "1.3.0" - pullPolicy: "IfNotPresent" - config: - debug: true - compression: true - reaper: - enabled: true - minKeep: 1 - interval: 1 - defaultBackoff: 1 - signature: - require: true - prioritize: true - resources: {} - accountBalanceUploader: - enabled: false - nameOverride: "account-balance-uploader" - image: - registry: gcr.io - repository: hedera-registry/uploader-mirror - tag: "1.3.0" # Defaults to the chart's app version if empty - pullPolicy: "IfNotPresent" - config: - debug: true - compression: true - reaper: - enabled: true - minKeep: 1 - interval: 1 - defaultBackoff: 1 - signature: - require: true - prioritize: true - resources: {} - backupUploader: - enabled: false - nameOverride: "backup-uploader" - image: - registry: "gcr.io" - repository: "hedera-registry/hedera-backups" - tag: "0.6.0" - pullPolicy: "IfNotPresent" - config: - backupBucket: "backup" - resources: {} - otelCollector: - enabled: true - nameOverride: "" - image: - registry: "docker.io" - repository: "otel/opentelemetry-collector-contrib" - tag: "0.72.0" - pullPolicy: "IfNotPresent" - resources: {} - receivers: - prometheus: - scrapeTargets: [ 0.0.0.0:9999 ] # hedera node metrics are exposed at port 9999 - scrapeInterval: 5s - exporters: - otlp: - endpoint: tempo:4317 - tls: - insecure: true - prometheus: - tls: - insecure: true - prometheusRemoteWrite: - enabled: false - endpoint: "" # e.g. http://prometheus..svc:9090/api/v1/write - tls: - insecure: true - -# This configures the minio tenant subchart -# Reference for configuration: https://github.com/minio/operator/blob/master/helm/tenant/values.yaml -minio-server: - secrets: - # This secret has [accessKey, secretKey] and will be randomly generated by helm - existingSecret: minio-secrets - tenant: - buckets: - - name: fst-streams - - name: fst-backups - name: minio - pools: - - servers: 1 - name: pool-1 - volumesPerServer: 1 - size: 10Gi - nodeSelector: {} - labels: - fullstack.hedera.com/testSuiteName: "" - fullstack.hedera.com/testName: "" - fullstack.hedera.com/testRunUID: "" - fullstack.hedera.com/testCreationTimestamp: "" - fullstack.hedera.com/testExpirationTimestamp: "" - fullstack.hedera.com/testRequester: "" - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - configuration: - name: minio-secrets - certificate: - requestAutoCert: false - environment: - MINIO_BROWSER_LOGIN_ANIMATION: off # https://github.com/minio/console/issues/2539#issuecomment-1619211962 - -# hedera mirror node configuration -hedera-mirror-node: - enabled: false # set to false during first deployment, then do an upgrade with it enabled and supply the base64 encoded addressbook - labels: - fullstack.hedera.com/testSuiteName: "" - fullstack.hedera.com/testName: "" - fullstack.hedera.com/testRunUID: "" - fullstack.hedera.com/testCreationTimestamp: "" - fullstack.hedera.com/testExpirationTimestamp: "" - fullstack.hedera.com/testRequester: "" - graphql: # not needed for default FST use case - enabled: false - rosetta: # not needed for default FST use case - enabled: false - redis: - enabled: true - global: - namespaceOverride: "{{ tpl (.Values.global.namespaceOverride | toString) }}" - - # importer is a component of the hedera mirror node - # config for subchart hedera-mirror/importer - importer: - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - envFrom: - - secretRef: - name: mirror-passwords - - secretRef: - name: "{{ .Release.Name }}-redis" - - secretRef: - name: uploader-mirror-secrets - # The addressbook.bin file updates will be handled by infrastructure code or solo - addressBook: "" - config: - # importer is a springboot app, its application.yaml configuration starts here - # This config is mounted at [/usr/etc/hedera/application.yaml] in the importer pod - hedera: - mirror: - importer: - network: other - downloader: - allowAnonymousAccess: false - bucketName: "fst-streams" - # for s3 configuration of mirror node look at uploader-mirror-secrets.yaml - parser: - record: - entity: - notify: - enabled: true - redis: - enabled: false - sidecar: - enabled: true - management: - endpoint: - health: - group: - readiness: - exclude: redis - grpc: - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - config: - hedera: - mirror: - grpc: - listener: - type: NOTIFY - management: - endpoint: - health: - group: - readiness: - exclude: redis - postgresql: - postgresql: - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - pgpool: - replicaCount: 0 - rest: - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - monitor: - enabled: false - redis: - enabled: true - web3: - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - - # config for subchart hedera-mirror/monitor - # Sets up a Pinger service that periodically submits CRYPTO_TRANSFER transactions - # Additional configuration for node addresses, operator id and key should be handled by infrastructure code or solo - monitor: - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - envFrom: - - secretRef: - name: mirror-passwords - - secretRef: - name: "{{ .Release.Name }}-redis" - - secretRef: - name: uploader-mirror-secrets - config: - hedera: - mirror: - monitor: - publish: - scenarios: - pinger: - properties: - amount: 1 - maxTransactionFee: 10000 - senderAccountId: 0.0.2 - recipientAccountId: 0.0.55 - transferTypes: - - CRYPTO - receiptPercent: 1 - tps: 10 - type: CRYPTO_TRANSFER - subscribe: - grpc: - hcs: - enabled: false - rest: - transactionId: - enabled: true - samplePercent: 1 - network: OTHER -haproxy-ingress: - controller: - service: - loadBalancerIP: "" # the external IP address of the hedera mirror node explorer - -# hedera-mirror-node-explorer configuration -hedera-explorer: - enabled: false # set to false during first deployment, then do an upgrade with it enabled and supply the base64 encoded addressbook - # leave blank to use default, set if you have multiple deployments in a cluster to make it unique - selfSignedCertClusterIssuer: '{{ .Values.global.namespaceOverride | default .Release.Namespace | printf "%s-self-signed-cluster-issuer" }}' - certClusterIssuerType: "self-signed" # "acme-staging", "acme-prod", or "self-signed" - ingress: - enabled: false - hosts: - - host: "explorer.fst.local" - paths: - - path: / - pathType: Prefix - tls: - - secretName: ca-secret-hedera-explorer - hosts: - - '{{ index .Values.ingress.hosts 0 "host" }}' - labels: - fullstack.hedera.com/testSuiteName: "" - fullstack.hedera.com/testName: "" - fullstack.hedera.com/testRunUID: "" - fullstack.hedera.com/testCreationTimestamp: "" - fullstack.hedera.com/testExpirationTimestamp: "" - fullstack.hedera.com/testRequester: "" - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - global: - namespaceOverride: "{{ .Values.global.namespaceOverride }}" - # The hedera explorer UI /api url will proxy all request to mirror node - # - # Without this we would need to expose the mirror node rest API publicly and specify its public url in the network config below - proxyPass: - /api: "http://{{ .Release.Name }}-rest" - - # In the json config below we are using the url as "/", instead of a regular http://mainnet.url - # This makes the explorer UI make a relative request to its own url - # This in combination with proxyPass above saves us the need to expose mirror node URL publicly - config: | - [ - { - "name": "localnet", - "displayName": "LOCALNET", - "url": "/", - "ledgerID": "03" - } - ] - -# common deployment configuration -deployment: - podAnnotations: {} - podLabels: {} - nodeSelector: {} - tolerations: - - key: "fullstack-scheduling.io/os" - operator: "Equal" - value: "linux" - effect: "NoSchedule" - - key: "fullstack-scheduling.io/role" - operator: "Equal" - value: "network" - effect: "NoSchedule" - # Specify pod affinity - # Use complete affinity spec starting with key "nodeAffinity:" - # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity - affinity: {} - priorityClassName: {} - ## PodDisruptionBudget for fullstack testing pods - ## Default backend Pod Disruption Budget configuration - ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ - ## @param deployment.podDisruptionBudget.create Enable Pod Disruption Budget configuration - ## @param deployment.podDisruptionBudget.minAvailable Minimum number/percentage of pods that should remain scheduled - ## @param deployment.podDisruptionBudget.maxUnavailable Maximum number/percentage of pods that should remain scheduled - ## - podDisruptionBudget: - create: true - minAvailable: 1 - maxUnavailable: "" - testMetadata: - enabled: false - testSuiteName: "" - testName: "" - testRunUID: "" - testCreationTimestamp: "" - testExpirationTimestamp: "" - testRequester: "" - -# hedera node configuration -hedera: - initContainers: [] - - configMaps: - apiPermissionsProperties: "" - applicationEnv: "" - applicationProperties: "" - bootstrapProperties: "" - configTxt: "" - log4j2Xml: "" - settingsTxt: "" - - # Only the name of the node is required. The rest of the configuration will be inherited from `defaults` section - nodes: - - name: node0 - accountId: 0.0.3 - - name: node1 - accountId: 0.0.4 - - name: node2 - accountId: 0.0.5 diff --git a/fullstack-examples/build.gradle.kts b/fullstack-examples/build.gradle.kts index c070bf44b..18a530151 100644 --- a/fullstack-examples/build.gradle.kts +++ b/fullstack-examples/build.gradle.kts @@ -33,13 +33,6 @@ dependencies { implementation(platform("com.hedera.fullstack:fullstack-bom")) } -tasks.register("helmInstallFstChart") { - createNamespace.set(true) - namespace.set("fst-ns") - release.set("fst") - chart.set("../charts/fullstack-deployment") -} - tasks.register("helmInstallNginxChart") { createNamespace.set(true) namespace.set("nginx-ns")