tree: 19126df9be584a5c4a06c2cfa87aff9330d601d7 [path history] [tgz]
  1. charts/
  2. templates/
  3. .helmignore
  4. Chart.yaml
  5. OWNERS
  6. README.md
  7. values.yaml
install/kubernetes/helm/skywalking/README.md

` Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. `

Apache Skywalking Helm Chart

Apache SkyWalking is application performance monitor tool for distributed systems, especially designed for microservices, cloud native and container-based (Docker, K8s, Mesos) architectures.

Introduction

This chart bootstraps a Apache SkyWalking deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Kubernetes 1.9.6+
  • PV dynamic provisioning support on the underlying infrastructure (StorageClass)
  • Helm 3

Installing the Chart

To install the chart with the release name my-release:

$ helm install my-release skywalking -n <namespace>

The command deploys Apache Skywalking on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm uninstall my-release -n <namespace>

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The following table lists the configurable parameters of the Skywalking chart and their default values.

ParameterDescriptionDefault
nameOverrideOverride namenil
serviceAccounts.oapName of the OAP service account to use or createnil
oap.nameOAP deployment nameoap
oap.image.repositoryOAP container image nameapache/skywalking-oap-server
oap.image.tagOAP container image tag6.1.0
oap.image.pullPolicyOAP container image pull policyIfNotPresent
oap.ports.grpcOAP grpc port for tracing or metric11800
oap.ports.restOAP http port for Web UI12800
oap.replicasOAP k8s deployment replicas2
oap.service.typeOAP svc typeClusterIP
oap.javaOptsParameters to be added to JAVA_OPTSenvironment variable for OAP-Xms2g -Xmx2g
oap.antiAffinityOAP anti-affinity policysoft
oap.nodeAffinityOAP node affinity policy{}
oap.nodeSelectorOAP labels for master pod assignment{}
oap.tolerationsOAP tolerations[]
oap.resourcesOAP node resources requests & limits{} - cpu limit must be an integer
oap.envoy.als.enabledOpen envoy alsfalse
oap.istio.adapter.enabledOpen istio adapterfalse
oap.envOAP environment variables[]
ui.nameWeb UI deployment nameui
ui.replicasWeb UI k8s deployment replicas1
ui.image.repositoryWeb UI container image nameapache/skywalking-ui
ui.image.tagWeb UI container image tag6.1.0
ui.image.pullPolicyWeb UI container image pull policyIfNotPresent
ui.ingress.enabledCreate Ingress for Web UIfalse
ui.ingress.annotationsAssociate annotations to the Ingress{}
ui.ingress.pathAssociate path with the Ingress/
ui.ingress.hostsAssociate hosts with the Ingress[]
ui.ingress.tlsAssociate TLS with the Ingress[]
ui.service.typeWeb UI svc typeClusterIP
ui.service.externalPortexternal port for the service80
ui.service.internalPortinternal port for the service8080
ui.service.externalIPsexternal IP addressesnil
ui.service.loadBalancerIPLoad Balancer IP addressnil
ui.service.annotationsKubernetes service annotations{}
ui.service.loadBalancerSourceRangesLimit load balancer source IPs to list of CIDRs (where available))[]
elasticsearch.enabledSpin up a new elasticsearch cluster for SkyWalkingtrue
elasticsearch.client.nameclientClient component name
elasticsearch.client.replicas2Client node replicas (deployment)
elasticsearch.client.resources{} - cpu limit must be an integerClient node resources requests & limits
elasticsearch.client.priorityClassNamenilClient priorityClass
elasticsearch.client.heapSize512mClient node heap size
elasticsearch.client.podAnnotations{}Client Deployment annotations
elasticsearch.client.nodeSelector{}Node labels for client pod assignment
elasticsearch.client.tolerations[]Client tolerations
elasticsearch.client.serviceAnnotations{}Client Service annotations
elasticsearch.client.serviceTypeClusterIPClient service type
elasticsearch.client.httpNodePortnilClient service HTTP NodePort port number. Has no effect if client.serviceType is not NodePort.
elasticsearch.client.loadBalancerIP{}Client loadBalancerIP
elasticsearch.client.loadBalancerSourceRanges{}Client loadBalancerSourceRanges
elasticsearch.client.antiAffinitysoftClient anti-affinity policy
elasticsearch.client.nodeAffinity{}Client node affinity policy
elasticsearch.client.initResources{}Client initContainer resources requests & limits
elasticsearch.client.additionalJavaOpts""Parameters to be added to ES_JAVA_OPTS environment variable for client
elasticsearch.client.ingress.enabledfalseEnable Client Ingress
elasticsearch.client.ingress.usernilIf this & password are set, enable basic-auth on ingress
elasticsearch.client.ingress.passwordnilIf this & user are set, enable basic-auth on ingress
elasticsearch.client.ingress.annotations{}Client Ingress annotations
elasticsearch.client.ingress.hosts[]Client Ingress Hostnames
elasticsearch.client.ingress.tls[]Client Ingress TLS configuration
elasticsearch.client.exposeTransportPortfalseExpose transport port 9300 on client service (ClusterIP)
elasticsearch.master.initResources{}Master initContainer resources requests & limits
elasticsearch.master.additionalJavaOpts""Parameters to be added to ES_JAVA_OPTS environment variable for master
elasticsearch.master.exposeHttpfalseExpose http port 9200 on master Pods for monitoring, etc
elasticsearch.master.namemasterMaster component name
elasticsearch.master.replicas2Master node replicas (deployment)
elasticsearch.master.resources{} - cpu limit must be an integerMaster node resources requests & limits
elasticsearch.master.priorityClassNamenilMaster priorityClass
elasticsearch.master.podAnnotations{}Master Deployment annotations
elasticsearch.master.nodeSelector{}Node labels for master pod assignment
elasticsearch.master.tolerations[]Master tolerations
elasticsearch.master.heapSize512mMaster node heap size
elasticsearch.master.namemasterMaster component name
elasticsearch.master.persistence.enabledfalseMaster persistent enabled/disabled
elasticsearch.master.persistence.namedataMaster statefulset PVC template name
elasticsearch.master.persistence.size4GiMaster persistent volume size
elasticsearch.master.persistence.storageClassnilMaster persistent volume Class
elasticsearch.master.persistence.accessModeReadWriteOnceMaster persistent Access Mode
elasticsearch.master.readinessProbesee values.yaml for defaultsMaster container readiness probes
elasticsearch.master.antiAffinitysoftMaster anti-affinity policy
elasticsearch.master.nodeAffinity{}Master node affinity policy
elasticsearch.master.podManagementPolicyOrderedReadyMaster pod creation strategy
elasticsearch.master.updateStrategy{type: "onDelete"}Master node update strategy policy
elasticsearch.data.initResources{}Data initContainer resources requests & limits
elasticsearch.data.additionalJavaOpts""Parameters to be added to ES_JAVA_OPTS environment variable for data
elasticsearch.data.exposeHttpfalseExpose http port 9200 on data Pods for monitoring, etc
elasticsearch.data.replicas2Data node replicas (statefulset)
elasticsearch.data.resources{} - cpu limit must be an integerData node resources requests & limits
elasticsearch.data.priorityClassNamenilData priorityClass
elasticsearch.data.heapSize1536mData node heap size
elasticsearch.data.hooks.drain.enabledtrueData nodes: Enable drain pre-stop and post-start hook
elasticsearch.data.persistence.enabledfalseData persistent enabled/disabled
elasticsearch.data.persistence.namedataData statefulset PVC template name
elasticsearch.data.persistence.size30GiData persistent volume size
elasticsearch.data.persistence.storageClassnilData persistent volume Class
elasticsearch.data.persistence.accessModeReadWriteOnceData persistent Access Mode
elasticsearch.data.readinessProbesee values.yaml for defaultsReadiness probes for data-containers
elasticsearch.data.podAnnotations{}Data StatefulSet annotations
elasticsearch.data.nodeSelector{}Node labels for data pod assignment
elasticsearch.data.tolerations[]Data tolerations
elasticsearch.data.terminationGracePeriodSeconds3600Data termination grace period (seconds)
elasticsearch.data.antiAffinitysoftData anti-affinity policy
elasticsearch.data.nodeAffinity{}Data node affinity policy
elasticsearch.data.podManagementPolicyOrderedReadyData pod creation strategy
elasticsearch.data.updateStrategy{type: "onDelete"}Data node update strategy policy

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install myrelease skywalking --set nameOverride=newSkywalking

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm install my-release skywalking -f values.yaml

