Tanzu Application Platform 1.1 をKindにインストールします。
本記事ではTAPをInstallし、Out of the Box Supply Chain with Testingを有効にし、"Hello World"なアプリケーションをソースコードからテストを経てデプロイする機能("Source Test to URL")を試します。 また、HTTPSを有効にします。
目次
- Kindクラスタの作成
- Cluster Essentials for VMware Tanzuのインストール
- Tanzu Application Platformのインストール
- Workloadのデプロイ
- TektonのPipelineでキャッシュを使う
- 1つのnamespaceに複数のTekton Pipelineを使えるようにする
- Workloadの削除
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