You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: deploy/README.md
+96-58Lines changed: 96 additions & 58 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,19 +1,98 @@
1
-
This documentation explains how to deploy Outscale Cloud Controller Manager.
1
+
# π Deploying the Outscale Cloud Controller Manager (CCM)
2
2
3
-
# Prerequisites
3
+
This documentation explains how to deploy Outscale Cloud Controller Manager (CCM).
4
+
5
+
## β Requirements
4
6
5
7
You will need a Kubernetes cluster on the 3DS Outscale cloud.
6
8
9
+
### Controller Manager and Kubelet configuration
10
+
11
+
When running Kubernetes in the cloud, the `--cloud-provider external` flag is required on the following components:
12
+
*`kube-controller-manager`
13
+
*`kubelet`
14
+
*`kube-apiserver` (up to v1.33)
15
+
16
+
The flag has been removed from `kube-apiserver` in v1.33.
17
+
18
+
The configuration of this flag depends on the boostraping tool you use to deploy your cluster. Using Cluster-API, the required config is:
19
+
20
+
```yaml
21
+
clusterConfiguration:
22
+
apiServer:
23
+
extraArgs:
24
+
cloud-provider: "external"
25
+
controllerManager:
26
+
extraArgs:
27
+
cloud-provider: "external"
28
+
[...]
29
+
initConfiguration:
30
+
nodeRegistration:
31
+
kubeletExtraArgs:
32
+
cloud-provider: external
33
+
[...]
34
+
joinConfiguration:
35
+
nodeRegistration:
36
+
kubeletExtraArgs:
37
+
cloud-provider: external
38
+
```
39
+
40
+
Nodes should have a `spec.providerID` set with the following structure `osc:///<subregion>/<instance ID>`
41
+
(for compatibility purposes, `aws:///<subregion>/<instance ID>` is also supported).
42
+
43
+
More details can be found in the [Cloud Controller Manager Administration](https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/#running-cloud-controller-manager) documentation.
44
+
45
+
### Networking
46
+
47
+
The CCM needs to access the [metadata server](https://docs.outscale.com/en/userguide/Accessing-the-Metadata-and-User-Data-of-an-Instance.html) in order to get information about nodes.
48
+
49
+
Access to `169.254.169.254/32` using TCP on port 80 (http) must be allowed from the control-plane nodes.
50
+
51
+
### Configuring Cloud Credentials
52
+
53
+
The CCM needs to access the Outscale API.
54
+
55
+
It is recommended to use a specific [Access Key](https://docs.outscale.com/en/userguide/About-Access-Keys.html) and create an [EIM user](https://docs.outscale.com/en/userguide/About-EIM-Users.html) with limited access. Check the [EIM policy example](eim-policy.example.json) to apply to such EIM user.
56
+
57
+
## βοΈ Installation
58
+
7
59
> Each major Kubernetes release requires a specific version of the CCM. You will need to install the CCM version tailored for your Kubernetes version.
The tag key must be `OscK8sClusterID/[cluster-id]` (`[cluster-id]` being the ID of a cluster) and tag value can be one of the following values:
@@ -22,30 +101,30 @@ The tag key must be `OscK8sClusterID/[cluster-id]` (`[cluster-id]` being the ID
22
101
23
102
The CCM will fetch the `OscK8sClusterID` tag of the node it is running on and will expect to find the other resources with matching tag keys.
24
103
25
-
The Cluster API Provider for Outscale (CAPOSC) sets the `OscK8sClusterID`tag, no need to do anything.
104
+
When using Cluster API Provider for Outscale (CAPOSC), the tag is automatically set, no need to do anything.
26
105
27
-
##Instances Tagging
106
+
### VM Tagging
28
107
29
-
The CCM is usually able to find instances.
108
+
The CCM is usually able to find VM instances using the `spec.providerID` value.
30
109
31
-
In some rare cases, the CCM needs a `OscK8sNodeName` tag on the VM, with the node name as a value.
110
+
In some rare cases, the CCM will need a `OscK8sNodeName` tag on the VM, with the node name as a value.
32
111
33
-
The Cluster API Provider for Outscale (CAPOSC) sets the tag, no need to do anything.
112
+
When using Cluster API Provider for Outscale (CAPOSC), the tag is automatically set, no need to do anything.
34
113
35
-
# Creating load-balancers
114
+
## π Creating load-balancers
36
115
37
-
## Subnets
116
+
###Subnets
38
117
39
118
The CCM will look for a subnet having one of the following tags:
40
119
*`OscK8sRole/service.internal` is service is internal,
41
120
*`OscK8sRole/service` is service is not internal or if no `OscK8sRole/service.internal` subnet is found,
42
121
*`OscK8sRole/loadbalancer` if no subnet found.
43
122
44
-
The Cluster API Provider for Outscale (CAPOSC) automatically sets the `OscK8sRole/loadbalancer` tag to the subnet where the Kubernetes API load-balancer is configured.
123
+
When using Cluster API Provider for Outscale (CAPOSC), the tags are automatically set, no need to do anything.
45
124
46
-
## Security Groups
125
+
###Security Groups
47
126
48
-
### Ingress
127
+
####Ingress
49
128
50
129
By default, the service controller will automatically create a Security Group for each Load Balancer Unit (LBU) and will attach it to nodes in a VPC setup.
51
130
@@ -57,7 +136,7 @@ The CCM will automatically add manage ingress rules to allow traffic to the load
57
136
58
137
You can set `service.Spec.LoadBalancerSourceRanges` to restrict trafic to a list of IP ranges.
59
138
60
-
### Load-balancer to nodes
139
+
####Load-balancer to nodes
61
140
62
141
The CCM will add rules to allow trafic from the load-balancer to nodes.
63
142
@@ -67,48 +146,7 @@ Within node security groups, it will search for a security group having one of t
67
146
68
147
The Cluster API Provider for Outscale (CAPOSC) sets a `OscK8sRole/worker` tag on all worker nodes, and allows you to add custom roles if needed.
69
148
70
-
## Networking
71
-
72
-
Node controller is deployed as a daemon set on control-plane nodes and will need to access [metadata server](https://docs.outscale.com/en/userguide/Accessing-the-Metadata-and-User-Data-of-an-Instance.html) in order to get information about its node (cpu, memory, addresses, hostname).
73
-
To do this, node controller need to be able to access `169.254.169.254/32` through TCP port 80 (http).
74
-
75
-
## Kubelet
76
-
77
-
Kubelet must be run with `--cloud-provider=external`, (more details in [Cloud Controller Manager Administration](https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/#running-cloud-controller-manager) documentation).
78
-
79
-
## Configuring Cloud Credentials
80
-
81
-
Outscale Cloud Controller Manager needs to access the Outscale API.
82
-
83
-
It is recommended to use a specific [Access Key](https://docs.outscale.com/en/userguide/About-Access-Keys.html) and create an [EIM user](https://docs.outscale.com/en/userguide/About-EIM-Users.html) with limited access. Check [EIM policy example](eim-policy.example.json) to apply to such EIM user.
0 commit comments