自分備忘録用メモ。TKGm v1.3.1 のWorkload Cluster にArgo CDをインストールした際の手順。
前提条件
- TKG v1.3.1
- Workload Cluster が構築済であり、Ingress コントローラーとしてContour をデプロイ済
手順
Argo CD のデプロイ
Argo CD の
ドキュメントにある手順に従って、デプロイしていきます。
k create namespace argocd
k -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
$ k -n argocd get all
NAME READY STATUS RESTARTS AGE
pod/argocd-application-controller-0 1/1 Running 0 94s
pod/argocd-dex-server-9dc558f5-rnw6l 1/1 Running 0 94s
pod/argocd-redis-759b6bc7f4-n8jsd 1/1 Running 0 94s
pod/argocd-repo-server-5fbf484547-sq8gx 1/1 Running 0 94s
pod/argocd-server-6d4678f7f6-5ww8q 1/1 Running 0 94s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/argocd-dex-server ClusterIP 100.66.10.218 <none> 5556/TCP,5557/TCP,5558/TCP 94s
service/argocd-metrics ClusterIP 100.65.70.52 <none> 8082/TCP 94s
service/argocd-redis ClusterIP 100.70.186.118 <none> 6379/TCP 94s
service/argocd-repo-server ClusterIP 100.69.121.145 <none> 8081/TCP,8084/TCP 94s
service/argocd-server ClusterIP 100.68.53.240 <none> 80/TCP,443/TCP 94s
service/argocd-server-metrics ClusterIP 100.67.216.28 <none> 8083/TCP 94s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/argocd-dex-server 1/1 1 1 94s
deployment.apps/argocd-redis 1/1 1 1 94s
deployment.apps/argocd-repo-server 1/1 1 1 94s
deployment.apps/argocd-server 1/1 1 1 94s
NAME DESIRED CURRENT READY AGE
replicaset.apps/argocd-dex-server-9dc558f5 1 1 1 94s
replicaset.apps/argocd-redis-759b6bc7f4 1 1 1 94s
replicaset.apps/argocd-repo-server-5fbf484547 1 1 1 94s
replicaset.apps/argocd-server-6d4678f7f6 1 1 1 94s
NAME READY AGE
statefulset.apps/argocd-application-controller 1/1 94s
Ingress 設定
Ingress を使えるように設定していきます。
ドキュメントに沿って、設定変更していきます。
k -n argocd edit deployments.apps argocd-server
以下の様にargocd-server の
spec.template.spec.containers.command
部分を修正します。
spec:
template:
spec:
containers:
- name: argocd-server
command:
- /argocd-server
- --staticassets
- /shared/app
- --repo-server
- argocd-repo-server:8081
- --insecure
続いて、Ingress で利用するTLS Secret を作成します。
$ k -n argocd create secret tls argocd-tls-secret \
--cert=./lab-cert/<cluster-name>/cfg/live/<cluster-name>.<MYDOMAIN>/fullchain.pem \
--key=./lab-cert/<cluster-name>/cfg/live/<cluster-name>.<MYDOMAIN>/privkey.pem
Ingress 用のマニフェストを作成し、デプロイします。
$ cat argocd-server-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: argocd-server-ingress
namespace: argocd
annotations:
kubernetes.io/ingress.class: contour
ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
rules:
- host: argocd.<cluster-name>.<MYDOMAIN>
http:
paths:
- path: /
backend:
serviceName: argocd-server
servicePort: http
tls:
- hosts:
- argocd.<cluster-name>.<MYDOMAIN>
secretName: argocd-tls-secret
k -n argocd apply -f argocd-server-ingress.yaml
Argo CD にログインするためのクレデンシャルを取得します。
k -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
ログインしてみます。GUI ではログイン出来るのですが、argocd
CLI 経由だと上手く行きません。。。
$ argocd login argocd.<cluster-name>.<MYDOMAIN>
Username: admin
Password:
FATA[0009] rpc error: code = Internal desc = transport: received the unexpected content-type "text/plain; charset=utf-8"
TLS Passthrough 設定が必要な様なので作成していきます。
TLS Passthrough 設定
マニフェストを作成し、デプロイします。
$ cat argocd-server-tls-passthrough.yaml
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: argocd-server-tlg-passthrough
namespace: argocd
spec:
virtualhost:
fqdn: argocd.<cluster-name>.<MYDOMAIN>
tls:
passthrough: true
tcpproxy:
services:
- name: argocd-server
port: 80
k -n argocd apply -f argocd-server-tls-passthrough.yaml
改めて、argocd
CLI でログインしてみます。
$ argocd login argocd.<cluster-name>.<MYDOMAIN>
Username: admin
Password:
'admin:login' logged in successfully
無事ログイン出来ました。これで、Argo CD を利用し、Kubernetes 環境にコンテナをデプロイ出来るようになりました。