Troubleshooting guide - Frequently Asked Questions (FAQ)

Where can I download the playground CLI?

Get the playground CLI from here, and follow the instructions on the Getting Started to install it.


Using kubectl with the napptive-kubeconfig shows a v1alpha1 authentication error

Recent changes in the core Kubernetes have deprecated the use of client.authentication.k8s.io/v1alpha1 for authentication. Some of the errors that you may be experiencing could look like:

Unable to connect to the server: getting credentials:
exec plugin is configured to use API version client.authentication.k8s.io/v1alpha1,
plugin returned version client.authentication.k8s.io/v1beta1

or

error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1"

To solve this issues, follow the instructions to update the CLI to the latest version


My application is deployed but not running

In some cases, an application configuration may be deployed, but some requirements may fail. Each cluster is assigned with a quota, and if the application requests more resources than available, it will not be possible to deploy the application. To diagnose the issue:


Check your available quota

The quota information can be obtained through the CLI or web.

Web quota

using the CLI:

playground env info
Server version: v1.21.5-gke.1802 OAM: v0.2.1
CREATION_TIME                           CREATED_BY
2021-09-07 15:24:22.457896 +0000 UTC    <user>

ACCOUNT    ENV        CPU     RAM       STORAGE
<account>  <env>      0/1     0/4000    0/1000
<account>  <env>      0/1     0/4000    0/1000

DESCRIPTION
<description>

Obtain information about the application

  • List the running applications and check the status to see if any is not running (use playground apps on the CLI or access through the web).
  • Obtain information from the application.
kubectl --kubeconfig <path_to>/napptive-kubeconfig get applications.core.oam.dev failing-app

or check the rendered low-level kubernetes deployment

kubectl --kubeconfig <path_to>/napptive-kubeconfig get deployment failing-component -oyaml

Quota errors will be reflect on the status as:

status:
  conditions:
  - lastTransitionTime: "<datetime>"
    lastUpdateTime: "<datetime>"
    message: Created new replica set "failing-component-<hash>"
    reason: NewReplicaSetCreated
    status: "True"
    type: Progressing
  - lastTransitionTime: "<datetime>"
    lastUpdateTime: "<datetime>"
    message: Deployment does not have minimum availability.
    reason: MinimumReplicasUnavailable
    status: "False"
    type: Available
  - lastTransitionTime: "<datetime>"
    lastUpdateTime: "<datetime>"
    message: 'pods "failing-component-<hash>" is forbidden: exceeded
      quota: user-quota, requested: memory=256Mi, used: memory=768Mi, limited: memory=1G'
    reason: FailedCreate
    status: "True"
    type: ReplicaFailure

To address this scenario, we recommend checking the requested resources for each component and adjusting them if necessary.


I cannot deploy an application

Deployment failures may be related to three scenarios: login issues, application definition issues. or quota limitations

  • Login issues

Try logging in again with the CLI to launch the application

playground login
Logged into account [...] - environment [...]
  • Invalid YAML files

There may be some errors in the way the YAML files are defined and/or the contents of each entity. Check the OAM resources or the guides for reference examples.

  • Quota exceeded

See previous FAQ question on how to diagnose this issue.


My application seems broken

Check the questions related to quota and deployment errors to diagnose the issue.


I cannot connect to my app

To connect to the web interface of an application, make sure an ingress trait is associated with the target components and the port and path are correct. To connect to a service that is not intended for public exposure, first list the associated services.

kubectl --kubeconfig <path_to>/napptive-kubeconfig get services
NAME                      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
drawio                    ClusterIP   10.48.4.209   <none>        8080/TCP   133m

And use port-forwarding

kubectl --kubeconfig <path_to>/napptive-kubeconfig port-forward service/drawio 7000:8080
Forwarding from 127.0.0.1:7000 -> 8080
Forwarding from [::1]:7000 -> 8080

And connect to localhost:7000 to reach the web. Notice that the port-fordwarding syntax specifies the ports as <local_port_i_want_to_use>:<port_in_the_service>.


I deployed some applications and now there are none

The playground is offered as a free service with some restrictions. In particular, applications will be shutdown after 24 hours. If you need more time contact us and discover our offerings.


Somehow my applications where rebooted?

As any other SaaS based cloud, sometimes the underlying infrastructure changes (e.g., new hardware is deployed, maintenance operations). In those cases you may experience a reboot of the applications.


My application fails to start due to some permission issue

You may see some errors either after executing kubectl create commands such as:

Error from server (Forbidden): error when creating "some_pod.yaml": 
pods "try-run-as-root" is forbidden: PodSecurityPolicy: unable to admit pod: 
[spec.containers[0].securityContext.runAsUser: Invalid value: 0: 
running with the root UID is forbidden]

or when listing pods:

k --kubeconfig napptive-kubeconfig get pods
NAME                        READY   STATUS                       RESTARTS   AGE
my-component-74c66cff8c-l4fv5     0/1     CreateContainerConfigError   0          5s

with the pod reporting:

message: container has runAsNonRoot and image will run as root
reason: CreateContainerConfigError

These errors are related to the security mechanisms implemented in the Playground to provide security in a multi-tenant environment. Check the security reference to obtain an overview of the restrictions that apply. The common remediation for these problems is to add:

containers:
  - name: <my-container>
    securityContext:
      runAsUser: 1000

My components fail to start when trying to use port 80

The security mechanisms implemented in the Playground to provide security in a multi-tenant environment. As a result running containers with root user or binding to commonly reserved ports such as 80 is forbidden. Check the security reference to obtain an overview of the restrictions that apply. The common remediation for this problem is to change the port the component is listening on. This is usually done by modifying an environment variable that is component dependent. Check the documentation of the component for more information.


My account is stuck

Your account may have been blocked for various reasons, contact us for more information.


How to open an invoice

Go to your personal settings screen, select plans & billings tab. You can access the list of invoices ready to be downloaded.


I have an issue with billing

For any problem related with billing, [contact us] for support.


I have found a problem and it is not covered on the FAQ. Help!

We are happy to help you achieve your objectives, contact us and discover how we can help you achieve your goals.


What’s next

  • Check the guides to learn how to deploy existing applications or package your own.
  • Check our Community Slack.