Tanzu Application Platform 1.1 (Iterate Profile) をKindにインストールし"Source Test to URL"を試すメモ
Tanzu Application Platform 1.1 をKindにインストールします。
本記事ではTAPをInstallし、Out of the Box Supply Chain with Testingを有効にし、"Hello World"なアプリケーションをソースコードからテストを経てデプロイする機能("Source Test to URL")を試します。 また、HTTPSを有効にします。
目次
Kindクラスタの作成
cat <<EOF > kind-expose-port.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 31443 # expose port 31443 of the node to port 80 on the host for use later by Contour ingress (envoy)
hostPort: 443
- containerPort: 31080 # expose port 31080 of the node to port 80 on the host for use later by Contour ingress (envoy)
hostPort: 80
EOF
kind create cluster --config kind-expose-port.yaml --image kindest/node:v1.23.6
TAP 1.1はK8s 1.24では動かないので、kindのクラスタバージョンでk8sのバージョンを明示します。
Linux上でkindを使用する場合は、“too many open files”が発生する可能性があるので、 次のコマンドを実行してください。
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=512
Cluster Essentials for VMware Tanzuのインストール
TAPのインストールに必要なKapp ControllerとSecretgen Controllerをデプロイするために Cluster Essentials for VMware Tanzu をインストールします。
# Mac
pivnet download-product-files --product-slug='tanzu-cluster-essentials' --release-version='1.1.0' --product-file-id=1191985
# Linux
pivnet download-product-files --product-slug='tanzu-cluster-essentials' --release-version='1.1.0' --product-file-id=1191987
# Windows
pivnet download-product-files --product-slug='tanzu-cluster-essentials' --release-version='1.1.0' --product-file-id=1191983
TANZUNET_USERNAME=...
TANZUNET_PASSWORD=...
mkdir tanzu-cluster-essentials
tar xzvf tanzu-cluster-essentials-*-amd64-1.1.0.tgz -C tanzu-cluster-essentials
export INSTALL_BUNDLE=registry.tanzu.vmware.com/tanzu-cluster-essentials/cluster-essentials-bundle:1.1.0
export INSTALL_REGISTRY_HOSTNAME=registry.tanzu.vmware.com
export INSTALL_REGISTRY_USERNAME=${TANZUNET_USERNAME}
export INSTALL_REGISTRY_PASSWORD=${TANZUNET_PASSWORD}
cd tanzu-cluster-essentials
./install.sh --yes
cd ..
Tanzu Application Platformのインストール
TAP用Package Repositoryの登録
TANZUNET_USERNAME=...
TANZUNET_PASSWORD=...
kubectl create ns tap-install
tanzu secret registry add tap-registry \
--username "${TANZUNET_USERNAME}" \
--password "${TANZUNET_PASSWORD}" \
--server registry.tanzu.vmware.com \
--export-to-all-namespaces \
--yes \
--namespace tap-install
tanzu package repository add tanzu-tap-repository \
--url registry.tanzu.vmware.com/tanzu-application-platform/tap-packages:1.1.1 \
--namespace tap-install
Iterate Profileのインストール
GITHUB_USERNAME=...
GITHUB_API_TOKEN=...
cat <<EOF > tap-values.yml
profile: iterate
ceip_policy_disclosed: true
cnrs:
domain_name: vcap.me
domain_template: "{{.Name}}-{{.Namespace}}.{{.Domain}}"
default_tls_secret: tanzu-system-ingress/cnrs-default-tls
provider: local
buildservice:
kp_default_repository: ghcr.io/${GITHUB_USERNAME}/build-service
kp_default_repository_username: ${GITHUB_USERNAME}
kp_default_repository_password: ${GITHUB_API_TOKEN}
tanzunet_username: ${TANZUNET_USERNAME}
tanzunet_password: ${TANZUNET_PASSWORD}
enable_automatic_dependency_updates: true
descriptor_name: full
supply_chain: testing
ootb_supply_chain_testing:
registry:
server: ghcr.io
repository: ${GITHUB_USERNAME}
contour:
envoy:
service:
nodePorts:
http: 31080
https: 31443
package_overlays:
- name: cnrs
secrets:
- name: cnrs-default-tls
- name: cnrs-slim
EOF
*.vcap.meは127.0.0.1に解決されます。
Cloud Native Runtimes (Knative) で使用するデフォルトのTLS証明書を用意するための次の定義をoverlayで作成します。以下のドキュメントを参考にしました。
- https://docs.vmware.com/en/Cloud-Native-Runtimes-for-VMware-Tanzu/1.1/tanzu-cloud-native-runtimes-1-1/GUID-external_dns.html
- https://knative.dev/docs/serving/using-a-tls-cert/#manually-adding-a-tls-certificate
cat <<EOF > cnrs-default-tls.yml
#@ load("@ytt:data", "data")
#@ load("@ytt:overlay", "overlay")
#@ namespace = data.values.ingress.external.namespace
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: cnrs-selfsigned-issuer
namespace: #@ namespace
spec:
selfSigned: { }
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: cnrs-ca
namespace: #@ namespace
spec:
commonName: cnrs-ca
isCA: true
issuerRef:
kind: Issuer
name: cnrs-selfsigned-issuer
secretName: cnrs-ca
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: cnrs-ca-issuer
namespace: #@ namespace
spec:
ca:
secretName: cnrs-ca
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: cnrs-default-tls
namespace: #@ namespace
spec:
dnsNames:
- #@ "*.{}".format(data.values.domain_name)
issuerRef:
kind: Issuer
name: cnrs-ca-issuer
secretName: cnrs-default-tls
---
apiVersion: projectcontour.io/v1
kind: TLSCertificateDelegation
metadata:
name: contour-delegation
namespace: #@ namespace
spec:
delegations:
- secretName: cnrs-default-tls
targetNamespaces:
- "*"
#@overlay/match by=overlay.subset({"metadata":{"name":"config-network"}, "kind": "ConfigMap"})
---
data:
#@overlay/match missing_ok=True
default-external-scheme: https
EOF
Cloud Native RuntimesからKnative Serving以外のリソースを削除するoverlayを作成します。
cat <<EOF > cnrs-slim.yml
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.subset({"metadata":{"namespace":"knative-eventing"}}), expects="1+"
#@overlay/remove
---
#@overlay/match by=overlay.subset({"metadata":{"namespace":"knative-sources"}}), expects="1+"
#@overlay/remove
---
#@overlay/match by=overlay.subset({"metadata":{"namespace":"triggermesh"}}), expects="1+"
#@overlay/remove
---
#@overlay/match by=overlay.subset({"metadata":{"namespace":"vmware-sources"}}), expects="1+"
#@overlay/remove
---
EOF
overlayファイルをSecretとして作成します。
kubectl -n tap-install create secret generic cnrs-default-tls \
-o yaml \
--dry-run=client \
--from-file=cnrs-default-tls.yml \
| kubectl apply -f-
kubectl -n tap-install create secret generic cnrs-slim \
-o yaml \
--dry-run=client \
--from-file=cnrs-slim.yml \
| kubectl apply -f-
TAPをインストールします。
tanzu package install tap -p tap.tanzu.vmware.com -v 1.1.1 --values-file tap-values.yml -n tap-install
インストールの進捗は次のコマンドで確認します。
watch kubectl get app -n tap-install
全てのappが Reconcile succeeded になるまで待ちます。
$ kubectl get app -n tap-install
NAME DESCRIPTION SINCE-DEPLOY AGE
appliveview Reconcile succeeded 9m53s 143m
appliveview-connector Reconcile succeeded 3m25s 153m
appliveview-conventions Reconcile succeeded 14m 149m
buildservice Reconcile succeeded 97s 153m
cartographer Reconcile succeeded 8m8s 152m
cert-manager Reconcile succeeded 10m 153m
cnrs Reconcile succeeded 5m39s 143m
contour Reconcile succeeded 84s 152m
conventions-controller Reconcile succeeded 7m7s 152m
developer-conventions Reconcile succeeded 4m20s 149m
fluxcd-source-controller Reconcile succeeded 4m41s 153m
image-policy-webhook Reconcile succeeded 2m55s 152m
ootb-delivery-basic Reconcile succeeded 7m36s 150m
ootb-supply-chain-testing Reconcile succeeded 17m 150m
ootb-templates Reconcile succeeded 8m25s 150m
service-bindings Reconcile succeeded 3m10s 153m
services-toolkit Reconcile succeeded 3m55s 153m
source-controller Reconcile succeeded 4m50s 153m
spring-boot-conventions Reconcile succeeded 4m16s 149m
tap Reconcile succeeded 7m14s 153m
tap-auth Reconcile succeeded 6m55s 153m
tap-telemetry Reconcile succeeded 5m49s 153m
tekton-pipelines Reconcile succeeded 5m1s 153m
インストールされたパッケージは次の通りです。
$ kubectl get packageinstall -n tap-install
NAME PACKAGE NAME PACKAGE VERSION DESCRIPTION AGE
appliveview backend.appliveview.tanzu.vmware.com 1.1.1 Reconcile succeeded 144m
appliveview-connector connector.appliveview.tanzu.vmware.com 1.1.1 Reconcile succeeded 153m
appliveview-conventions conventions.appliveview.tanzu.vmware.com 1.1.1 Reconcile succeeded 149m
buildservice buildservice.tanzu.vmware.com 1.5.1 Reconcile succeeded 153m
cartographer cartographer.tanzu.vmware.com 0.3.0 Reconcile succeeded 153m
cert-manager cert-manager.tanzu.vmware.com 1.5.3+tap.2 Reconcile succeeded 153m
cnrs cnrs.tanzu.vmware.com 1.2.0 Reconcile succeeded 144m
contour contour.tanzu.vmware.com 1.18.2+tap.2 Reconcile succeeded 153m
conventions-controller controller.conventions.apps.tanzu.vmware.com 0.6.3 Reconcile succeeded 153m
developer-conventions developer-conventions.tanzu.vmware.com 0.6.0 Reconcile succeeded 149m
fluxcd-source-controller fluxcd.source.controller.tanzu.vmware.com 0.16.4 Reconcile succeeded 153m
image-policy-webhook image-policy-webhook.signing.apps.tanzu.vmware.com 1.1.2 Reconcile succeeded 153m
ootb-delivery-basic ootb-delivery-basic.tanzu.vmware.com 0.7.1 Reconcile succeeded 150m
ootb-supply-chain-testing ootb-supply-chain-testing.tanzu.vmware.com 0.7.1 Reconcile succeeded 150m
ootb-templates ootb-templates.tanzu.vmware.com 0.7.1 Reconcile succeeded 150m
service-bindings service-bindings.labs.vmware.com 0.7.1 Reconcile succeeded 153m
services-toolkit services-toolkit.tanzu.vmware.com 0.6.0 Reconcile succeeded 153m
source-controller controller.source.apps.tanzu.vmware.com 0.3.3 Reconcile succeeded 153m
spring-boot-conventions spring-boot-conventions.tanzu.vmware.com 0.4.0 Reconcile succeeded 149m
tap tap.tanzu.vmware.com 1.1.1 Reconcile succeeded 153m
tap-auth tap-auth.tanzu.vmware.com 1.0.1 Reconcile succeeded 153m
tap-telemetry tap-telemetry.tanzu.vmware.com 0.1.4 Reconcile succeeded 153m
tekton-pipelines tekton.tanzu.vmware.com 0.33.5 Reconcile succeeded 153m
デプロイされたPodは次の通りです。
$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
app-live-view-connector application-live-view-connector-tb8dj 1/1 Running 0 152m
app-live-view-conventions appliveview-webhook-584458f5b5-czfsv 1/1 Running 0 148m
app-live-view application-live-view-server-f9fbd458c-g7t77 1/1 Running 0 142m
build-service build-pod-image-fetcher-rtmrb 5/5 Running 0 152m
build-service dependency-updater-controller-5d875b4d6d-6djzk 1/1 Running 0 76m
build-service secret-syncer-controller-59c88497c6-7z4nc 1/1 Running 0 152m
build-service smart-warmer-image-fetcher-8qwn9 4/4 Running 0 50m
build-service warmer-controller-5df5fc6897-ndkq8 1/1 Running 0 152m
cartographer-system cartographer-controller-77886667b5-g8scn 1/1 Running 0 152m
cert-injection-webhook cert-injection-webhook-66584fb9f4-kts4f 1/1 Running 0 152m
cert-manager cert-manager-7d46b7749-brpsm 1/1 Running 0 152m
cert-manager cert-manager-cainjector-7c79f5b947-58g4v 1/1 Running 0 152m
cert-manager cert-manager-webhook-6656cb99dd-tpfqp 1/1 Running 0 152m
conventions-system conventions-controller-manager-78d9f869d-dt668 1/1 Running 0 151m
developer-conventions webhook-77675dbc8d-bwdsd 1/1 Running 0 148m
flux-system source-controller-7f6589c9c9-kkwcw 1/1 Running 0 152m
image-policy-system image-policy-controller-manager-7dd95b8798-87j95 2/2 Running 0 151m
kapp-controller kapp-controller-d97d54f99-922rv 1/1 Running 0 166m
knative-serving activator-5bbb6d9549-tmwtq 1/1 Running 0 142m
knative-serving autoscaler-5f495f859f-4mhjl 1/1 Running 0 142m
knative-serving autoscaler-hpa-bf4bbccdb-z5n2p 1/1 Running 0 142m
knative-serving controller-656946dbbc-bw695 1/1 Running 0 142m
knative-serving domain-mapping-66976c7d8d-k2mjm 1/1 Running 0 142m
knative-serving domainmapping-webhook-7457844756-h2jjz 1/1 Running 0 142m
knative-serving net-certmanager-controller-7ff9d5f45-2wm2r 1/1 Running 0 142m
knative-serving net-certmanager-webhook-85bbb4bff7-qmqfn 1/1 Running 0 142m
knative-serving net-contour-controller-844476c6fd-w6vw9 1/1 Running 0 142m
knative-serving webhook-54c9776797-wcgx6 1/1 Running 0 142m
kpack kpack-controller-6d6496c976-bmss6 1/1 Running 0 152m
kpack kpack-webhook-697f99c8df-kf6q5 1/1 Running 0 152m
kube-system coredns-64897985d-jkp8g 1/1 Running 0 3h7m
kube-system coredns-64897985d-pgqct 1/1 Running 0 3h7m
kube-system etcd-kind-control-plane 1/1 Running 0 3h7m
kube-system kindnet-mq2hs 1/1 Running 0 3h7m
kube-system kube-apiserver-kind-control-plane 1/1 Running 0 3h7m
kube-system kube-controller-manager-kind-control-plane 1/1 Running 0 3h7m
kube-system kube-proxy-t8jqn 1/1 Running 0 3h7m
kube-system kube-scheduler-kind-control-plane 1/1 Running 0 3h7m
local-path-storage local-path-provisioner-66b445c94-djcwd 1/1 Running 0 3h7m
secretgen-controller secretgen-controller-5d949bf475-gsz45 1/1 Running 0 164m
service-bindings manager-79db8c7bb8-rnwvp 1/1 Running 0 152m
services-toolkit services-toolkit-controller-manager-ccd8bcd9b-54hwg 1/1 Running 0 152m
source-system source-controller-manager-764984f9bc-6zc9w 1/1 Running 0 152m
spring-boot-convention spring-boot-webhook-54855c95bd-6cvxs 1/1 Running 0 148m
stacks-operator-system controller-manager-846b6b86d4-6stsg 1/1 Running 0 152m
tanzu-system-ingress contour-5476f95c45-cpxr4 1/1 Running 0 151m
tanzu-system-ingress contour-5476f95c45-z9szd 1/1 Running 0 151m
tanzu-system-ingress envoy-nddkw 2/2 Running 0 151m
tap-telemetry tap-telemetry-controller-7b8c6c795c-wsb4k 1/1 Running 0 152m
tekton-pipelines tekton-pipelines-controller-69cfb64974-jnh8z 1/1 Running 0 152m
tekton-pipelines tekton-pipelines-webhook-5c7f96999c-v9llk 1/1 Running 0 152m
Workloadのデプロイ
Workloadを作成するための事前準備
RBACの設定
https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/1.1/tap/GUID-scc-ootb-supply-chain-basic.html (一部変更しています)
kubectl create ns demo
tanzu secret registry add registry-credentials --server ghcr.io --username ${GITHUB_USERNAME} --password ${GITHUB_API_TOKEN} --namespace demo
cat <<EOF | kubectl -n demo apply -f -
apiVersion: v1
kind: Secret
metadata:
name: tap-registry
annotations:
secretgen.carvel.dev/image-pull-secret: ""
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: e30K
---
apiVersion: v1
kind: Secret
metadata:
name: git-ssh
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: default
secrets:
- name: registry-credentials
- name: git-ssh
imagePullSecrets:
- name: registry-credentials
- name: tap-registry
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: default-permit-deliverable
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: deliverable
subjects:
- kind: ServiceAccount
name: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: default-permit-workload
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: workload
subjects:
- kind: ServiceAccount
name: default
EOF
Tekton Pipelineの作成
Mavenのテストを作成します。
cat <<'EOF' > pipeline-maven.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: maven-test-pipeline
labels:
apps.tanzu.vmware.com/pipeline: test
spec:
params:
- name: source-url
- name: source-revision
tasks:
- name: test
params:
- name: source-url
value: $(params.source-url)
- name: source-revision
value: $(params.source-revision)
taskSpec:
params:
- name: source-url
- name: source-revision
steps:
- name: test
image: eclipse-temurin:17
script: |-
set -ex
cd `mktemp -d`
curl -s $(params.source-url) | tar -xzvf -
./mvnw clean test -V --no-transfer-progress
EOF
kubectl apply -f pipeline-maven.yaml -n demo
Javaアプリのデプロイ
tanzu apps workload apply hello-servlet \
--app hello-servlet \
--git-repo https://github.com/making/hello-servlet \
--git-branch master \
--type web \
--label apps.tanzu.vmware.com/has-tests=true \
-n demo \
-y
tanzu apps workload tail hello-servlet -n demo
作成されるリソースを確認したければ次のコマンドをwatchしてください。
watch kubectl get workload,pod,gitrepo,pipelinerun,imgs,build,podintent,taskrun,imagerepository,app,ksvc,certificate,httpproxy -n demo -owide
NAME SOURCE SUPPLYCHAIN READY REASON AGE
workload.carto.run/hello-servlet https://github.com/making/hello-servlet source-test-to-url True Ready 6m40s
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/hello-servlet-00001-deployment-7fd4d86dc6-hx8xv 2/2 Terminating 0 86s 10.244.0.73 kind-control-plane <none> <none>
pod/hello-servlet-build-1-build-pod 0/1 Completed 0 4m31s 10.244.0.71 kind-control-plane <none> <none>
pod/hello-servlet-config-writer-8frnv-pod 0/1 Completed 0 2m20s 10.244.0.72 kind-control-plane <none> <none>
pod/hello-servlet-zccxz-test-pod 0/1 Completed 0 6m30s 10.244.0.69 kind-control-plane <none> <none>
NAME URL READY STATUS AGE
gitrepository.source.toolkit.fluxcd.io/hello-servlet https://github.com/making/hello-servlet True Fetched revision: master/52d3ce0ebf10deab0495845fd36027c5da39efc9 6m38s
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME
pipelinerun.tekton.dev/hello-servlet-zccxz True Succeeded 6m30s 4m42s
NAME LATESTIMAGE READY
image.kpack.io/hello-servlet ghcr.io/making/hello-servlet-demo@sha256:7e6935110173f8b78a96428c1aaf61c89f737394fc73c81a179757b78b8b6d10 True
NAME IMAGE SUCCEEDED
build.kpack.io/hello-servlet-build-1 ghcr.io/making/hello-servlet-demo@sha256:7e6935110173f8b78a96428c1aaf61c89f737394fc73c81a179757b78b8b6d10 True
NAME READY REASON AGE
podintent.conventions.apps.tanzu.vmware.com/hello-servlet True ConventionsApplied 2m34s
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME
taskrun.tekton.dev/hello-servlet-config-writer-8frnv True Succeeded 2m20s 109s
taskrun.tekton.dev/hello-servlet-zccxz-test True Succeeded 6m30s 4m42s
NAME IMAGE URL READY REASON AGE
imagerepository.source.apps.tanzu.vmware.com/hello-servlet-delivery ghcr.io/making/hello-servlet-demo-bundle:2f8b6353-40dc-44c3-b8cd-e9bd76a79bf9 http://source-controller-manager-artifact-service.source-system.svc.cluster.local./imagerepository/demo/hello-servlet-delivery/c7b03e516e1ee38832d8a3155218e57ab73d39565784a48ac118f1f0929e0d78.tar.gz True Ready 6m35s
NAME DESCRIPTION SINCE-DEPLOY AGE
app.kappctrl.k14s.io/hello-servlet Reconcile succeeded 89s 6m35s
NAME URL LATESTCREATED LATESTREADY READY REASON
service.serving.knative.dev/hello-servlet https://hello-servlet-demo.vcap.me hello-servlet-00001 hello-servlet-00001 True
NAME FQDN TLS SECRET STATUS STATUS DESCRIPTION
httpproxy.projectcontour.io/hello-servlet-contour-hello-servlet-demo.vcap.me hello-servlet-demo.vcap.me tanzu-system-ingress/cnrs-default-tls valid Valid HTTPProxy
httpproxy.projectcontour.io/hello-servlet-contour-hello-servlet.demo hello-servlet.demo tanzu-system-ingress/cnrs-default-tls valid Valid HTTPProxy
httpproxy.projectcontour.io/hello-servlet-contour-hello-servlet.demo.svc hello-servlet.demo.svc tanzu-system-ingress/cnrs-default-tls valid Valid HTTPProxy
httpproxy.projectcontour.io/hello-servlet-contour-hello-servlet.demo.svc.cluster.local hello-servlet.demo.svc.cluster.local tanzu-system-ingress/cnrs-default-tls valid Valid HTTPProxy
$ tanzu apps workload get -n demo hello
# hello-servlet: Ready
---
lastTransitionTime: "2022-06-29T16:27:49Z"
message: ""
reason: Ready
status: "True"
type: Ready
Pods
NAME STATUS RESTARTS AGE
hello-servlet-00001-deployment-7fd4d86dc6-hx8xv Terminating 0 109s
hello-servlet-build-1-build-pod Succeeded 0 4m54s
hello-servlet-config-writer-8frnv-pod Succeeded 0 2m43s
hello-servlet-zccxz-test-pod Succeeded 0 6m53s
Knative Services
NAME READY URL
hello-servlet Ready https://hello-servlet-demo.vcap.me
$ kubectl logs -n demo -l app.kubernetes.io/component=test,app.kubernetes.io/part-of=hello-servlet --tail=-1
+ mktemp -d
+ cd /tmp/tmp.scJHLY6S4l
+ curl -s http://source-controller.flux-system.svc.cluster.local./gitrepository/demo/hello-servlet/52d3ce0ebf10deab0495845fd36027c5da39efc9.tar.gz
+ tar -xzvf -
.git/HEAD
.git/config
.git/index
.git/objects/pack/pack-478b43ebe16a8a7de9bbe21585cb2d53165b1d4f.idx
.git/objects/pack/pack-478b43ebe16a8a7de9bbe21585cb2d53165b1d4f.pack
.git/refs/heads/master
.git/refs/remotes/origin/master
.git/shallow
.mvn/wrapper/maven-wrapper.jar
.mvn/wrapper/maven-wrapper.properties
README.md
manifest.yml
mvnw
mvnw.cmd
pom.xml
src/main/java/com/example/hello/HelloServlet.java
src/test/java/com/example/hello/HelloServletTest.java
+ ./mvnw clean test -V --no-transfer-progress
Downloading https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Unzipping /root/.m2/wrapper/dists/apache-maven-3.6.2-bin/664rr97se3slubllb7r6fll7u/apache-maven-3.6.2-bin.zip to /root/.m2/wrapper/dists/apache-maven-3.6.2-bin/664rr97se3slubllb7r6fll7u
Set executable permissions for: /root/.m2/wrapper/dists/apache-maven-3.6.2-bin/664rr97se3slubllb7r6fll7u/apache-maven-3.6.2/bin/mvn
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T15:06:16Z)
Maven home: /root/.m2/wrapper/dists/apache-maven-3.6.2-bin/664rr97se3slubllb7r6fll7u/apache-maven-3.6.2
Java version: 17.0.3, vendor: Eclipse Adoptium, runtime: /opt/java/openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.10.104-linuxkit", arch: "amd64", family: "unix"
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< com.example.hello:hello-servlet >-------------------
[INFO] Building hello-servlet 0.0.1-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ hello-servlet ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hello-servlet ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /tmp/tmp.scJHLY6S4l/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ hello-servlet ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /tmp/tmp.scJHLY6S4l/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ hello-servlet ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /tmp/tmp.scJHLY6S4l/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ hello-servlet ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /tmp/tmp.scJHLY6S4l/target/test-classes
[WARNING] /tmp/tmp.scJHLY6S4l/src/test/java/com/example/hello/HelloServletTest.java: /tmp/tmp.scJHLY6S4l/src/test/java/com/example/hello/HelloServletTest.java uses or overrides a deprecated API.
[WARNING] /tmp/tmp.scJHLY6S4l/src/test/java/com/example/hello/HelloServletTest.java: Recompile with -Xlint:deprecation for details.
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ hello-servlet ---
[INFO] Surefire report directory: /tmp/tmp.scJHLY6S4l/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.example.hello.HelloServletTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.082 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 50.474 s
[INFO] Finished at: 2022-06-29T16:25:28Z
[INFO] ------------------------------------------------------------------------
$ curl -k https://hello-servlet-demo.vcap.me
Hello World!
TektonのPipelineでキャッシュを使う
1つのnamespaceに複数のTekton Pipelineを使えるようにする
Workloadの削除
tanzu apps workload delete hello-servlet -n demo -y
kubectl delete -f pipeline-maven.yaml -n demo