Skip to content

Commit a89e87e

Browse files
committed
rename example to webservice from nginx
1 parent bf5c54e commit a89e87e

File tree

16 files changed

+127
-100
lines changed

16 files changed

+127
-100
lines changed

samples/nginx-www/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ the html.
88
This is an example input:
99
```yaml
1010
apiVersion: "sample.javaoperatorsdk/v1"
11-
kind: NginxWww
11+
kind: WebServer
1212
metadata:
1313
name: mynginx-hello
1414
spec:

samples/nginx-www/crd/crd.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
apiVersion: apiextensions.k8s.io/v1beta1
22
kind: CustomResourceDefinition
33
metadata:
4-
name: nginxwwws.sample.javaoperatorsdk
4+
name: webservers.sample.javaoperatorsdk
55
spec:
66
group: sample.javaoperatorsdk
77
version: v1
88
scope: Namespaced
99
names:
10-
plural: nginxwwws
11-
singular: nginxwww
12-
kind: NginxWww
10+
plural: webservers
11+
singular: webserver
12+
kind: WebServer
1313
shortNames:
14-
- nw
14+
- ws
1515
validation:
1616
openAPIV3Schema:
1717
type: object

samples/nginx-www/crd/nginx-hello.yaml renamed to samples/nginx-www/crd/webserver.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: "sample.javaoperatorsdk/v1"
2-
kind: NginxWww
2+
kind: WebServer
33
metadata:
4-
name: mynginx-hello
4+
name: hellows
55
spec:
66
html: |
77
<html>

samples/nginx-www/k8s/deployment.yaml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
apiVersion: apps/v1
22
kind: Deployment
33
metadata:
4-
name: nginx-www-operator
5-
namespace: nginx-www-operator
4+
name: webserver-operator
5+
namespace: webserver-operator
66
spec:
77
selector:
88
matchLabels:
9-
app: nginx-www-operator
9+
app: webserver-operator
1010
replicas: 1
1111
template:
1212
metadata:
1313
labels:
14-
app: nginx-www-operator
14+
app: webserver-operator
1515
spec:
16-
serviceAccountName: nginx-www-operator
17-
serviceAccount: nginx-www-operator
16+
serviceAccount: webserver-operator
1817
containers:
1918
- name: operator
20-
image: nginx-www-operator
19+
image: webserver-operator
2120
imagePullPolicy: Never
2221
ports:
2322
- containerPort: 80
@@ -37,17 +36,17 @@ spec:
3736
apiVersion: v1
3837
kind: ServiceAccount
3938
metadata:
40-
name: nginx-www-operator
41-
namespace: nginx-www-operator
39+
name: webserver-operator
40+
namespace: webserver-operator
4241
---
4342
apiVersion: rbac.authorization.k8s.io/v1
4443
kind: ClusterRoleBinding
4544
metadata:
4645
name: operator-admin
4746
subjects:
4847
- kind: ServiceAccount
49-
name: nginx-www-operator
50-
namespace: nginx-www-operator
48+
name: webserver-operator
49+
namespace: webserver-operator
5150
roleRef:
5251
kind: ClusterRole
5352
name: cluster-admin

samples/nginx-www/pom.xml

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,8 @@
44
<modelVersion>4.0.0</modelVersion>
55

66
<groupId>com.github.containersolutions</groupId>
7-
<artifactId>nginx-www-operator</artifactId>
7+
<artifactId>webserver-sample</artifactId>
88
<version>0.3.2-SNAPSHOT</version>
9-
10-
<name>Operator SDK - Samples - Nginx WWW</name>
11-
<description>Nginx Sample</description>
129
<packaging>jar</packaging>
1310

1411
<properties>
@@ -55,20 +52,54 @@
5552
<executions>
5653
<execution>
5754
<id>default</id>
55+
<phase>install</phase>
5856
<goals>
5957
<goal>build</goal>
60-
<goal>push</goal>
6158
</goals>
6259
</execution>
6360
</executions>
6461
<configuration>
65-
<repository>adamsandor83</repository>
66-
<tag>${project.version}</tag>
62+
<repository>webserver-operator</repository>
63+
<tag>latest</tag>
6764
<buildArgs>
68-
<JAR_FILE>nginx-www-operator.jar</JAR_FILE>
65+
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
6966
</buildArgs>
7067
</configuration>
7168
</plugin>
69+
<plugin>
70+
<groupId>org.apache.maven.plugins</groupId>
71+
<artifactId>maven-shade-plugin</artifactId>
72+
<version>2.4.3</version>
73+
<executions>
74+
<execution>
75+
<phase>package</phase>
76+
<goals>
77+
<goal>shade</goal>
78+
</goals>
79+
<configuration>
80+
<createDependencyReducedPom>false</createDependencyReducedPom>
81+
<transformers>
82+
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
83+
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
84+
<manifestEntries>
85+
<Main-Class>com.github.containersolutions.operator.sample.WebServerOperator</Main-Class>
86+
<Build-Number>1.0</Build-Number>
87+
<Multi-Release>true</Multi-Release>
88+
</manifestEntries>
89+
</transformer>
90+
</transformers>
91+
<filters>
92+
<filter>
93+
<artifact>io.fabric8:openshift-client</artifact>
94+
<excludes>
95+
<exclude>io/fabric8/kubernetes/client/Config*</exclude>
96+
</excludes>
97+
</filter>
98+
</filters>
99+
</configuration>
100+
</execution>
101+
</executions>
102+
</plugin>
72103
</plugins>
73104
</build>
74105

samples/nginx-www/src/main/java/com/github/containersolutions/operator/sample/NginxWww.java

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.github.containersolutions.operator.sample;
2+
3+
import io.fabric8.kubernetes.client.CustomResource;
4+
5+
public class WebServer extends CustomResource {
6+
7+
private WebServerSpec spec;
8+
9+
private WebServerStatus status;
10+
11+
public WebServerSpec getSpec() {
12+
return spec;
13+
}
14+
15+
public void setSpec(WebServerSpec spec) {
16+
this.spec = spec;
17+
}
18+
19+
public WebServerStatus getStatus() {
20+
return status;
21+
}
22+
23+
public void setStatus(WebServerStatus status) {
24+
this.status = status;
25+
}
26+
}
Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,60 +5,56 @@
55
import com.github.containersolutions.operator.api.ResourceController;
66
import io.fabric8.kubernetes.api.model.*;
77
import io.fabric8.kubernetes.api.model.apps.Deployment;
8-
import io.fabric8.kubernetes.client.KubernetesClientException;
9-
import io.fabric8.kubernetes.client.Watcher;
10-
import io.fabric8.kubernetes.client.dsl.Resource;
118
import io.fabric8.kubernetes.client.utils.Serialization;
129
import org.apache.commons.lang3.StringUtils;
1310
import org.slf4j.Logger;
1411
import org.slf4j.LoggerFactory;
1512

1613
import java.io.IOException;
1714
import java.io.InputStream;
18-
import java.util.Arrays;
1915
import java.util.HashMap;
2016
import java.util.Map;
2117
import java.util.Optional;
2218

23-
@Controller(customResourceClass = NginxWww.class,
24-
kind = NginxWwwController.KIND,
25-
group = NginxWwwController.GROUP,
26-
customResourceListClass = NginxWwwList.class,
27-
customResourceDonebaleClass = NginxWwwDoneable.class)
28-
public class NginxWwwController implements ResourceController<NginxWww> {
19+
@Controller(customResourceClass = WebServer.class,
20+
kind = WebServerController.KIND,
21+
group = WebServerController.GROUP,
22+
customResourceListClass = WebServerList.class,
23+
customResourceDonebaleClass = WebServerDoneable.class)
24+
public class WebServerController implements ResourceController<WebServer> {
2925

30-
static final String KIND = "NginxWww";
26+
static final String KIND = "WebServer";
3127
static final String GROUP = "sample.javaoperatorsdk";
3228

3329
private final Logger log = LoggerFactory.getLogger(getClass());
3430

3531
@Override
36-
public Optional<NginxWww> createOrUpdateResource(NginxWww nginx, Context<NginxWww> context) {
37-
log.info("Execution createOrUpdateResource for: {}", nginx.getMetadata().getName());
32+
public Optional<WebServer> createOrUpdateResource(WebServer webServer, Context<WebServer> context) {
33+
log.info("Execution createOrUpdateResource for: {}", webServer.getMetadata().getName());
3834

39-
String ns = nginx.getMetadata().getNamespace();
35+
String ns = webServer.getMetadata().getNamespace();
4036

4137
Map<String, String> data = new HashMap<>();
42-
data.put("index.html", nginx.getSpec().getHtml());
38+
data.put("index.html", webServer.getSpec().getHtml());
4339

4440
ConfigMap htmlConfigMap = new ConfigMapBuilder()
4541
.withMetadata(new ObjectMetaBuilder()
46-
.withName(configMapName(nginx))
42+
.withName(configMapName(webServer))
4743
.withNamespace(ns)
4844
.build())
4945
.withData(data)
5046
.build();
5147

52-
Deployment deployment = loadYaml(Deployment.class, "nginx-deployment.yaml");
53-
deployment.getMetadata().setName(deploymentName(nginx));
48+
Deployment deployment = loadYaml(Deployment.class, "deployment.yaml");
49+
deployment.getMetadata().setName(deploymentName(webServer));
5450
deployment.getMetadata().setNamespace(ns);
55-
deployment.getSpec().getSelector().getMatchLabels().put("app", deploymentName(nginx));
56-
deployment.getSpec().getTemplate().getMetadata().getLabels().put("app", deploymentName(nginx));
51+
deployment.getSpec().getSelector().getMatchLabels().put("app", deploymentName(webServer));
52+
deployment.getSpec().getTemplate().getMetadata().getLabels().put("app", deploymentName(webServer));
5753
deployment.getSpec().getTemplate().getSpec().getVolumes().get(0).setConfigMap(
58-
new ConfigMapVolumeSourceBuilder().withName(configMapName(nginx)).build());
54+
new ConfigMapVolumeSourceBuilder().withName(configMapName(webServer)).build());
5955

60-
Service service = loadYaml(Service.class, "nginx-service.yaml");
61-
service.getMetadata().setName(serviceName(nginx));
56+
Service service = loadYaml(Service.class, "service.yaml");
57+
service.getMetadata().setName(serviceName(webServer));
6258
service.getMetadata().setNamespace(ns);
6359
service.getSpec().setSelector(deployment.getSpec().getTemplate().getMetadata().getLabels());
6460

@@ -70,26 +66,29 @@ public Optional<NginxWww> createOrUpdateResource(NginxWww nginx, Context<NginxWw
7066
context.getK8sClient().configMaps().inNamespace(ns).createOrReplace(htmlConfigMap);
7167
log.info("Creating or updating Deployment {}", deployment.getMetadata().getName());
7268
context.getK8sClient().apps().deployments().inNamespace(ns).createOrReplace(deployment);
73-
log.info("Creating or updating Service {}", service.getMetadata().getName());
74-
context.getK8sClient().services().inNamespace(ns).createOrReplace(service);
69+
70+
if (context.getK8sClient().services().inNamespace(ns).withName(service.getMetadata().getName()).get() == null) {
71+
log.info("Creating Service {}", service.getMetadata().getName());
72+
context.getK8sClient().services().inNamespace(ns).createOrReplace(service);
73+
}
7574

7675
if (existingConfigMap != null) {
7776
if (!StringUtils.equals(existingConfigMap.getData().get("index.html"), htmlConfigMap.getData().get("index.html"))) {
7877
log.info("Restarting pods because HTML has changed");
79-
context.getK8sClient().pods().inNamespace(ns).withLabel("app", deploymentName(nginx)).delete();
78+
context.getK8sClient().pods().inNamespace(ns).withLabel("app", deploymentName(webServer)).delete();
8079
}
8180
}
8281

83-
var status = new NginxWwwStatus();
82+
var status = new WebServerStatus();
8483
status.setHtmlConfigMap(htmlConfigMap.getMetadata().getName());
8584
status.setAreWeGood("Yes!");
86-
nginx.setStatus(status);
85+
webServer.setStatus(status);
8786

88-
return Optional.of(nginx);
87+
return Optional.of(webServer);
8988
}
9089

9190
@Override
92-
public boolean deleteResource(NginxWww nginx, Context<NginxWww> context) {
91+
public boolean deleteResource(WebServer nginx, Context<WebServer> context) {
9392
log.info("Execution deleteResource for: {}", nginx.getMetadata().getName());
9493

9594
log.info("Deleting ConfigMap {}", configMapName(nginx));
@@ -118,15 +117,15 @@ public boolean deleteResource(NginxWww nginx, Context<NginxWww> context) {
118117
return true;
119118
}
120119

121-
private static String configMapName(NginxWww nginx) {
120+
private static String configMapName(WebServer nginx) {
122121
return nginx.getMetadata().getName() + "-html";
123122
}
124123

125-
private static String deploymentName(NginxWww nginx) {
124+
private static String deploymentName(WebServer nginx) {
126125
return nginx.getMetadata().getName();
127126
}
128127

129-
private static String serviceName(NginxWww nginx) {
128+
private static String serviceName(WebServer nginx) {
130129
return nginx.getMetadata().getName();
131130
}
132131

samples/nginx-www/src/main/java/com/github/containersolutions/operator/sample/NginxWwwDoneable.java renamed to samples/nginx-www/src/main/java/com/github/containersolutions/operator/sample/WebServerDoneable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import io.fabric8.kubernetes.api.builder.Function;
44
import io.fabric8.kubernetes.client.CustomResourceDoneable;
55

6-
public class NginxWwwDoneable extends CustomResourceDoneable<NginxWww> {
7-
public NginxWwwDoneable(NginxWww resource, Function<NginxWww, NginxWww> function) {
6+
public class WebServerDoneable extends CustomResourceDoneable<WebServer> {
7+
public WebServerDoneable(WebServer resource, Function<WebServer, WebServer> function) {
88
super(resource, function);
99
}
1010
}

samples/nginx-www/src/main/java/com/github/containersolutions/operator/sample/NginxWwwList.java renamed to samples/nginx-www/src/main/java/com/github/containersolutions/operator/sample/WebServerList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
import io.fabric8.kubernetes.client.CustomResourceList;
44

5-
public class NginxWwwList extends CustomResourceList<NginxWww> {
5+
public class WebServerList extends CustomResourceList<WebServer> {
66
}

0 commit comments

Comments
 (0)