import io.dekorate.kubernetes.annotation.KubernetesApplication;
import io.dekorate.kubernetes.annotation.Port;
import io.dekorate.kubernetes.annotation.Probe;
@KubernetesApplication(
name = "myapp",
labels = "app=myapp",
replicas = 3,
ports = @Port(name = "http", containerPort = 8080),
livenessProbe = @Probe(httpActionPath = "/health", initialDelaySeconds = 30, timeoutSeconds = 5),
readinessProbe = @Probe(httpActionPath = "/ready", initialDelaySeconds = 20, timeoutSeconds = 5)
)
public class MyApp {
public static void main(String[] args) {
}
}
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>dekorate-annotations</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>kubernetes-annotations</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>kubernetes-generator</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>kubernetes-decorators</artifactId>
<version>1.15.1</version>
</dependency>
yaml
apiVersion: v1
kind: List
items:
- apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "${app.name}"
labels:
app: "${app.name}"
spec:
replicas: ${app.replicas}
selector:
matchLabels:
app: "${app.name}"
template:
metadata:
labels:
app: "${app.name}"
spec:
containers:
- name: "${app.name}"
image: "${project.groupId}/${project.artifactId}:${project.version}"
ports:
- containerPort: ${app.port.http}
name: http
livenessProbe:
httpGet:
path: "${app.livenessProbe.httpActionPath}"
port: http
initialDelaySeconds: ${app.livenessProbe.initialDelaySeconds}
timeoutSeconds: ${app.livenessProbe.timeoutSeconds}
readinessProbe:
httpGet:
path: "${app.readinessProbe.httpActionPath}"
port: http
initialDelaySeconds: ${app.readinessProbe.initialDelaySeconds}
timeoutSeconds: ${app.readinessProbe.timeoutSeconds}