From 5722d6685150e368b05a2593668340dbc8cf9232 Mon Sep 17 00:00:00 2001 From: Art Berger Date: Fri, 5 Apr 2024 10:39:22 -0400 Subject: [PATCH] add support section --- docs/content/support/_index.md | 9 ++ docs/content/support/about.md | 109 +++++++++++++++ docs/content/support/support-info.md | 175 +++++++++++++++++++++++++ docs/content/support/support-ticket.md | 96 ++++++++++++++ 4 files changed, 389 insertions(+) create mode 100644 docs/content/support/_index.md create mode 100644 docs/content/support/about.md create mode 100644 docs/content/support/support-info.md create mode 100644 docs/content/support/support-ticket.md diff --git a/docs/content/support/_index.md b/docs/content/support/_index.md new file mode 100644 index 00000000000..ee9a32b4cd3 --- /dev/null +++ b/docs/content/support/_index.md @@ -0,0 +1,9 @@ +--- +title: Get help and support +description: Get help, training, and other forms of support. +weight: 175 +--- + +Get help, training, and other forms of support. + +{{% children description="true" %}} diff --git a/docs/content/support/about.md b/docs/content/support/about.md new file mode 100644 index 00000000000..4728a714f23 --- /dev/null +++ b/docs/content/support/about.md @@ -0,0 +1,109 @@ +--- +title: About Solo Support +weight: 910 +description: Learn what is included in Solo's product support and how to communicate with Solo Engineers in case of an issue. +--- +Learn what is included in Solo's product support and how to communicate with Solo Engineers in case of an issue. +## Solo Support scope + +Solo Support offers technical assistance in English for Solo products. We are committed to helping you successfully utilize our software in your production environment by: + +* Addressing specific questions and concerns related to the installation and maintenance of our software. +* Assisting with troubleshooting. +* Helping resolve errors or failures encountered during installation or use of our products. +* Identifying and documenting reported bugs, as well as providing workaround solutions when possible. +* Providing support for the integration between Solo products — Istio included — and third-party software. **Note**: If we identify that the issue is happening on the third-party side, we may redirect you to work with the appropriate vendor, as we do not provide support for other vendor’s software. + +All Solo customers have access to various channels for obtaining technical assistance for our software: +* Open a support ticket in the [Support Portal](https://support.solo.io). +* Join the community of Solo users in [Slack](https://soloio.slack.com), or talk to your Account Executive to be added to the private Solo Slack space. +* Contact Solo Support by sending an email to `support@solo.io`. +* Call the Support Hotline at `+1-601-476-5646` (for **urgent priority, production-related** issues only). + +For more information, see the following resources: +* [Submit a request]({{% versioned_link_path fromRoot="/support/support-ticket/#submit-a-ticket" %}}): Learn how to create a ticket by using the Support Portal or email. +* [Add support information]({{< versioned_link_path fromRoot="/support/support-info/" >}}): Review what Solo Support needs to understand your request and provide timely, accurate assistance. +* [Priority levels]({{% versioned_link_path fromRoot="/support/support-ticket/#priority-levels" %}}): Learn more about priority levels and how to assign the right priority level to your support request. +* [Targeted times for initial response]({{% versioned_link_path fromRoot="/support/support-ticket/#response-time" %}}): Review response times from Solo Support based on the priority level that you chose for your request. +* [Join the Solo.io Slack community]({{% versioned_link_path fromRoot="/support/support-ticket/#slack" %}}): Learn about which channels to join, and how to open a Support ticket in Zendesk by using Slack. + + +## Not within Solo Support’s scope + +Solo Support is not accountable for providing assistance with custom code, third-party tools, or unsupported technologies. Your request is likely out of Solo Support’s scope if it is primarily about: +* Third party integrations, such as Hashicorp Vault +* Writing custom scripts +* Configuration of external authentication systems +* Open source projects (Istio is an exception) + +Reach out to your Solo Account Executive or Customer Success Manager if you have questions or require assistance with any of the following: +* Architecture, design review, and best practices +* Securing your environment +* Comprehensive installation guide +* Help with custom code +* Scheduling or registering for training and workshops + +For guidance on what products may be right for you, to request a demo, and to learn more about pricing options, [contact Solo Sales](https://www.solo.io/company/contact-sales/) or reach out to your Account Executive. + + + +## Support for Legacy Software + +Solo recommends using the latest version of our software to ensure you have access to the latest features and bug fixes. + +If you are a few versions behind, you have access to Solo’s support for legacy software as shown in the following table: + +|Software|Details| +|--|--| +|Solo products, including Gloo Gateway|Support for N-3 versions| + + + diff --git a/docs/content/support/support-info.md b/docs/content/support/support-info.md new file mode 100644 index 00000000000..28e4a12457c --- /dev/null +++ b/docs/content/support/support-info.md @@ -0,0 +1,175 @@ +--- +title: Add support information +description: Review the details to include in your support. +weight: 930 +--- + +Collect valuable information for Solo to review and troubleshoot your support request. + +## Environment + +1. Get your Gloo Edge version. + ```shell + glooctl version -o yaml + ``` +2. Get the version of Kubernetes that you run in your cluster. + ```shell + kubectl version -o yaml + ``` +3. List the infrastructure provider that hosts your environment, such as AWS or an on-premise virtual machine (VM). + +## Setup + +Share the installation method that you used to install Gloo Edge, such as Helm, `glooctl`, or Argo CD, and the configuration that you used during the installation. + +{{< tabs >}} +{{% tab name="Helm" %}} +Use the following command to extract the Helm manifests that were used for the Gloo Edge installation and the state of each manifest. Replace `releaseName` and `namespaceName` with the values that you used for your installation. +```shell +helm get all --namespace > gloo_edge_helm.yaml +``` + +{{% /tab %}} + +{{% tab name="glooctl"%}} +Share the complete command that you used to install Gloo Edge. The following command shows an example command that you might have used. +```shell +glooctl install gateway enterprise --license-key --values foo,bar +``` +{{% /tab %}} + +{{% tab name="Argo CD"%}} +Get the Argo CD applications that define the installation of Gloo Edge by using one of the following methods. +* `kubectl`: + ```shell + kubectl get applications.argoproj.io/ -n -o yaml + ``` +* Argo CD CLI: + ```shell + argocd app get -o yaml + ``` +{{% /tab %}} +{{< /tabs >}} + +## Issue + +1. Provide a detailed description of the issue. Make sure to include the following information: + - If reproducable, steps to reproduce the issue + - If applicable, sample of a client request including the payload + - High-level diagram of the interactions from the perspective of the client request + - The request protocol that is handled by the application(s) in question, such as HTTP / TCP / gRPC + - If the issue is related to authentication or authorization, details of the auth configuration +2. Describe the impact of the issue. For example, the issue might block an update or a demo, or cause the loss of data or an entire system. +3. Export the relevant configuration files that are related to the issue. + {{< tabs >}} + {{% tab name="Gloo Edge resources"%}} + - Typically, the Gloo Edge `Settings` object is useful to understand the configuration of Gloo Edge. + - For traffic management issues, include the following list of Gloo Edge resources: + - `Gateway` + - `VirtualService` + - `RouteTable` + - `Upstream` + + - Use the following script to dump all Gloo Edge custom resources into a file. Attach the `gloo-edge-configuration.yaml` file to your support request. + ```shell + for n in $(kubectl get crds | grep solo.io | awk '{print $1}'); do kubectl get $n --all-namespaces -o yaml >> gloo-edge-configuration.yaml; echo "---" >> gloo-edge-configuration.yaml; done + ``` + {{% /tab %}} + {{% tab name="Istio resources"%}} + If you use Gloo Edge as a gateway to an Istio service mesh, provide details about how Istio is configured. You can use the following command to create an Istio bug report that you can attach to your support request. + + ```shell + istioctl bug-report --istio-namespace + ``` + {{% /tab %}} + {{< /tabs >}} + +## Product-specific details + +### Control plane + +1. Capture the output of the `glooctl check` command. +
Typically, the command output indicates any errors in the control plane components or associated resources, such as in the following example. + + ``` + Checking deployments... 1 Errors! + Checking pods... 2 Errors! + Checking upstreams... OK + Checking upstream groups... OK + Checking auth configs... OK + Checking rate limit configs... OK + Checking VirtualHostOptions... OK + Checking RouteOptions... OK + Checking secrets... OK + Checking virtual services... OK + Checking gateways... OK + Checking proxies... Skipping due to an error in checking deployments + Skipping due to an error in checking deployments + Error: 5 errors occurred: + * Deployment gloo in namespace gloo-system is not available! Message: Deployment does not have minimum availability. + * Pod gloo-8ddc4ff4c-g4mnf in namespace gloo-system is not ready! Message: containers with unready status: [gloo] + * Not all containers in pod gloo-8ddc4ff4c-g4mnf in namespace gloo-system are ready! Message: containers with unready status: [gloo] + * proxy check was skipped due to an error in checking deployments + * xds metrics check was skipped due to an error in checking deployment + ``` +2. Collect the logs for various control plane components, such as `gloo`, `gloo-fed`, `redis`, or `observability` by using the `debug` log level (if possible). The components vary depending on your Gloo Edge setup and can be found in the `gloo-system` namespace. At a minimum, include the logs for the `gloo` pod in your support request. +
To enable the `debug` log level, see [Debugging control plane]({{< versioned_link_path fromRoot="/operations/debugging_gloo/#debugging-the-control-plane" >}}). +

