環境
- Kubernetes 1.24
ArgoCDをistio経由でアクセスできるようにしたい
LoadBalancerも悪くないけどIP1つ消費してしまうしせっかくならistioに統合させたかったのでメモ
手順
オレオレ証明書の準備
ArgoCDはhttps通信必須なのでSSL証明書が必要 今回はオレオレ証明書で代用する
10年分のお買い得オレオレ証明書発行
openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -subj "/C=JP/ST=Hokkaido/L=Sapporo/O=Example INC./OU=IT Department/CN=*.turai.work" openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
istioに渡す
kubectl create -n istio-system secret generic oreore-turaiwork-credential \ --from-file=key=server.key \ --from-file=cert=server.crt
Deployment argocd-serverの修正
次に argocd-serverの起動パラメータに --insecure
を追加する必要がある
$ kubectl -n argocd patch deployment argocd-server -p ' { "spec": { "template": { "spec": { "containers": [ { "name": "argocd-server", "command": ["argocd-server","--insecure"] } ] } } } }'
Service argocd-serverの修正
kubectl -n argocd edit svc argocd-server
spec内の443の通信の名前を「https」から「grpc」に変更する
spec: ports: - name: http port: 80 protocol: TCP targetPort: 8080 - name: grpc port: 443 protocol: TCP targetPort: 8080
Gateway と VirtualServerの作成
https://argocd.turai.work でアクセスできるようにさせる例 credentialNameは作成したSecretの名前(今回だとoreore-turaiwork-credential)を変えておく
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: argocd-gw namespace: argocd spec: selector: istio: ingressgateway servers: - hosts: - argocd.turai.work port: name: http number: 80 protocol: HTTP tls: httpsRedirect: true - hosts: - argocd.turai.work port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: oreore-turaiwork-credential --- apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: argocd-vsvc namespace: argocd spec: gateways: - argocd-gw hosts: - argocd.turai.work http: - name: grpc match: - headers: user-agent: prefix: argocd-client route: - destination: host: argocd-server port: number: 443 - name: http route: - destination: host: argocd-server port: number: 80
昨今のChromeだとオレオレ証明書が厳しくなってMac側の設定しないとアクセスできない(Safariは可
Mac Chromeでプライバシーブロックされ「詳細設定」からもページが表示できない - Qiita
まとめ
再構築するとき一発でできたほうがいいなと思ったのでkustomization.ymlに変更した 変更の中身は上記と同じ
kubernetes-manifests/kustomization.yml at master · thr3a/kubernetes-manifests