0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL2(kind)+metallb+traefik構成を試す

Last updated at Posted at 2022-05-09

WSL2(kind)+metallb+traefik構成を試す

kindのインストールと立ち上げ

下記コマンドを実行する。今のところ、kind-workerを2個以上立ち上げているとmetallbが起動しないので注意。

go install sigs.k8s.io/kind@v0.12.0
kind create cluster --config=kind-traefik.yaml
kind-traefik.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  kubeadmConfigPatches:
  - |
    kind: InitConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "ingress-ready=true"
  extraPortMappings:
  # traefukはcontainerPort80で公開できないので、containerPortを8000にする
  - containerPort: 8000
    hostPort: 8000
    protocol: TCP
  # dashboard用
  - containerPort: 9000
    hostPort: 9000
    protocol: TCP

helm:traefikの場合

metallbをinstallする。これによりloadbalancerでサービスを公開できる。
https://artifacthub.io/packages/helm/metallb/metallb

helm repo add metallb https://metallb.github.io/metallb
helm install metallb metallb/metallb --version 0.13.3 -f metallb.yaml 
metallb.yaml
configInline:
  address-pools:
  - name: default
    protocol: layer2
    addresses:
    - 172.19.0.0/24
> kubectl get pods -A -o wide
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE     IP           NODE                 NOMINATED NODE   READINESS GATES
default              metallb-controller-69bbb4669c-qjp6f          1/1     Running   0          71s     10.244.1.2   kind-worker          <none>           <none>
default              metallb-speaker-dlzk2                        1/1     Running   0          71s     172.19.0.2   kind-control-plane   <none>           <none>
default              metallb-speaker-jb599                        1/1     Running   0          71s     172.19.0.3   kind-worker          <none>           <none>
kube-system          coredns-558bd4d5db-758gp                     1/1     Running   0          8m21s   10.244.0.3   kind-control-plane   <none>           <none>
kube-system          coredns-558bd4d5db-nc24l                     1/1     Running   0          8m21s   10.244.0.4   kind-control-plane   <none>           <none>
kube-system          etcd-kind-control-plane                      1/1     Running   0          8m31s   172.19.0.2   kind-control-plane   <none>           <none>
kube-system          kindnet-bbv2x                                1/1     Running   0          8m22s   172.19.0.2   kind-control-plane   <none>           <none>
kube-system          kindnet-dkhkh                                1/1     Running   0          8m10s   172.19.0.3   kind-worker          <none>           <none>
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          8m31s   172.19.0.2   kind-control-plane   <none>           <none>
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          8m31s   172.19.0.2   kind-control-plane   <none>           <none>
kube-system          kube-proxy-mx5qw                             1/1     Running   0          8m10s   172.19.0.3   kind-worker          <none>           <none>
kube-system          kube-proxy-p66zl                             1/1     Running   0          8m22s   172.19.0.2   kind-control-plane   <none>           <none>
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          8m31s   172.19.0.2   kind-control-plane   <none>           <none>
local-path-storage   local-path-provisioner-547f784dff-45nh9      1/1     Running   0          8m21s   10.244.0.2   kind-control-plane   <none>           <none>

続いて、traefikをinstallする
https://artifacthub.io/packages/helm/traefik/traefik

helm repo add traefik https://helm.traefik.io/traefik
helm install traefik traefik/traefik --version 10.19.5 --set ingressClass.enabled=true --set hostNetwork=true --set ports.traefik.expose=true

さて、ここでingressclassとingressを確認してみましょう。

kubectl get ingressclass -A
kubectl get ingress -A
kubectl apply -f kroki-deployment.yaml -f kroki-service.yaml
kubectl apply -f traefik-ingress.yaml

さて、もう一度ingressclassとingressを確認してみましょう。

kubectl get ingressclass -A
kubectl get ingress -A

ステートレスなコンテナ故にわかりやすいので、今回はkrokiを使用する。

kroki-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
  labels:
    app: kroki
  name: kroki
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kroki
  template:
    metadata:
      labels:
        app: kroki
    spec:
      containers:
      - image: yuzutech/kroki
        name: kroki
        ports:
        - containerPort: 8000
      restartPolicy: Always

kroki-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
  labels:
    app: kroki
  name: kroki
spec:
  ports:
  - name: "8000"
    port: 8000
    targetPort: 8000
  selector:
    app: kroki
traefik-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kroki
spec:
  ingressClassName: traefik
  rules:
 # hostが"localhosts"のときを除いて、port8000(ホストポート80)でkrokiバックエンドを公開
 - http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: kroki
            port:
              number: 8000
  # hostが"localhosts"のときだけ、port9000でダッシュボードを公開
  - host: "localhosts"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: traefik
            port:
              number: 9000

疎通確認

curl localhost/health
curl localhost/graphviz/svg/eNp9kM0KgzAQhO8-xZIHaKlX6Ulp6S-FPoDEuGhqbML6cyl594JVGyv1OMPMt8ukMiNucojg5QFUTfKRQjVVjRSbzgZQPEEFW2An0oVkQWfO0mLTx53CHalF6hsAO6kwQV4PesbIRPylOJxIiwJp_YMDOPKWD8ouQP0F6AWp5DJ1qOyqU1w9Kte6NcZgjZPrLMxJl8imH9g_8_jzecLzYSzvteLPLBgR1rNvJ7Rwmw==

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?