JavaAgent Introduction
To see the final injected agent’s configuration, we define a CustomDefinitionResource called JavaAgent.
When the pod is injected, the pod will be labeled with sidecar.skywalking.apache.org/succeed, then the controller will watch the specific pod labeled with sidecar.skywalking.apache.org/succeed. After the pod is created, the controller will create JavaAgent(custom resource), which contains the final agent configuration as below.
Spec
| Field Name | Description | 
|---|---|
| podSelector | We hope users can use workloads to create pods, the podSelector is the selector label of workload. | 
| serviceName | serviceName is an important attribute that needs to be printed. | 
| backendService | backendService is an important attribute that needs to be printed. | 
| agentConfiguration | agentConfiguration contains serviceName、backendService and covered agent configuration, other default configurations will not be displayed, please see agent.config for details. | 
Status
| Field Name | Description | 
|---|---|
| creationTime | The creation time of the JavaAgent | 
| lastUpdateTime | The last Update time of the JavaAgent | 
| expectedInjectiedNum | The number of the pod that need to be injected | 
| realInjectedNum | The real number of injected pods. | 
Demo
This demo shows the usage of javaagent. If you want to see the complete process, please see java-agent-injector-usagefor details.
When we use java-agent-injector, we can get custom resources as below.
$ kubectl get javaagent -A
NAMESPACE   NAME                  PODSELECTOR   SERVICENAME            BACKENDSERVICE
default     app-demo1-javaagent   app=demo1     Your_ApplicationName   127.0.0.1:11800
default     app-demo2-javaagent   app=demo2     Your_ApplicationName   127.0.0.1:11800
$ kubectl get pod -l app=demo1
NAME                    READY   STATUS    RESTARTS   AGE
demo1-bb97b8b4d-bkwm4   1/1     Running   0          28s
demo1-bb97b8b4d-wxgs2   1/1     Running   0          28s
$ kubectl get pod -l app=demo2
NAME     READY   STATUS    RESTARTS   AGE
app2-0   1/1     Running   0          27s
app2-1   1/1     Running   0          25s
app2-2   1/1     Running   0          23s
If we want to see more information, we can get the specific javaagent’s yaml as below.
$ kubectl get javaagent app-demo1-javaagent -oyaml
apiVersion: operator.skywalking.apache.org/v1alpha1
kind: JavaAgent
metadata:
  creationTimestamp: "2021-10-14T07:07:12Z"
  generation: 1
  name: app-demo1-javaagent
  namespace: default
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: demo1-bb97b8b4d
    uid: c712924f-4652-4c07-8332-b3938ad72392
  resourceVersion: "330808"
  selfLink: /apis/operator.skywalking.apache.org/v1alpha1/namespaces/default/javaagents/app-demo1-javaagent
  uid: 9350338f-15a5-4832-84d1-530f8d0e1c3b
spec:
  agentConfiguration:
    agent.namespace: default-namespace
    agent.service_name: Your_ApplicationName
    collector.backend_service: 127.0.0.1:11800
  backendService: 127.0.0.1:11800
  podSelector: app=demo1
  serviceName: Your_ApplicationName
status:
  creationTime: "2021-10-14T07:07:12Z"
  expectedInjectiedNum: 2
  lastUpdateTime: "2021-10-14T07:07:14Z"
  realInjectedNum: 2