这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions kubernetes-modules/k8s-operator/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
release.properties
.flattened-pom.xml

# Eclipse
.project
.classpath
.settings/
bin/

# IntelliJ
.idea
*.ipr
*.iml
*.iws

# NetBeans
nb-configuration.xml

# Visual Studio Code
.vscode
.factorypath

# OSX
.DS_Store

# Vim
*.swp
*.swo

# patch
*.orig
*.rej

# Local environment
.env

4 changes: 4 additions & 0 deletions kubernetes-modules/k8s-operator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Dependency-Track operator

This sample demonstrates how to create a simple operator using the Java Operator Framework. In our case, the operator will facilitate
the deployment of a Dependency-Track instance on a cluster.
88 changes: 88 additions & 0 deletions kubernetes-modules/k8s-operator/k8s/deptrack-controller.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
apiVersion: v1
kind: Namespace
metadata:
name: deptrack-operator

---
apiVersion: v1
kind: ServiceAccount
metadata:
name: deptrack-operator
namespace: deptrack-operator

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deptrack-operator
namespace: deptrack-operator
spec:
selector:
matchLabels:
app: deptrack-operator
template:
metadata:
labels:
app: deptrack-operator
spec:
serviceAccountName: deptrack-operator
containers:
- name: operator
image: deptrack-operator
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
initialDelaySeconds: 30

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: deptrack-operator-admin
subjects:
- kind: ServiceAccount
name: deptrack-operator
namespace: deptrack-operator
roleRef:
kind: ClusterRole
name: deptrack-operator
apiGroup: ""

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: deptrack-operator
rules:
- apiGroups:
- ""
resources:
- deployments
- services
- ingresses
- configmaps
- secrets
verbs:
- '*'
- apiGroups:
- "apiextensions.k8s.io"
resources:
- customresourcedefinitions
verbs:
- '*'
- apiGroups:
- "com.baeldung"
resources:
- deptrackresources
- deptrackresources/status
verbs:
- '*'
12 changes: 12 additions & 0 deletions kubernetes-modules/k8s-operator/k8s/test-resource.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: com.baeldung/v1
kind: DeptrackResource
metadata:
namespace: test
name: deptrack1
labels:
project: tutorials
annotations:
author: Philippe Sevestre

spec:
ingressHostname: deptrack.172.31.42.16.nip.io
111 changes: 111 additions & 0 deletions kubernetes-modules/k8s-operator/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.baeldung</groupId>
<artifactId>parent-boot-3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>./../../parent-boot-3</relativePath>
</parent>

<artifactId>k8s-operator</artifactId>
<version>0.1.0-SNAPSHOT</version>
<name>k8s-operator</name>
<packaging>jar</packaging>

<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<josdk.version>4.6.0</josdk.version>
<fabric8-client.version>6.9.2</fabric8-client.version>
<bouncycastle.version>1.77</bouncycastle.version>
<slf4j.version>2.0.9</slf4j.version>
<operator-framework-spring-boot.version>5.4.0</operator-framework-spring-boot.version>
</properties>


<dependencies>

<dependency>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>operator-framework-spring-boot-starter</artifactId>
<version>${operator-framework-spring-boot.version}</version>
</dependency>

<dependency>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>operator-framework-spring-boot-starter-test</artifactId>
<version>${operator-framework-spring-boot.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>io.fabric8</groupId>
<artifactId>crd-generator-apt</artifactId>
<version>${fabric8-client.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>${bouncycastle.version}</version>
</dependency>

<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
<version>${bouncycastle.version}</version>
</dependency>

<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<scope>test</scope>
</dependency>

</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>deptrack-operator</name>
</image>
</configuration>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.baeldung.operators.deptrack;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class Application {

private static final Logger log = LoggerFactory.getLogger(Application.class);

public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.baeldung.operators.deptrack.config;

import org.springframework.context.annotation.Configuration;

@Configuration
public class OperatorConfiguration {



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.baeldung.operators.deptrack.controller.deptrack;

import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

import com.baeldung.operators.deptrack.resources.deptrack.DeptrackApiServerDeploymentResource;
import com.baeldung.operators.deptrack.resources.deptrack.DeptrackApiServerServiceResource;
import com.baeldung.operators.deptrack.resources.deptrack.DeptrackFrontendDeploymentResource;
import com.baeldung.operators.deptrack.resources.deptrack.DeptrackFrontendServiceResource;
import com.baeldung.operators.deptrack.resources.deptrack.DeptrackIngressResource;
import com.baeldung.operators.deptrack.resources.deptrack.DeptrackResource;

import io.javaoperatorsdk.operator.api.reconciler.Context;
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@ControllerConfiguration(dependents = {
@Dependent(name = DeptrackApiServerDeploymentResource.COMPONENT, type = DeptrackApiServerDeploymentResource.class),
@Dependent(name = DeptrackFrontendDeploymentResource.COMPONENT, type = DeptrackFrontendDeploymentResource.class),
@Dependent(name = DeptrackApiServerServiceResource.COMPONENT, type = DeptrackApiServerServiceResource.class),
@Dependent(name = DeptrackFrontendServiceResource.COMPONENT, type = DeptrackFrontendServiceResource.class),
@Dependent(type = DeptrackIngressResource.class )
})
@Slf4j
@RequiredArgsConstructor
@Component
public class DeptrackOperatorReconciler implements Reconciler<DeptrackResource> {

private final ApplicationContext ctx;


@PostConstruct
void onPostConstruct() {
log.info("Reconciler created");
}

@Override
public UpdateControl<DeptrackResource> reconcile(DeptrackResource resource, Context<DeptrackResource> context) throws Exception {
return UpdateControl.noUpdate();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.baeldung.operators.deptrack.resources;

public interface Constants {

String OPERATOR_NAME = "dependency-track-demo-operator";
String DEFAULT_API_SERVER_IMAGE = "dependencytrack/apiserver";
String DEFAULT_FRONTEND_IMAGE = "dependencytrack/frontend";

}
Loading