Link Search Menu Expand Document

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 command

I you want to use the kubectl command, you need to obtain the kubeconfig` file to access to your cluster.

$ playground get-kubeconfig
ASSOCIATED SERVER
https://35.198.177.96

Use this kubeconfig to connect to the cluster and deploy applications:
kubectl --kubeconfig <napptive-kubeconfig> ...

napptive-kubeconfig file will be saved in the current directory. Now you can use the kubectl command to perform the query you consider. Some examples below:

$ kubectl --kubeconfig napptive-kubeconfig get components

$ kubectl --kubeconfig napptive-kubeconfig get healthscopes

$ kubectl --kubeconfig napptive-kubeconfig get ingress

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 cluster info
Server version: v1.18.12-gke.1206 OAM: v0.2.1
CPU       MEM (MB)    STORAGE (MB)
0.15/2    269/1000    0/1000

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 and the individual components.
$ kubectl --kubeconfig <path_to>/napptive-kubeconfig get components.core.oam.dev failing-component

or through the underlying low-level 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 request resources for each component and adjusting them if necessary.

I cannot deploy an application

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

  • Invalid kubeconfig file

Try redownloading the kubeconfig file and deploy the application again.

Using the web:

Download kubeconfig

or with the CLI

$ playground get-kubeconfig

Check the Getting started for information on how to use them.

  • 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 Tutorials 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 a deployed application first list the associate 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>.

This limitation only applies to the free playground layer and will be removed in the future. Does this not address your specific problem? we want to hear from you! Let’s discuss how we can help you.

I deployed some applications and now there is 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 Understanding the Playground to obtain an overview of the security restrictions that apply. The common remediation for this 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 Understanding the Playground to obtain an overview of the security 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.

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