Open4
Tekton+kind雑記
kindにtektonをインストールする
#!/bin/bash
## Create resources of tekton pipeline
kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.24.1/release.yaml
## Create resources of tekton triggers
kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/previous/v0.14.0/release.yaml
kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/previous/v0.14.0/interceptors.yaml
## Create resources of tekton dashboard
kubectl apply -f https://storage.googleapis.com/tekton-releases/dashboard/previous/v0.16.1/tekton-dashboard-release.yaml
kindのingressってどうなるんだろ?
kind Ingress ここに詳細がある。
ドキュメントには、
- クラスタを作る
- Ingressコントローラを配置する。次のIngressコントローラは動作することがわかっている。
- Ambassador
- Contour
- Ingress NGINX
と記述があるので、Ingress NGINXで作ってみる。
クラスタを作る。
clusterconfig.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: tcp
- containerPort: 443
hostPort: 443
protocol: tcp
このようにextraPortMappingsと、node-labelsを設定する。
次に、kind create cluster --name localcluster --config clusterconfig.yaml
を実行してクラスタを作成する。クラスタ名は自由に変更してよい。
Ingress NGINXの配置
VERSION=$(curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/stable.txt)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/${VERSION}/deploy/static/provider/kind/deploy.yaml
Ingress NGINXのデプロイが完了するのを待つ。
kubectl wait --namespace ingress-nginx \
--for=condition=ready pod \
--selector=app.kubernetes.io/component=controller \
--timeout=90s
サンプルのechoサービスで動作を確認する
サンプルのyamlを、次のコマンドで適用する。
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml
このyamlのコンテンツを見るには、curl https://kind.sigs.k8s.io/examples/ingress/usage.yaml | cut
とする。
bar-app
と、foo-app
が、kubectl get pods
などで確認して、Running
になったら次のコマンドでリクエストしてみる。
curl localhost/foo # fooと表示される。
curl localhost/bar # barと表示される。
エラーなどが出ず、foo
や、bar
がターミナルに表示されればIngress NGINXは正常に動作している。
https://kind.sigs.k8s.io/examples/ingress/usage.yaml の中身。
kind: Pod
apiVersion: v1
metadata:
name: foo-app
labels:
app: foo
spec:
containers:
- name: foo-app
image: hashicorp/http-echo:0.2.3
args:
- "-text=foo"
---
kind: Service
apiVersion: v1
metadata:
name: foo-service
spec:
selector:
app: foo
ports:
# Default port used by the image
- port: 5678
---
kind: Pod
apiVersion: v1
metadata:
name: bar-app
labels:
app: bar
spec:
containers:
- name: bar-app
image: hashicorp/http-echo:0.2.3
args:
- "-text=bar"
---
kind: Service
apiVersion: v1
metadata:
name: bar-service
spec:
selector:
app: bar
ports:
# Default port used by the image
- port: 5678
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- http:
paths:
- pathType: Prefix
path: "/foo"
backend:
service:
name: foo-service
port:
number: 5678
- pathType: Prefix
path: "/bar"
backend:
service:
name: bar-service
port:
number: 5678
---
tektonのイベントトリガーを叩く
curl -X POST http://localhost \
-H 'Content-Type: application/json' \
-H 'X-Hub-Signature: sha1=2da37dcb9404ff17b714ee7a505c384758ddeb7b' \
-d '{"head_commit":{"id": "main"},"repository":{"full_name": "reoring/hoge.git"}}'