github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/docs/site/src/zh/getting-started/config.md (about) 1 # 使用Config功能 2 3 使用 config,你可以覆盖或合并任何你想要的配置文件。像chart values、docker daemon.json、kubeadm 配置文件等。 4 5 ## 覆盖配置 6 7 ### 使用Config覆盖重写*calico*自定义配置 8 9 以镜像`registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.8`为例: 10 11 ```yaml 12 # 默认calico配置文件custom-resources.yaml: 13 apiVersion: operator.tigera.io/v1 14 kind: Installation 15 metadata: 16 name: default 17 spec: 18 calicoNetwork: 19 ipPools: 20 - blockSize: 26 21 cidr: 100.64.0.0/10 22 encapsulation: IPIP 23 natOutgoing: Enabled 24 nodeSelector: all() 25 nodeAddressAutodetectionV4: 26 interface: "eth.*|en.*" 27 ``` 28 29 如果不满足默认IP自动检测规则或需要修改CIDR ,则将修改后的配置元数据附加到 Clusterfile 并应用: 30 31 ```yaml 32 apiVersion: sealer.cloud/v2 33 kind: Cluster 34 metadata: 35 name: default-kubernetes-cluster 36 spec: 37 image: registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.8 38 ssh: 39 passwd: xxx 40 hosts: 41 - ips: [192.168.0.2,192.168.0.3,192.168.0.4] 42 roles: [master] 43 - ips: [192.168.0.5] 44 roles: [node] 45 ... 46 --- 47 apiVersion: sealer.aliyun.com/v1alpha1 48 kind: Config 49 metadata: 50 name: calico 51 spec: 52 path: etc/custom-resources.yaml 53 data: | 54 apiVersion: operator.tigera.io/v1 55 kind: Installation 56 metadata: 57 name: default 58 spec: 59 calicoNetwork: 60 ipPools: 61 - blockSize: 26 62 cidr: 100.64.0.0/10 #需与kubeadm配置中cidr一致 63 encapsulation: IPIP 64 natOutgoing: Enabled 65 nodeSelector: all() 66 nodeAddressAutodetectionV4: 67 interface: "eth*|en*" #将IP自动检测规则改成相应符合的规则 68 ``` 69 70 `sealer apply -f Clusterfile` 71 72 ### 使用config覆盖 mysql chart values 73 74 添加mysql配置元数据到Clusterfile并应用: 75 76 ```yaml 77 apiVersion: sealer.aliyun.com/v1alpha1 78 kind: Cluster 79 metadata: 80 name: my-cluster 81 spec: 82 image: registry.cn-qingdao.aliyuncs.com/sealer-app/my-SAAS-all-inone:latest 83 provider: BAREMETAL 84 ... 85 --- 86 apiVersion: sealer.aliyun.com/v1alpha1 87 kind: Config 88 metadata: 89 name: mysql-config 90 spec: 91 path: etc/mysql.yaml 92 data: | 93 mysql-user: root 94 mysql-passwd: xxx 95 ``` 96 97 `sealer apply -f Clusterfile` 98 99 sealer 将使用该数据覆盖文件 `etc/mysql.yaml` 100 101 应用此 Clusterfile 时,sealer 将为应用程序配置生成一些值文件。命名该配置为 etc/mysql-config.yaml etc/redis-config.yaml。 102 103 所以如果你想要使用该配置,Kubefile例如: 104 105 ```yaml 106 FROM kuberentes:v1.19.9 107 ... 108 CMD helm install mysql -f etc/mysql-config.yaml 109 ``` 110 111 ### 用户定义的 docker systemd 配置 112 113 当然,你可以覆盖你想要的rootfs中的其他配置文件: 114 115 ```yaml 116 . 117 ├── bin 118 │ ├── conntrack 119 │ ├── containerd-rootless-setuptool.sh 120 │ ├── containerd-rootless.sh 121 │ ├── crictl 122 │ ├── kubeadm 123 │ ├── kubectl 124 │ ├── kubelet 125 │ ├── nerdctl 126 │ └── seautil 127 ├── cri 128 │ ├── containerd 129 │ ├── containerd-shim 130 │ ├── containerd-shim-runc-v2 131 │ ├── ctr 132 │ ├── docker 133 │ ├── dockerd 134 │ ├── docker-init 135 │ ├── docker-proxy 136 │ ├── rootlesskit 137 │ ├── rootlesskit-docker-proxy 138 │ ├── runc 139 │ └── vpnkit 140 ├── etc 141 │ ├── 10-kubeadm.conf 142 │ ├── Clusterfile # 镜像默认 Clusterfile 143 │ ├── daemon.json 144 │ ├── docker.service 145 │ ├── kubeadm-config.yaml 146 │ └── kubelet.service 147 ├── images 148 │ └── registry.tar # registry docker 镜像,将加载此镜像并在集群中运行本地registry 149 ├── Kubefile 150 ├── Metadata 151 ├── README.md 152 ├── registry # registry data数据,此目录将挂载到本地registry 153 │ └── docker 154 │ └── registry 155 ├── scripts 156 │ ├── clean.sh 157 │ ├── docker.sh 158 │ ├── init-kube.sh 159 │ ├── init-registry.sh 160 │ ├── init.sh 161 │ └── kubelet-pre-start.sh 162 └── statics 163 └── audit-policy.yml 164 ``` 165 166 例如,覆盖 docker systemd 配置: 167 168 ```yaml 169 --- 170 apiVersion: sealer.aliyun.com/v1alpha1 171 kind: Config 172 metadata: 173 name: docker-config 174 spec: 175 path: etc/docker.service 176 data: | 177 [Unit] 178 Description=Docker Application Container Engine 179 Documentation=https://docs.docker.com 180 After=network.target 181 182 [Service] 183 Type=notify 184 # the default is not to use systemd for cgroups because the delegate issues still 185 # exists and systemd currently does not support the cgroup feature set required 186 # for containers run by docker 187 ExecStart=/usr/bin/dockerd 188 ExecReload=/bin/kill -s HUP $MAINPID 189 # Having non-zero Limit*s causes performance problems due to accounting overhead 190 # in the kernel. We recommend using cgroups to do container-local accounting. 191 LimitNOFILE=infinity 192 LimitNPROC=infinity 193 LimitCORE=infinity 194 # Uncomment TasksMax if your systemd version supports it. 195 # Only systemd 226 and above support this version. 196 #TasksMax=infinity 197 TimeoutStartSec=0 198 # set delegate yes so that systemd does not reset the cgroups of docker containers 199 Delegate=yes 200 # kill only the docker process, not all processes in the cgroup 201 KillMode=process 202 203 [Install] 204 WantedBy=multi-user.target 205 ``` 206 207 ## 合并配置(yaml格式) 208 209 ### 使用Config功能合并*calico*自定义配置 210 211 以镜像`registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.8`为例: 212 213 合并配置只需要关心需要修改的部分,以合并的方式修改calicoIP自动检测规则配置: 214 215 ```yaml 216 apiVersion: sealer.cloud/v2 217 kind: Cluster 218 metadata: 219 name: default-kubernetes-cluster 220 spec: 221 image: registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.8 222 ssh: 223 passwd: xxx 224 hosts: 225 - ips: [192.168.0.2,192.168.0.3,192.168.0.4] 226 roles: [master] 227 - ips: [192.168.0.5] 228 roles: [node] 229 ... 230 --- 231 apiVersion: sealer.aliyun.com/v1alpha1 232 kind: Config 233 metadata: 234 name: calico 235 spec: 236 strategy: merge #默认为覆盖形式,merge表示合并config 237 path: etc/custom-resources.yaml 238 data: | 239 spec: 240 calicoNetwork: 241 nodeAddressAutodetectionV4: 242 interface: "enp*" #将IP自动检测规则改成相应符合的规则 243 ``` 244 245 `sealer apply -f Clusterfile` 246 247 sealer启动后会合并原配置文件$/rootfs/etc/custom-resources.yaml并修改: 248 249 ```yaml 250 apiVersion: operator.tigera.io/v1 251 kind: Installation 252 metadata: 253 name: default 254 spec: 255 calicoNetwork: 256 ipPools: 257 - blockSize: 26 258 cidr: 100.64.0.0/10 259 encapsulation: IPIP 260 natOutgoing: Enabled 261 nodeSelector: all() 262 nodeAddressAutodetectionV4: 263 interface: "enp*" 264 ``` 265 266 > merge config 仅支持yaml格式配置。 267 >`spec.calicoNetwork.nodeAddressAutodetectionV4.interface="enp*"`修改成功。