Follow the steps below to get the logs for the `gloo` controller pod. + 1. Set the log level to `debug`. + ```shell + kubectl port-forward deploy/gloo -n 9091:9091 > /dev/null 2>&1 & + PID=$! + curl -X PUT -H "Content-Type: application/json" -d '{"level": "debug"}' http://localhost:9091/logging + ``` + 2. Capture the logs when reproducing the issue. + ```shell + kubectl logs -f deploy/gloo -n > gloo.log + ``` + 3. After you capture the logs, reset the log level to `info`. + ```shell + curl -X PUT -H "Content-Type: application/json" -d '{"level": "info"}' http://localhost:9091/logging + kill -9 $PID + ``` + Repeat these steps for all the control plane components. + +### Data plane + +1. Capture the xDS configuration that is currently served. + ```shell + glooctl proxy served-config -n > served-config.yaml + ``` +2. Get the configuration that is served in the `gateway-proxy` Envoy pod(s). +
For more information, see [Dumping Envoy configuration]({{< versioned_link_path fromRoot="/operations/debugging_gloo/#dumping-envoy-configuration" >}}). + ```shell + kubectl port-forward deploy/gateway-proxy -n 19000:19000 > /dev/null 2>&1 & + PID=$! + curl -s localhost:19000/config_dump\?include_eds > gateway-config.json + kill -9 $PID + ``` +3. Get the access log(s) for failed request from the `gateway-proxy` pod(s). If access logging is not enabled, refer to [this guide]({{< versioned_link_path fromRoot="/guides/security/access_logging" >}}) to enable it. +4. If possible, collect the logs from the `gateway-proxy` Envoy pod(s) in `debug` log level for the failed request. + {{% notice tip %}} + The `gateway-proxy` component comes with several loggers. Setting the log level to `debug` for all loggers can get very noisy. Instead, you can change the log level for a specific logger only. For more information, see [Viewing Envoy logs]({{< versioned_link_path fromRoot="/operations/debugging_gloo/#viewing-envoy-logs" >}}). + {{% /notice %}} + 1. Choose the logger that you want to get logs for. For a list of available loggers, see [Viewing Envoy logs]({{< versioned_link_path fromRoot="/operations/debugging_gloo/#viewing-envoy-logs" >}}). + 2. Port-forward the `gateway-proxy` pod on port 19000. + ```shell + kubectl -n gloo-system port-forward deploy/gateway-proxy 19000 & + ``` + 3. Change the log level to `debug` for the selected logger. The following example changes the log level for the `grpc` logger. + ```shell + curl -X POST "127.0.0.1:19000/logging?grpc=debug" + ``` + + 4. Capture the logs when reproducing the issue. + ```shell + kubectl logs -f deploy/gateway-proxy -n gloo-system > gateway-proxy.log + ``` + 3. After you capture the logs, reset the log level to `info`. + ```shell + curl -X POST "127.0.0.1:19000/logging?grpc=info" + ``` +5. Gather the stats from the proxy pod(s). + ```shell + glooctl proxy stats > proxy-stats.log + ``` \ No newline at end of file diff --git a/docs/content/support/support-ticket.md b/docs/content/support/support-ticket.md new file mode 100644 index 00000000000..25e460fe1e9 --- /dev/null +++ b/docs/content/support/support-ticket.md @@ -0,0 +1,96 @@ +--- +title: Submit a request +weight: 920 +description: Solo customers can submit new requests and update existing ones by using the Support Portal, email (`support@solo.io`), or Slack. +--- +Solo customers can submit new requests and update existing ones by using the [Support Portal](#support-portal), email (`support@solo.io`), or [Slack](#slack). +## Use the Support Portal {#support-portal} + +### Create a Support Portal account + +1. Navigate to the [Support Portal](https://support.solo.io) and click **Sign up**. +2. On the next page, enter your full name and email address. You receive an email with instructions for how to create a password. +3. Follow the **Create password** link in that email. Check your Spam folder if you do not see it in your inbox. +4. You **MUST** add your phone number to your newly created profile. Failing to do so prevents your calls from being routed to a Solo Support Engineer when you call the Support Hotline to report Urgent incidents. + +### Submit a ticket + +1. Navigate to the [Support Portal](https://support.solo.io). +2. Log in, and ensure your phone number is added to your profile. This is an important step, as it allows our system to recognize your account when you call the Support Hotline for urgent incidents. +3. Click **Create a ticket**. +4. Fill out the form. Start by entering any email addresses that you want updates to be sent to while Solo Support works on the ticket. Add a subject related to the issue that you are reporting. +5. Add details for the issue in the **description** field. Refer to [Add support information]({{< versioned_link_path fromRoot="/support/support-info/" >}}) to help Solo Support better understand your request and provide timely and accurate assistance. +6. Enter the priority for this request. To learn more about priority levels and how to assign the right priority level to your ticket, see [Priority levels](#priority-levels). +7. Optional: Enter a GitHub issue and upload any attachments. + {{< notice note >}} + The ticketing system has an attachment file size limit of 50MB. + {{< /notice >}} +8. Submit your request. A Solo Support Engineer will be in touch following the [Targeted times for initial response](#response-time). + +To update an existing ticket, log in to your account, and click **View pending tickets**. You see a new page where you can select the ticket you want to update and add comments to. + + + +## Priority levels {#priority-levels} + +{{% notice note %}} +For the latest list of priority levels and descriptions, see the [Technical Support Policy](https://legal.solo.io/#technical-support-policy). +{{% /notice %}} + +|Priority level|Description| +|----------------|--| +|Urgent priority**|A problem that severely impacts your use of the software in a production environment (such as loss of production data or in which your production systems are not functioning). The situation halts your business operations, or your revenue or brand are impacted and no procedural workaround exists.| +|High priority|A problem where the production environment is operational but functionality is severely reduced. The situation is causing a high impact to portions of your business operations, or your revenue or brand are threatened and no procedural workaround exists.| +|Normal priority|A problem that involves partial, non-critical loss of use of the software in a production environment or development environment. For production environments, there is a medium-to-low impact on your business, but your business continues to function, including by using a procedural workaround. For development environments, where the situation is causing your project to no longer continue or migrate into production.| +|Low priority|A general usage question, reporting of a documentation error, or recommendation for a future product enhancement or modification. For production environments, there is low-to-no impact on your business or the performance or functionality of your system. For development environments, there is a medium-to-low impact on your business, but your business continues to function, including by using a procedural workaround.| + +## Targeted times for initial response {#response-time} + +{{% notice note %}} +For the latest list of targeted times for the initial response, see the [Technical Support Policy](https://legal.solo.io/#technical-support-policy). +{{% /notice %}} + +When you contact Solo Support, you can choose a priority for your request: + +|Priority Level| Standard Support Policy |Enhanced Support Policy| +|--|----------------------------|--| +|Urgent**| 1 hour (24/7/365) |15 minutes (24/7/365)| +|High|4 Business Hours Local Time |2 hours (24/7/365)| +|Normal|8 Business Hours Local Time|4 Business Hours Local Time| +|Low|24 Business Hours Local Time|12 Business Hours Local Time| + +{{% notice warning %}} +**To report Urgent priority, production-related issues, you must contact Solo’s Support Hotline at `+1-601-476-5646`. +{{% /notice %}} + +{{% notice note %}} +Solo Support reserves the right to adjust the priority you select if it does not align with the priorities documented above. +{{% /notice %}} + +## Join the solo.io Slack community {#slack} + +Join the [solo.io Slack community](https://soloio.slack.com) to participate in conversations with other users and ask questions to the Solo team. + +Navigate through the channels to find topics relevant to you. We recommend `#gloo`, and `#general` for general discussion. + +To migrate a discussion from Slack into an email-based support ticket, you can use the `/zendesk create_ticket` macro within the channel where the conversation started. Select **Support** as the assignee to ensure your request reaches the Solo Support team. Selecting other options will delay or prevent our team from seeing your ticket. + +If the macro hasn't been added to a channel, ask a Solo team member to assist you. + + +## Additional resources + +Check out the following guides to start troubleshooting your environment and to collect the information to provide in your support request. + +- Downloadable version of our versioned [Technical Support Policy](https://legal.solo.io/#technical-support-policy) +- [Gloo Edge contribution guidelines]({{% versioned_link_path fromRoot="/contributing/" %}}) +- [Gloo Edge community](https://github.com/solo-io/gloo/tree/main) + + + + +