deploy/platform/kubernetes/templates/feature-agent/resources.yaml (592 lines of code) (raw):

# 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. # {{- if or .Values.features.agent.enabled .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }} --- apiVersion: v1 kind: Namespace metadata: name: {{ .Values.sampleServices.namespace }} labels: {{- if .Values.features.javaAgentInjector.enabled }} swck-injection: enabled {{- end }} {{- if or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }} istio-injection: enabled {{- end }} --- apiVersion: v1 kind: Service metadata: name: gateway namespace: {{ .Values.sampleServices.namespace }} spec: selector: app: gateway ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: gateway-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: gateway spec: replicas: 1 selector: matchLabels: app: gateway template: metadata: labels: # @feature: java-agent-injector; enable the java agent injector swck-java-agent-injected: "true" app: gateway annotations: sidecar.istio.io/inject: "{{ or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }}" # @feature: java-agent-injector; set the java agent configuration strategy.skywalking.apache.org/inject.Container: "gateway" strategy.skywalking.apache.org/agent.Overlay: "true" agent.skywalking.apache.org/agent.service_name: "agent::gateway" optional.skywalking.apache.org: "spring-cloud-gateway-3.x" sidecar.skywalking.apache.org/initcontainer.Image: "{{ .Values.features.javaAgentInjector.agentImage }}" spec: containers: - name: gateway {{- if .Values.features.javaAgentInjector.enabled }} # @feature: java-agent-injector; if the java agent injector is enabled, we use the agentless image and let the injector inject the agent. image: "{{ .Values.sampleServices.hub }}/gateway-service:{{ .Values.sampleServices.tag }}-agentless" {{- else }} image: "{{ .Values.sampleServices.hub }}/gateway-service:{{ .Values.sampleServices.tag }}" {{- end }} imagePullPolicy: IfNotPresent ports: - containerPort: 80 # @feature: agent; set env to configure java agent, If we use injector, we don't need to set env, only to configure java gent through annotation env: - name: SW_AGENT_NAME value: agent::gateway - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: {{ template "skywalking.collector.address" . }} --- apiVersion: v1 kind: Service metadata: name: songs namespace: {{ .Values.sampleServices.namespace }} spec: selector: app: songs ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: songs-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: songs spec: replicas: 1 selector: matchLabels: app: songs template: metadata: labels: # @feature: java-agent-injector; enable the java agent injector swck-java-agent-injected: "true" app: songs annotations: sidecar.istio.io/inject: "{{ or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }}" # @feature: java-agent-injector; set the java agent configuration strategy.skywalking.apache.org/inject.Container: "songs" strategy.skywalking.apache.org/agent.Overlay: "true" agent.skywalking.apache.org/agent.service_name: "agent::songs" optional.skywalking.apache.org: "guava-cache-plugin" sidecar.skywalking.apache.org/initcontainer.Image: "{{ .Values.features.javaAgentInjector.agentImage }}" spec: containers: - name: songs {{- if .Values.features.javaAgentInjector.enabled }} # @feature: java-agent-injector; if the java agent injector is enabled, we use the agentless image and let the injector inject the agent. image: "{{ .Values.sampleServices.hub }}/songs-service:{{ .Values.sampleServices.tag }}-agentless" {{- else }} image: "{{ .Values.sampleServices.hub }}/songs-service:{{ .Values.sampleServices.tag }}" {{- end }} imagePullPolicy: IfNotPresent ports: - containerPort: 80 # @feature: agent; set env to configure java agent, If we use injector, we don't need to set env, only need to configure java agent through annotation env: - name: SW_AGENT_NAME value: agent::songs - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: {{ template "skywalking.collector.address" . }} - name: ACTIVE_MQ_URL value: tcp://activemq:61616 - name: ACTIVE_MQ_QUEUE value: queue-songs-ping {{- if .Values.features.postgresqlMonitor.enabled }} - name: DATA_SOURCE_URL value: jdbc:postgresql://psql.{{ .Release.Namespace }}.svc.cluster.local:5432/postgres - name: DATA_SOURCE_USER value: postgres - name: DATA_SOURCE_PASSWORD value: password {{- end }} --- apiVersion: v1 kind: Service metadata: name: rcmd namespace: {{ .Values.sampleServices.namespace }} spec: selector: app: recommendation ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: recommendation-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: recommendation spec: replicas: 1 selector: matchLabels: app: recommendation template: metadata: labels: app: recommendation annotations: sidecar.istio.io/inject: "{{ or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }}" spec: containers: - name: recommendation image: "{{ .Values.sampleServices.hub }}/recommendation-service:{{ .Values.sampleServices.tag }}" imagePullPolicy: IfNotPresent ports: - containerPort: 80 env: - name: SW_AGENT_NAME value: agent::recommendation - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: {{ template "skywalking.collector.address" . }} --- apiVersion: v1 kind: Service metadata: name: app namespace: {{ .Values.sampleServices.namespace }} spec: selector: app: app ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: app-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: app spec: replicas: 1 selector: matchLabels: app: app template: metadata: labels: app: app annotations: sidecar.istio.io/inject: "{{ or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }}" spec: containers: - name: app image: "{{ .Values.sampleServices.hub }}/app:{{ .Values.sampleServices.tag }}" imagePullPolicy: IfNotPresent ports: - containerPort: 80 env: - name: SW_AGENT_NAME_SERVER value: agent::app - name: REACT_APP_SW_AGENT_NAME_UI value: agent::ui - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: {{ template "skywalking.collector.address" . }} --- apiVersion: apps/v1 kind: Deployment metadata: name: loadgen-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: loadgen spec: replicas: 1 selector: matchLabels: app: loadgen template: metadata: labels: app: loadgen annotations: sidecar.istio.io/inject: "{{ or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }}" spec: containers: - name: app image: "{{ .Values.sampleServices.hub }}/load-gen:{{ .Values.sampleServices.tag }}" imagePullPolicy: IfNotPresent --- apiVersion: v1 kind: ConfigMap metadata: name: apisix-config namespace: {{ .Values.sampleServices.namespace }} labels: app: apisix-config data: apisix: | routes: - uri: /browser/* service_id: 1 - uri: /v3/* service_id: 1 - uri: /homepage service_id: 2 plugins: skywalking: service_name: ${{ "{{" }}SW_AGENT_SERVICE{{ "}}" }} service_instance_name: ${{ "{{" }}SW_AGENT_SERVICE_INSTANCE{{ "}}" }} endpoint_addr: {{ template "skywalking.oap.address.http" . }} - uri: /test service_id: 2 plugins: skywalking: service_name: ${{"{{"}}SW_AGENT_SERVICE{{"}}"}} service_instance_name: ${{"{{"}}SW_AGENT_SERVICE_INSTANCE{{"}}"}} endpoint_addr: {{ template "skywalking.oap.address.http" . }} services: - id: 1 upstream_id: 1 - id: 2 upstream_id: 2 upstreams: - id: 1 nodes: "{{ template "skywalking.oap.address.host" . }}:12800": 1 type: roundrobin - id: 2 nodes: "app:80": 1 type: roundrobin global_rules: - id: 1 plugins: prometheus: export_addr: ip: "0.0.0.0" port: 9091 #END config: | apisix: node_listen: 80 enable_ipv6: false enable_admin: false config_center: yaml plugin_attr: prometheus: export_addr: ip: "0.0.0.0" port: 9091 skywalking: service_name: ${{"{{"}}SW_AGENT_SERVICE{{"}}"}} service_instance_name: ${{"{{"}}SW_AGENT_SERVICE_INSTANCE{{"}}"}} endpoint_addr: {{ template "skywalking.oap.address.http" . }} plugins: - prometheus - skywalking nginx_config: http_server_configuration_snippet: | location ~ \.(gif|jpg|png|js|css|html)$ { root /app/build; index index.html; } --- apiVersion: v1 kind: ConfigMap metadata: name: activemq-config namespace: {{ .Values.sampleServices.namespace }} labels: app: activemq-config data: activemq: | <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>file:${activemq.conf}/credentials.properties</value> </property> </bean> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="${ACTIVEMQ_BROKER_NAME}" dataDirectory="${activemq.data}"> <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" > <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="1000"/> </pendingMessageLimitStrategy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> <managementContext> <managementContext createConnector="false"/> </managementContext> <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> <systemUsage> <systemUsage> <memoryUsage> <memoryUsage percentOfJvmHeap="70" /> </memoryUsage> <storeUsage> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> </systemUsage> <transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> </transportConnectors> <shutdownHooks> <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" /> </shutdownHooks> </broker> <import resource="jetty.xml"/> </beans> config: | startDelaySeconds: 10 hostPort: localhost:1616 ssl: false lowercaseOutputName: false lowercaseOutputLabelNames: false includeObjectNames: ["org.apache.activemq:*","java.lang:type=OperatingSystem","java.lang:type=GarbageCollector,*","java.lang:type=Threading","java.lang:type=Runtime","java.lang:type=Memory","java.lang:name=*"] excludeObjectNames: ["org.apache.activemq:type=ColumnFamily,*"] autoExcludeObjectNameAttributes: true excludeObjectNameAttributes: "java.lang:type=OperatingSystem": - "ObjectName" "java.lang:type=Runtime": - "ClassPath" - "SystemProperties" rules: - pattern: ".*" --- apiVersion: apps/v1 kind: Deployment metadata: name: frontend-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: frontend spec: replicas: 1 selector: matchLabels: app: frontend template: metadata: labels: app: frontend annotations: sidecar.istio.io/inject: "{{ or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }}" spec: containers: - name: frontend image: "{{ .Values.sampleServices.hub }}/frontend:{{ .Values.sampleServices.tag }}" imagePullPolicy: IfNotPresent resources: limits: cpu: 500m memory: "256Mi" requests: cpu: 500m memory: "256Mi" ports: - containerPort: 80 name: http - containerPort: 9091 # APISIX Prometheus plugin port name: metrics env: - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: {{ template "skywalking.collector.address" . }} - name: SW_SERVICE_INSTANCE valueFrom: fieldRef: fieldPath: metadata.name volumeMounts: - name: apisix-config mountPath: /usr/local/apisix/conf/config.yaml subPath: config - name: apisix-config mountPath: /usr/local/apisix/conf/apisix.yaml subPath: apisix volumes: - name: apisix-config configMap: name: apisix-config --- apiVersion: v1 kind: Service metadata: name: frontend namespace: {{ .Values.sampleServices.namespace }} spec: selector: app: frontend ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: activemq-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: activemq spec: replicas: 1 selector: matchLabels: app: activemq template: metadata: labels: app: activemq annotations: sidecar.istio.io/inject: "false" spec: containers: - name: activemq image: rmohr/activemq:5.15.9 imagePullPolicy: IfNotPresent env: - name: ACTIVEMQ_SUNJMX_START value: "-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.rmi.port=1616 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" - name: ACTIVEMQ_BROKER_NAME value: "activemq-broker" - name: ACTIVEMQ_OPTS value: "-Xmx128m -Xms128m" resources: limits: cpu: 100m memory: "256Mi" requests: cpu: 100m memory: "128Mi" volumeMounts: - name: activemq-config mountPath: /opt/activemq/conf/activemq.xml subPath: activemq {{- if .Values.features.activemqMonitor.enabled }} - name: activemq-exporter image: bitnami/jmx-exporter:0.20.0 imagePullPolicy: IfNotPresent ports: - containerPort: 5556 name: metrics resources: limits: cpu: 100m memory: "256Mi" requests: cpu: 100m memory: "128Mi" volumeMounts: - name: activemq-config mountPath: /opt/bitnami/jmx-exporter/example_configs/httpserver_sample_config.yml subPath: config {{- end }} volumes: - name: activemq-config configMap: name: activemq-config --- apiVersion: v1 kind: Service metadata: name: activemq namespace: {{ .Values.sampleServices.namespace }} spec: selector: app: activemq ports: - protocol: TCP port: 61616 targetPort: 61616 {{- end }} --- apiVersion: apps/v1 kind: Deployment metadata: name: rating-deployment namespace: {{ .Values.sampleServices.namespace }} labels: app: rating spec: replicas: 1 selector: matchLabels: app: rating template: metadata: labels: app: rating annotations: sidecar.istio.io/inject: "{{ or .Values.features.als.enabled .Values.features.istiodMonitor.enabled .Values.features.meshWithAgent }}" spec: containers: - name: rating image: "{{ .Values.sampleServices.hub }}/rating-service:{{ .Values.sampleServices.tag }}" imagePullPolicy: IfNotPresent ports: - containerPort: 80 env: - name: SW_AGENT_NAME value: agent::rating - name: SW_AGENT_REPORTER_GRPC_BACKEND_SERVICE value: {{ template "skywalking.collector.address" . }} --- apiVersion: v1 kind: Service metadata: name: rating namespace: {{ .Values.sampleServices.namespace }} spec: selector: app: rating ports: - protocol: TCP port: 80 targetPort: 80