Tip: You can use the default values.yaml

RBAC Configuration

Roles and RoleBindings resources will be created automatically for OAP .

Tip: You can refer to the default oap-role.yaml file in templates to customize your own.

Ingress TLS

If your cluster allows automatic create/retrieve of TLS certificates (e.g. kube-lego), please refer to the documentation for that mechanism.

To manually configure TLS, first create/retrieve a key & certificate pair for the address(skywalking ui) you wish to protect. Then create a TLS secret in the namespace:

kubectl create secret tls skywalking-tls --cert=path/to/tls.cert --key=path/to/tls.key

Include the secret's name, along with the desired hostnames, in the skywalking-ui Ingress TLS section of your custom values.yaml file:

ui:
  ingress:
    ## If true, Skywalking ui server Ingress will be created
    ##
    enabled: true

    ## Skywalking ui server Ingress hostnames
    ## Must be provided if Ingress is enabled
    ##
    hosts:
      - skywalking.domain.com

    ## Skywalking ui server Ingress TLS configuration
    ## Secrets must be manually created in the namespace
    ##
    tls:
      - secretName: skywalking-tls
        hosts:
          - skywalking.domain.com

Envoy ALS

Envoy ALS(access log service) provides fully logs about RPC routed, including HTTP and TCP.

If you want to open envoy ALS, you can do this by modifying values.yaml.

oap:
  envoy:
    als:
      enabled: true

When envoy als ,will give ServiceAccount clusterrole permission. More envoy als ,please refer to als_setting