🌟
k3s にHelmを使ってArgoCD環境を用意する
k3sと戯れていたので、その際の内容を記事にしたいと思います!
k3sインストールをする
vagrant を構築
$ vagrant up
$ vagrant ssh
$ sudo su
インストール
$ curl -sfL https://get.k3s.io | sh -
$ k3s kubectl get node
Lightweight Kubernetes
K3s is a highly available, certified Kubernetes distribution designed for production workloads in unattended…k3s.io
デプロイ
一度テストをするために適当なマニフェストファイルを作成して、適応してみたんですが、以下のようなエラーをはいていました。
Error: failed to create containerd container: get apparmor_parser version: exec: "apparmor_parser": executable file not found in $PATH
対応方法
$ zypper install zypper-aptitude
$ zypper install apparmor-parser
Upgrade to v0.21.0-k3s1r0, get CreateContainerError on all pods · Issue #702 · rancher/k3os
Version (k3OS / kernel) k3os version v0.21.0-k3s1r0 5.4.0–72-generic #80 SMP Tue May 4 19:31:44 UTC 2021 Architecture…github.com
helmの設定
基本的には下記に配置しています。いくつか実装を抜き出して紹介しようと思います。
実装
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: sample
name: samepl
namespace: {{ .Values.namespace.name }}
spec:
replicas: {{ .Values.deployment.replicaCount }}
selector:
matchLabels:
app: sample
template:
metadata:
labels:
app: sample
spec:
containers:
- image: {{ .Values.image.repository }}:latest
name: sample
ports:
- containerPort: {{ .Values.deployment.containerPort }}
resources:
requests:
memory: {{ .Values.deployment.resources.requests.memory }}
cpu: {{ .Values.deployment.resources.requests.CPU }}
limits:
memory: {{ .Values.deployment.resources.limits.memory }}
cpu: {{ .Values.deployment.resources.limits.CPU }}
livenessProbe:
httpGet:
path: {{ .Values.deployment.livenessProbe.path }}
port: {{ .Values.deployment.livenessProbe.port }}
readinessProbe:
httpGet:
path: {{ .Values.deployment.readinessProbe.path }}
port: {{ .Values.deployment.readinessProbe.port }}
上書き用のファイル
// baseとなる上書き用ファイル
namespace:
name: sandbox
image:
repository: yosano/techtren // dockerhubに作ったサンプルのimage
tag: latest
pullPolicy: IfNotPresent
deployment:
replicaCount: 1
resources:
requests:
memory: 64Mi
CPU: 250m
limits:
memory: 128Mi
CPU: 500m
containerPort: 3111
livenessProbe:
path: /healthz
port: 3111
readinessProbe:
path: /healthz
port: 3111
service:
port: 4111
targetPort: 3111
protocol: TCP
type: ClusterIP
---
// もう一つの上書き用ファイル
namespace:
name: staging
deployment:
replicaCount: 3
resources:
requests:
memory: 90Mi
CPU: 300m
limits:
memory: 128Mi
CPU: 500m
containerPort: 3111
service:
port: 5111
Helm の使い方
このガイドでは、Helm を使用して Kubernetes クラスタ上のパッケージを管理する基本について説明します。 Helm クライアントが既に インストール済み であると 想定しています。…helm.sh
デプロイ
ArgoCDのインストール
serviceについては、vagrant からアクセスできるように変更しました。
Getting Started - Argo CD - Declarative GitOps CD for Kubernetes
Tip This guide assumes you have a grounding in the tools that Argo CD is based on. Please read understanding the basics…argoproj.github.io
デプロイ用マニフェストの適応
以下のファイルを作成し、 applyすればArgoCDのアプリケーションが作成されます。「source」で、「helm」を指定し、上書き用のファイルを指定しています。staging, production環境へのデプロイを切り替えなどは、「valueFiles」で指定するファイルを変えれば対応することができます。
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: sample-app
namespace: argocd
spec:
destination:
namespace: default
server: https://kubernetes.default.svc
project: default
source:
helm:
valueFiles:
- values-staging.yaml
path: helm
repoURL: https://github.com/sanoyo/cloud-native-tips
targetRevision: HEAD
Discussion